Skip to content

Commit 9d86140

Browse files
committed
test: Achieve 100% branch coverage for streak calculation functions
- Add 19 comprehensive test cases for calculateStreak and checkAndAwardAchievements - Cover all edge cases: empty arrays, consecutive dates, gaps, duplicates, invalid dates - Set up Jest configuration with Babel and jsdom support - Use date-fns for consistent date mocking across all tests - Achieve 100% branch coverage for both target functions
1 parent 14751b0 commit 9d86140

7 files changed

Lines changed: 953 additions & 206 deletions

File tree

.vscode/settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"githubPullRequests.ignoredPullRequestBranches": [
3+
"main"
4+
]
5+
}

babel.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
presets: [
3+
['@babel/preset-env', { targets: { node: 'current' } }],
4+
['@babel/preset-react', { runtime: 'automatic' }]
5+
]
6+
};

jest.config.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = {
2+
testMatch: [
3+
'<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}',
4+
'<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}',
5+
'<rootDir>/tests/**/*.{spec,test}.{js,jsx,ts,tsx}'
6+
],
7+
moduleNameMapper: {
8+
'\\.(css|less|scss|sass)$': 'identity-obj-proxy'
9+
},
10+
transformIgnorePatterns: [
11+
'node_modules/(?!(date-fns)/)'
12+
],
13+
testEnvironment: 'jsdom',
14+
setupFilesAfterEnv: ['<rootDir>/src/setupTests.js']
15+
};

0 commit comments

Comments
 (0)