diff options
author | João Ferreiro <ferreiro@pinkroom.dev> | 2022-12-22 15:32:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-22 09:32:39 -0600 |
commit | 7517b65dcd676f36d38f31c991929c32168b3e12 (patch) | |
tree | 65793d2575b205365c2997b4bbddc1ba6424d2ba /jest | |
parent | 4913a07e3365d2004e67e9131dd4b4c15094dd33 (diff) | |
download | voidsky-7517b65dcd676f36d38f31c991929c32168b3e12.tar.zst |
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>
Diffstat (limited to 'jest')
-rw-r--r-- | jest/jestSetup.js | 39 | ||||
-rw-r--r-- | jest/test-utils.tsx | 32 |
2 files changed, 71 insertions, 0 deletions
diff --git a/jest/jestSetup.js b/jest/jestSetup.js new file mode 100644 index 000000000..7a2f10d2d --- /dev/null +++ b/jest/jestSetup.js @@ -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() diff --git a/jest/test-utils.tsx b/jest/test-utils.tsx new file mode 100644 index 000000000..a5946ed06 --- /dev/null +++ b/jest/test-utils.tsx @@ -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} |