diff --git a/jest.config.native.js b/jest.config.native.js index 9dd0a25eca..6884fcd191 100644 --- a/jest.config.native.js +++ b/jest.config.native.js @@ -18,9 +18,9 @@ module.exports = { watchPathIgnorePatterns, moduleNameMapper: { ...moduleNameMapper, - '^@evolu/common/evolu$': '/../../suite-native/test-utils/src/evoluMock.ts', + '^@evolu/common/evolu$': '/../../suite-native/test-utils/src/mocks/evoluMock.ts', '^@evolu/react-native/expo-sqlite$': - '/../../suite-native/test-utils/src/evoluMock.ts', + '/../../suite-native/test-utils/src/mocks/evoluMock.ts', }, testEnvironment: 'jsdom', preset: 'jest-expo', @@ -32,13 +32,12 @@ module.exports = { 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg|@shopify/react-native-skia|@shopify/flash-list|@noble|@scure|@evolu|nanoid|msgpackr|@gorhom|uuid)', ], setupFiles: [ - '/../../suite-native/test-utils/src/nitroModulesMock.js', + '/../../suite-native/test-utils/src/mocks/expoAndRNMock.jsx', + '/../../suite-native/test-utils/src/mocks/everstakeJestSetup.js', + '/../../suite-native/test-utils/src/mocks/TextEncoderMock.js', '/../../node_modules/@shopify/react-native-skia/jestSetup.js', '/../../node_modules/@shopify/flash-list/jestSetup.js', '/../../node_modules/react-native-gesture-handler/jestSetup.js', - '/../../suite-native/test-utils/src/everstakeJestSetup.js', - '/../../suite-native/test-utils/src/expoMock.jsx', - '/../../suite-native/test-utils/src/TextEncoderMock.js', '/../../suite-native/firmware/src/jestSetup.js', '/../../suite-native/connection-status/src/jestSetup.js', '/../../suite-native/react-native-graph/src/jestSetup.js', @@ -48,5 +47,6 @@ module.exports = { '/../../suite-native/module-connect-popup/src/jest.setup.ts', '/../../suite-native/module-device-onboarding/src/jest.setup.ts', '/../../suite-native/config/src/jest.setup.ts', + '/../../suite-native/intl/src/jest.setup.ts', ], }; diff --git a/suite-native/test-utils/src/IntlProviderForTests.tsx b/suite-native/intl/src/IntlProviderForTests.tsx similarity index 67% rename from suite-native/test-utils/src/IntlProviderForTests.tsx rename to suite-native/intl/src/IntlProviderForTests.tsx index 1957e694d7..71b796a0aa 100644 --- a/suite-native/test-utils/src/IntlProviderForTests.tsx +++ b/suite-native/intl/src/IntlProviderForTests.tsx @@ -1,8 +1,7 @@ import { IntlProvider as ReactIntlProvider } from 'react-intl'; -// direct imports are used to avoid exposing the internal objects from the intl package. -import { messages } from '@suite-native/intl/src/messages'; -import { flatten } from '@suite-native/intl/src/utils'; +import { messages } from './messages'; +import { flatten } from './utils'; // For uni test we always expect the messages to be in english, so the language selection logic can be omitted here. export const IntlProviderForTests = ({ children }: { children: React.ReactNode }) => { diff --git a/suite-native/intl/src/index.ts b/suite-native/intl/src/index.ts index 4205a5c3ad..60ed07c141 100644 --- a/suite-native/intl/src/index.ts +++ b/suite-native/intl/src/index.ts @@ -1,5 +1,6 @@ export * from './hooks/useTranslate'; export * from './IntlProvider'; +export { IntlProviderForTests } from './IntlProviderForTests'; export * from './Translate'; export * from './types'; export * from './localeSlice'; diff --git a/suite-native/intl/src/jest.setup.ts b/suite-native/intl/src/jest.setup.ts new file mode 100644 index 0000000000..140f315d88 --- /dev/null +++ b/suite-native/intl/src/jest.setup.ts @@ -0,0 +1,6 @@ +import { messages as mockMessages } from './messages'; + +// Do not import those big message files in every test. We use EN only anyway. +jest.mock('./hooks/useTranslatedMessages', () => ({ + useTranslatedMessages: () => mockMessages, +})); diff --git a/suite-native/test-utils/package.json b/suite-native/test-utils/package.json index cda1e02d79..e9a96d0acb 100644 --- a/suite-native/test-utils/package.json +++ b/suite-native/test-utils/package.json @@ -20,7 +20,6 @@ "@trezor/styles": "workspace:*", "@trezor/theme": "workspace:*", "react": "19.1.0", - "react-intl": "^7.1.11", "react-native": "0.81.4", "react-native-keyboard-controller": "1.19.2", "react-native-permissions": "5.4.2", diff --git a/suite-native/test-utils/src/BasicProviderForTests.tsx b/suite-native/test-utils/src/BasicProviderForTests.tsx index b35740c8a2..65e8fe2047 100644 --- a/suite-native/test-utils/src/BasicProviderForTests.tsx +++ b/suite-native/test-utils/src/BasicProviderForTests.tsx @@ -5,11 +5,10 @@ import { BottomSheetModalProvider } from '@gorhom/bottom-sheet'; import { NavigationContainer } from '@react-navigation/native'; import { FormatterProvider, FormatterProviderConfig } from '@suite-common/formatters'; +import { IntlProviderForTests } from '@suite-native/intl'; import { StylesProvider, createRenderer } from '@trezor/styles'; import { prepareNativeTheme } from '@trezor/theme'; -import { IntlProviderForTests } from './IntlProviderForTests'; - type ProviderProps = { children: ReactNode; formattersConfig?: FormatterProviderConfig; diff --git a/suite-native/test-utils/src/StoreProviderForTests.tsx b/suite-native/test-utils/src/StoreProviderForTests.tsx index f8509bfd63..02ed342c05 100644 --- a/suite-native/test-utils/src/StoreProviderForTests.tsx +++ b/suite-native/test-utils/src/StoreProviderForTests.tsx @@ -3,7 +3,6 @@ import { View } from 'react-native'; import { Provider } from 'react-redux'; import { useFormattersConfig } from '@suite-native/formatters-config'; -import { IntlProvider } from '@suite-native/intl'; import { PreloadedState, Store, initStore } from '@suite-native/state'; import { BasicProviderForTests } from './BasicProviderForTests'; @@ -60,10 +59,7 @@ export const StoreProviderForTests = ({ return ( - - {/* Intl is accessing redux store to get the locale. */} - {children} - + {children} ); }; diff --git a/suite-native/test-utils/src/TextEncoderMock.js b/suite-native/test-utils/src/mocks/TextEncoderMock.js similarity index 100% rename from suite-native/test-utils/src/TextEncoderMock.js rename to suite-native/test-utils/src/mocks/TextEncoderMock.js diff --git a/suite-native/test-utils/src/everstakeJestSetup.js b/suite-native/test-utils/src/mocks/everstakeJestSetup.js similarity index 100% rename from suite-native/test-utils/src/everstakeJestSetup.js rename to suite-native/test-utils/src/mocks/everstakeJestSetup.js diff --git a/suite-native/test-utils/src/evoluMock.ts b/suite-native/test-utils/src/mocks/evoluMock.ts similarity index 100% rename from suite-native/test-utils/src/evoluMock.ts rename to suite-native/test-utils/src/mocks/evoluMock.ts diff --git a/suite-native/test-utils/src/expoMock.jsx b/suite-native/test-utils/src/mocks/expoAndRNMock.jsx similarity index 99% rename from suite-native/test-utils/src/expoMock.jsx rename to suite-native/test-utils/src/mocks/expoAndRNMock.jsx index 93d77b2ff4..b12bca9a22 100644 --- a/suite-native/test-utils/src/expoMock.jsx +++ b/suite-native/test-utils/src/mocks/expoAndRNMock.jsx @@ -407,7 +407,7 @@ jest.mock('expo-constants', () => { jest.mock('expo-video', () => ({ VideoView: () => null })); -jest.mock('redux-devtools-expo-dev-plugin', () => () => next => next); +jest.mock('react-native-nitro-modules', () => ({})); jest.mock('react-native-safe-area-context', () => mockSafeAreaContext); @@ -417,6 +417,8 @@ jest.mock('react-native-keyboard-controller', () => require('react-native-keyboard-controller/jest'), ); +jest.mock('redux-devtools-expo-dev-plugin', () => () => next => next); + jest.mock('@gorhom/bottom-sheet', () => { const { ScrollView } = require('react-native'); const GorhomBottomSheetMock = require('@gorhom/bottom-sheet/mock'); diff --git a/suite-native/test-utils/src/nitroModulesMock.js b/suite-native/test-utils/src/nitroModulesMock.js deleted file mode 100644 index e1ab862960..0000000000 --- a/suite-native/test-utils/src/nitroModulesMock.js +++ /dev/null @@ -1 +0,0 @@ -jest.mock('react-native-nitro-modules', () => ({})); diff --git a/yarn.lock b/yarn.lock index d2ecb0dc9f..34a95d5d93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13597,7 +13597,6 @@ __metadata: "@trezor/styles": "workspace:*" "@trezor/theme": "workspace:*" react: "npm:19.1.0" - react-intl: "npm:^7.1.11" react-native: "npm:0.81.4" react-native-keyboard-controller: "npm:1.19.2" react-native-permissions: "npm:5.4.2"