opsdash-app/opsdash/test/targetsProgress.test.ts
2025-12-21 10:50:07 +07:00

38 lines
1,000 B
TypeScript

import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
import { computePaceInfo } from '../src/services/targets/progress'
describe('targets progress helpers', () => {
beforeEach(() => {
vi.useFakeTimers()
vi.setSystemTime(new Date('2025-03-05T12:00:00Z'))
})
afterEach(() => {
vi.useRealTimers()
})
it('skips zero-hour days when includeZeroDays=false', () => {
const start = new Date('2025-03-03T00:00:00Z')
const end = new Date('2025-03-09T23:59:59Z')
const dailyHours = new Map<string, number>([
['2025-03-03', 0],
['2025-03-04', 2],
['2025-03-05', 0],
])
const pace = computePaceInfo({
includeWeekend: false,
mode: 'days_only',
includeZeroDays: false,
start,
end,
dailyHours,
})
expect(pace.totalEligible).toBe(5)
expect(pace.elapsedEligible).toBeCloseTo(1, 4)
expect(pace.daysLeft).toBeCloseTo(4, 4)
expect(pace.calendarPercent).toBeCloseTo(20, 2)
})
})