callumalpass_tasknotes/jest.config.js
2026-06-10 07:10:48 +10:00

49 lines
1.7 KiB
JavaScript

module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
roots: ['<rootDir>/tests'],
testMatch: [
'**/__tests__/**/*.ts',
'**/?(*.)+(spec|test).ts'
],
transform: {
'^.+\\.ts$': ['ts-jest', {
tsconfig: {
paths: {
obsidian: ['node_modules/obsidian-test-mocks/dist/lib/cjs/obsidian/index.cjs']
}
}
}],
},
setupFiles: ['obsidian-test-mocks/jest-setup'],
setupFilesAfterEnv: ['<rootDir>/tests/test-setup.ts'],
moduleNameMapper: {
'^obsidian$': '<rootDir>/tests/helpers/obsidian-bridge.ts',
'^@fullcalendar/(.*)$': '<rootDir>/tests/__mocks__/fullcalendar.ts',
// Keep mocks for complex/large libraries that benefit from controlled testing
'^chrono-node$': '<rootDir>/tests/__mocks__/chrono-node.ts',
'^ical.js$': '<rootDir>/tests/__mocks__/ical.ts',
// Add ES module mocks for problematic imports
'^rrule$': '<rootDir>/tests/__mocks__/rrule.ts',
'^date-fns$': '<rootDir>/tests/__mocks__/date-fns.ts',
// Mock utility modules
'^../../src/utils/helpers$': '<rootDir>/tests/__mocks__/utils.ts',
'^../../src/utils/filenameGenerator$': '<rootDir>/tests/__mocks__/utils.ts',
'^../../src/utils/dateUtils$': '<rootDir>/tests/__mocks__/utils.ts',
// Mock markdown files (for release notes)
'\\.md$': '<rootDir>/tests/__mocks__/markdown.ts'
},
collectCoverageFrom: [
'src/services/**/*.ts',
'src/utils/**/*.ts',
'!src/services/PriorityManager.ts',
'!src/services/StatusManager.ts',
'!src/services/FieldMapper.ts',
'!src/**/*.d.ts',
'!tests/**/*'
],
coverageReporters: ['text', 'lcov', 'html'],
testTimeout: 10000,
clearMocks: true,
restoreMocks: true
};