Clarify campaign review interventions
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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);
|
||||
});
|
||||
Reference in New Issue
Block a user