37 lines
1.1 KiB
TypeScript
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')
|
|
})
|
|
})
|