forked from lnreader/lnreader
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjest.config.js
More file actions
86 lines (81 loc) · 3.23 KB
/
jest.config.js
File metadata and controls
86 lines (81 loc) · 3.23 KB
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
// jest.config.js
const baseModuleNameMapper = {
'^@components$': '<rootDir>/src/components/index',
'^@components/(.*)$': '<rootDir>/src/components/$1',
'^@database/(.*)$': '<rootDir>/src/database/$1',
'^@hooks$': '<rootDir>/src/hooks/index',
'^@hooks/(.*)$': '<rootDir>/src/hooks/$1',
'^@screens/(.*)$': '<rootDir>/src/screens/$1',
'^@strings/(.*)$': '<rootDir>/strings/$1',
'^@theme/(.*)$': '<rootDir>/src/theme/$1',
'^@utils/(.*)$': '<rootDir>/src/utils/$1',
'^@plugins/(.*)$': '<rootDir>/src/plugins/$1',
'^@services/(.*)$': '<rootDir>/src/services/$1',
'^@navigators/(.*)$': '<rootDir>/src/navigators/$1',
'^@native/(.*)$': '<rootDir>/src/native/$1',
'^@api/(.*)$': '<rootDir>/src/api/$1',
'^@type/(.*)$': '<rootDir>/src/type/$1',
'^@specs/(.*)$': '<rootDir>/specs/$1',
'^@test-utils$': '<rootDir>/__tests-modules__/test-utils',
'^@env$': '<rootDir>/src/generated/build-info',
// Mock static assets
'\\.(jpg|jpeg|png|gif|webp|svg)$': '<rootDir>/__mocks__/fileMock.js',
};
const baseTransform = {
'^.+\\.(js|jsx|ts|tsx)$': 'babel-jest',
};
const baseTransformIgnorePatterns = [
// 'node_modules/(?!(.pnpm/|@op-engineering|drizzle-orm|lodash-es|@babel/runtime))',
'node_modules/(?!(?:.pnpm/)?((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|color|@op-engineering|drizzle-orm|lodash-es))',
];
module.exports = {
moduleDirectories: ['node_modules', '__tests-modules__'],
projects: [
// --- Project 1: Database / pure logic tests (node environment) ---
{
displayName: 'db',
testEnvironment: 'node',
roots: ['<rootDir>/src/database'],
testMatch: ['**/__tests__/**/*.test.ts'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
transform: baseTransform,
transformIgnorePatterns: baseTransformIgnorePatterns,
moduleNameMapper: baseModuleNameMapper,
setupFilesAfterEnv: ['<rootDir>/src/database/queries/__tests__/setup.ts'],
collectCoverageFrom: [
'src/database/queries/**/*.ts',
'!src/database/queries/**/__tests__/**',
],
},
// --- Project 2: React Native component / hook / integration tests ---
{
displayName: 'rn',
preset: 'jest-expo',
roots: ['<rootDir>/src'],
testMatch: [
'**/__tests__/**/*.test.tsx',
// Also pick up non-db .test.ts (hooks, utils, services)
'**/__tests__/**/*.test.ts',
],
testPathIgnorePatterns: ['/node_modules/', '<rootDir>/src/database/'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
transform: baseTransform,
transformIgnorePatterns: baseTransformIgnorePatterns,
moduleNameMapper: baseModuleNameMapper,
setupFiles: ['<rootDir>/__mocks__/index.js'],
setupFilesAfterEnv: ['<rootDir>/__tests__/jest.setup.ts'],
collectCoverageFrom: [
'src/**/*.{ts,tsx}',
'!src/database/queries/**/__tests__/**',
'!src/**/__tests__/**',
],
},
],
// Global settings
coverageDirectory: 'coverage',
coverageReporters: ['text', 'lcov', 'html'],
testTimeout: 10000,
clearMocks: true,
restoreMocks: true,
verbose: true,
};