about summary refs log tree commit diff
path: root/jest/jestSetup.js
blob: 700d20afc0f6a10fe538ac3ca018ad3de8f0c3a3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/* global jest */
import 'react-native-gesture-handler/jestSetup'
// IMPORTANT: this is what's used in the native runtime
import 'react-native-url-polyfill/auto'

import {configure} from '@testing-library/react-native'

configure({asyncUtilTimeout: 20000})

jest.mock('@react-native-async-storage/async-storage', () =>
  require('@react-native-async-storage/async-storage/jest/async-storage-mock'),
)
jest.mock('react-native/Libraries/EventEmitter/NativeEventEmitter', () => {
  const {EventEmitter} = require('events')
  return {
    __esModule: true,
    default: EventEmitter,
  }
})

jest.mock('@fortawesome/react-native-fontawesome', () => ({
  FontAwesomeIcon: '',
}))

jest.mock('react-native-safe-area-context', () => {
  const inset = {top: 0, right: 0, bottom: 0, left: 0}
  return {
    SafeAreaProvider: jest.fn().mockImplementation(({children}) => children),
    SafeAreaConsumer: jest
      .fn()
      .mockImplementation(({children}) => children(inset)),
    useSafeAreaInsets: jest.fn().mockImplementation(() => inset),
  }
})

jest.mock('expo-file-system', () => ({
  getInfoAsync: jest.fn().mockResolvedValue({exists: true, size: 100}),
  deleteAsync: jest.fn(),
  createDownloadResumable: jest.fn(),
}))

jest.mock('expo-image-manipulator', () => ({
  manipulateAsync: jest.fn().mockResolvedValue({
    uri: 'file://resized-image',
  }),
  SaveFormat: {
    JPEG: 'jpeg',
  },
}))

jest.mock('expo-camera', () => ({
  Camera: {
    useCameraPermissions: jest.fn(() => [true]),
  },
}))

jest.mock('expo-media-library', () => ({
  __esModule: true, // this property makes it work
  default: jest.fn(),
  usePermissions: jest.fn(() => [true]),
}))

jest.mock('lande', () => ({
  __esModule: true, // this property makes it work
  default: jest.fn().mockReturnValue([['eng']]),
}))

jest.mock('sentry-expo', () => ({
  init: () => jest.fn(),
  Native: {
    ReactNativeTracing: jest.fn().mockImplementation(() => ({
      start: jest.fn(),
      stop: jest.fn(),
    })),
    ReactNavigationInstrumentation: jest.fn(),
  },
}))

jest.mock('crypto', () => ({}))

jest.mock('expo-application', () => ({
  nativeApplicationVersion: '1.0.0',
  nativeBuildVersion: '1',
}))

jest.mock('expo-modules-core', () => ({
  requireNativeModule: jest.fn().mockImplementation(moduleName => {
    if (moduleName === 'ExpoPlatformInfo') {
      return {
        getIsReducedMotionEnabled: () => false,
      }
    }
    if (moduleName === 'BottomSheet') {
      return {
        dismissAll: () => {},
      }
    }
  }),
  requireNativeViewManager: jest.fn().mockImplementation(_ => {
    return () => null
  }),
}))

jest.mock('expo-localization', () => ({
  getLocales: () => [],
}))

jest.mock('statsig-react-native-expo', () => ({
  Statsig: {
    initialize() {},
    initializeCalled() {
      return false
    },
  },
}))

jest.mock('../src/logger/bitdrift/lib', () => ({}))
jest.mock('../src/lib/statsig/statsig', () => ({}))