module.exports = { preset: 'ts-jest', testEnvironment: 'jsdom', roots: ['/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: ['/tests/test-setup.ts'], moduleNameMapper: { '^obsidian$': '/tests/helpers/obsidian-bridge.ts', '^@fullcalendar/(.*)$': '/tests/__mocks__/fullcalendar.ts', // Keep mocks for complex/large libraries that benefit from controlled testing '^chrono-node$': '/tests/__mocks__/chrono-node.ts', '^ical.js$': '/tests/__mocks__/ical.ts', // Add ES module mocks for problematic imports '^rrule$': '/tests/__mocks__/rrule.ts', '^date-fns$': '/tests/__mocks__/date-fns.ts', // Mock utility modules '^../../src/utils/helpers$': '/tests/__mocks__/utils.ts', '^../../src/utils/filenameGenerator$': '/tests/__mocks__/utils.ts', '^../../src/utils/dateUtils$': '/tests/__mocks__/utils.ts', // Mock markdown files (for release notes) '\\.md$': '/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 };