gongxiangp2/lib/__tests__/work-review-metrics.test.ts
2026-08-31 09:37:34 +08:00

40 lines
1.2 KiB
TypeScript

import {
buildFirstPassReviewSummary,
normalizeFirstPassReviewStatus,
} from '@/lib/work-review-metrics'
describe('work-review metrics', () => {
it('uses current approved works as the denominator and approved V1 as the numerator', () => {
const summary = buildFirstPassReviewSummary([
{ status: 'approved', count: 11 },
{ status: 'revision_required', count: 7 },
{ status: 'pending_review', count: 10 },
{ status: 'legacy_state', count: 2 },
], 20, new Date('2026-08-14T02:00:00.000Z'))
expect(summary).toEqual({
totalUploads: 30,
totalApproved: 20,
firstPassApproved: 11,
rate: 55,
statusBreakdown: {
approved: 11,
revisionRequired: 7,
pendingReview: 10,
unknown: 2,
},
readAt: '2026-08-14T02:00:00.000Z',
})
})
it('returns a null rate when there are no currently approved works', () => {
expect(buildFirstPassReviewSummary([
{ status: 'pending_review', count: 3 },
], 0, 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')
})
})