const WebSocket = require('ws'); const {NativeModules} = require('react-native'); require('@react-native-async-storage/async-storage/jest/async-storage-mock'); require('react-native-gesture-handler/jestSetup'); require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests(); jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage); jest.mock('react-native-navigation', () => ({ getNavigationConstants: () => ({constants: []}), Navigation: {constants: async () => {}}, })); jest.mock('react-native-background-timer', () => ({})); jest.mock('react-native-languages', () => ({ RNLanguages: { language: 'en', languages: ['en'], }, default: { language: 'en', locale: 'en', }, })); jest.mock('react-native-permissions', () => require('react-native-permissions/mock'), ); jest.mock('@react-native-community/audio-toolkit', () => ({ Recorder: jest.fn().mockImplementation(() => ({ prepare: jest.fn(), record: jest.fn(), toggleRecord: jest.fn(), pause: jest.fn(), stop: jest.fn(), on: jest.fn(), })), Player: jest.fn().mockImplementation(() => ({ prepare: jest.fn(), playPause: jest.fn(), play: jest.fn(), pause: jest.fn(), stop: jest.fn(), seek: jest.fn(), on: jest.fn(), })), MediaStates: { DESTROYED: -2, ERROR: -1, IDLE: 0, PREPARING: 1, PREPARED: 2, SEEKING: 3, PLAYING: 4, RECORDING: 4, PAUSED: 5, }, PlaybackCategories: { Playback: 1, Ambient: 2, SoloAmbient: 3 }, })); jest.mock("i18n-js", () => ({ ...jest.requireActual("i18n-js"), t: (label) => `tx:${label}` })); jest.mock("react-native-blob-util", () => ({ default: { config: jest.fn().mockReturnValue({ fetch: jest.fn() }) } })); NativeModules.ReactLocalization = { language: 'en', locale: 'en', }; global.navigator = { userAgent: 'node', }; global.WebSocket = WebSocket;