import assert from "node:assert/strict"; import test from "node:test"; import { calculateBuildReviewProgress } from "../src/features/campaigns/review/reviewProgress.ts"; test("separates blocking, individual, and group review work", () => { assert.deepEqual(calculateBuildReviewProgress({ blocking: 2, individualRequired: 3, individualReviewed: 1, groupRequired: 4, reviewComplete: false }), { blocking: 2, individualRequired: 3, individualReviewed: 1, individualRemaining: 2, groupRequired: 4, groupReviewed: 0, groupRemaining: 4, required: 7, reviewed: 1, remaining: 6 }); }); test("a recorded review completion acknowledges every review decision", () => { const progress = calculateBuildReviewProgress({ blocking: 0, individualRequired: 3, individualReviewed: 3, groupRequired: 4, reviewComplete: true }); assert.equal(progress.reviewed, 7); assert.equal(progress.remaining, 0); assert.equal(progress.individualRemaining, 0); assert.equal(progress.groupRemaining, 0); }); test("normalizes malformed counters without overstating progress", () => { const progress = calculateBuildReviewProgress({ blocking: -2, individualRequired: 2.9, individualReviewed: 99, groupRequired: Number.NaN, reviewComplete: false }); assert.equal(progress.blocking, 0); assert.equal(progress.individualRequired, 2); assert.equal(progress.individualReviewed, 2); assert.equal(progress.required, 2); assert.equal(progress.remaining, 0); });