Unit testing (#32)
* add testing lib * remove coverage folder from git * finished basic test setup * fix tests typescript and import paths * add first snapshot * testing utils * rename test files; update script flags; ++tests * testing utils functions * testing downloadAndResize wip * remove download test * specify unwanted coverage paths; remove update snapshots flag * fix strings tests * testing downloadAndResize method * increasing testing * fixing snapshots wip * fixed shell mobile snapshot * adding snapshots for the screens * fix onboard snapshot * fix typescript issues * fix TabsSelector snapshot * Account for testing device's locale in ago() tests * Remove platform detection on regex Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
parent
4913a07e33
commit
7517b65dcd
60 changed files with 10409 additions and 34 deletions
39
jest/jestSetup.js
Normal file
39
jest/jestSetup.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
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')
|
||||
|
||||
jest.mock('@fortawesome/react-native-fontawesome', () => ({
|
||||
FontAwesomeIcon: '',
|
||||
}))
|
||||
|
||||
require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests()
|
||||
|
||||
// Silence the warning: Animated: `useNativeDriver` is not supported
|
||||
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper')
|
||||
|
||||
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('@gorhom/bottom-sheet', () => {
|
||||
const react = require('react-native')
|
||||
return {
|
||||
__esModule: true,
|
||||
default: react.View,
|
||||
namedExport: {
|
||||
...require('react-native-reanimated/mock'),
|
||||
...jest.requireActual('@gorhom/bottom-sheet'),
|
||||
BottomSheetFlatList: react.FlatList,
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
jest.useFakeTimers()
|
32
jest/test-utils.tsx
Normal file
32
jest/test-utils.tsx
Normal file
|
@ -0,0 +1,32 @@
|
|||
import React from 'react'
|
||||
import RN from 'react-native'
|
||||
import {render} from '@testing-library/react-native'
|
||||
import {GestureHandlerRootView} from 'react-native-gesture-handler'
|
||||
import {RootSiblingParent} from 'react-native-root-siblings'
|
||||
import {SafeAreaProvider} from 'react-native-safe-area-context'
|
||||
import {DEFAULT_SERVICE, RootStoreModel, RootStoreProvider} from '../src/state'
|
||||
import {SessionServiceClient} from '../src/third-party/api/src'
|
||||
import {sessionClient as AtpApi} from '../src/third-party/api'
|
||||
|
||||
const WrappedComponent = ({children}: any) => {
|
||||
const api = AtpApi.service(DEFAULT_SERVICE) as SessionServiceClient
|
||||
const rootStore = new RootStoreModel(api)
|
||||
return (
|
||||
<GestureHandlerRootView style={{flex: 1}}>
|
||||
<RootSiblingParent>
|
||||
<RootStoreProvider value={rootStore}>
|
||||
<SafeAreaProvider>{children}</SafeAreaProvider>
|
||||
</RootStoreProvider>
|
||||
</RootSiblingParent>
|
||||
</GestureHandlerRootView>
|
||||
)
|
||||
}
|
||||
|
||||
const customRender = (ui: any, options?: any) =>
|
||||
render(ui, {wrapper: WrappedComponent, ...options})
|
||||
|
||||
// re-export everything
|
||||
export * from '@testing-library/react-native'
|
||||
|
||||
// override render method
|
||||
export {customRender as render}
|
Loading…
Add table
Add a link
Reference in a new issue