gongxiangp2/lib/__tests__/work-review-metrics.test.ts
2026-08-19 12:08:38 +08:00

37 lines
1.1 KiB
TypeScript

import {
buildFirstPassReviewSummary,
normalizeFirstPassReviewStatus,
} from '@/lib/work-review-metrics'
describe('work-review metrics', () => {
it('uses every uploaded V1 in the denominator and only approved V1 in the numerator', () => {
const summary = buildFirstPassReviewSummary([
{ status: 'approved', count: 11 },
{ status: 'revision_required', count: 7 },
{ status: 'pending_review', count: 10 },
{ status: 'legacy_state', count: 2 },
], new Date('2026-08-14T02:00:00.000Z'))
expect(summary).toEqual({
totalUploads: 30,
firstPassApproved: 11,
rate: 36.7,
statusBreakdown: {
approved: 11,
revisionRequired: 7,
pendingReview: 10,
unknown: 2,
},
readAt: '2026-08-14T02:00:00.000Z',
})
})
it('returns a null rate when no V1 work has been uploaded', () => {
expect(buildFirstPassReviewSummary([], new Date('2026-08-14T02:00:00.000Z')).rate).toBeNull()
})
it('maps unrecognised database states to the explicit unknown bucket', () => {
expect(normalizeFirstPassReviewStatus('archived')).toBe('unknown')
})
})