diff options
author | João Ferreiro <ferreiro@pinkroom.dev> | 2023-01-17 16:06:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-17 10:06:00 -0600 |
commit | 5abcc8e336b3af11a6c98d0d9e662415856478a0 (patch) | |
tree | 41778f74311f677e1d57526c57fcb1ece08195f7 /jest | |
parent | 11c861d2d368ab59d8e65b216c1551729fc140ad (diff) | |
download | voidsky-5abcc8e336b3af11a6c98d0d9e662415856478a0.tar.zst |
Unit Testing (#35)
* 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 * mocking store state wip * mocking store state * increasing test coverage * increasing test coverage * increasing test coverage on src/screens * src/screens (except for profile) above 80% cov * testing profile screen wip * increase coverage on Menu and TabsSelector * mocking profile ui state wip * mocking profile ui state wip * fixing mobileshell tests wip * snapshots using testing-library * fixing profile tests wip * removing mobile shell tests * src/view/com tests wip * remove unnecessary patch-package * fixed profile test error * clear mocks after every test * fix base mocked store values (getters) * fix base mocked store values (hasLoaded, nonReplyFeed) * profile screen above 80% coverage * testing custom hooks * improving composer coverage * fix tests after merge * finishing composer coverage * improving src/com/discover coverage * improve src/view/com/login coverage fix SuggestedFollows tests adding some comments * fix SuggestedFollows tests * improve src/view/com/profile coverage extra minor fixes * improve src/view/com/notifications coverage * update coverage ignore patterns * rename errorMessageTryAgainButton increase SuggestedFollows converage * improve src/view/com/posts coverage * improve src/view/com/onboard coverage * update snapshot * improve src/view/com/post coverage * improve src/view/com/post-thread coverage rename ErrorMessage tests test Debug and Log components * init testing state * testing root-store * updating comments * small fixes * removed extra console logs * improve src/state/models coverage refactor rootStore rename some spies * adding cleanup method after tests * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * test setInterval in setupState * Clean up tests and update Home screen state management * Remove some tests we dont need * Remove snapshot tests * Remove any tests that dont demonstrate clear value * Cleanup Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'jest')
-rw-r--r-- | jest/jestSetup.js | 26 | ||||
-rw-r--r-- | jest/test-utils.tsx | 28 |
2 files changed, 33 insertions, 21 deletions
diff --git a/jest/jestSetup.js b/jest/jestSetup.js index 7a2f10d2d..1cad50c7a 100644 --- a/jest/jestSetup.js +++ b/jest/jestSetup.js @@ -1,17 +1,17 @@ +import 'react-native-gesture-handler/jestSetup' 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') +// Silence the warning: Animated: `useNativeDriver` is not supported +jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') +require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests() + 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 { @@ -36,4 +36,18 @@ jest.mock('@gorhom/bottom-sheet', () => { } }) -jest.useFakeTimers() +jest.mock('rn-fetch-blob', () => ({ + config: jest.fn().mockReturnThis(), + cancel: jest.fn(), + fetch: jest.fn(), +})) + +jest.mock('@bam.tech/react-native-image-resizer', () => ({ + createResizedImage: jest.fn(), +})) + +import {View as mockedView} from 'react-native' +jest.mock('react-native-tab-view', () => ({ + ...jest.requireActual('react-native-tab-view'), + TabView: mockedView, +})) diff --git a/jest/test-utils.tsx b/jest/test-utils.tsx index a5946ed06..c84ee637e 100644 --- a/jest/test-utils.tsx +++ b/jest/test-utils.tsx @@ -1,29 +1,27 @@ 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' +import {RootStoreProvider} from '../src/state' +import {mockedRootStore} from '../__mocks__/state-mock' -const WrappedComponent = ({children}: any) => { - const api = AtpApi.service(DEFAULT_SERVICE) as SessionServiceClient - const rootStore = new RootStoreModel(api) - return ( +const customRender = (ui: any, storeMock?: any) => + render( + // eslint-disable-next-line react-native/no-inline-styles <GestureHandlerRootView style={{flex: 1}}> <RootSiblingParent> - <RootStoreProvider value={rootStore}> - <SafeAreaProvider>{children}</SafeAreaProvider> + <RootStoreProvider + value={ + storeMock != null + ? {...mockedRootStore, ...storeMock} + : mockedRootStore + }> + <SafeAreaProvider>{ui}</SafeAreaProvider> </RootStoreProvider> </RootSiblingParent> - </GestureHandlerRootView> + </GestureHandlerRootView>, ) -} - -const customRender = (ui: any, options?: any) => - render(ui, {wrapper: WrappedComponent, ...options}) // re-export everything export * from '@testing-library/react-native' |