src/features/reviews/section-state.test.ts
Linked repository file from this build.
import { expect, test } from "bun:test";
import { createSeed } from "@/programs/snap-negative/seed";
import { captureReceivedSnapshot, execute } from "./commands";
import { sectionCommand } from "./section-state";
import { demoActor } from "@/lib/auth/roster";
const actor = { ...demoActor("examiner"), name: "Examiner" };
const meta = { id: "section-test", at: "2026-09-13T12:00:00Z" };
test("Clear all keeps routing context and undo restores the preceding facts", () => {
const review = createSeed();
review.facts.caoIssuedBenefitCents = 9900;
const before = captureReceivedSnapshot(review);
const cleared = execute(review, sectionCommand(review, actor, "all", false)!, actor, meta);
expect(cleared.facts.members).toEqual([]);
expect(cleared.facts.caoIssuedBenefitCents).toBeUndefined();
expect(cleared.sampleMonth).toBe(review.sampleMonth);
expect(cleared.examiner).toBe(review.examiner);
const restored = execute(cleared, { type: "restore_facts", ...before }, actor, meta);
expect(restored.facts.members).toEqual(before.facts.members);
expect(restored.facts.scenarios).toEqual(before.facts.scenarios);
expect(restored.facts.caoIssuedBenefitCents).toBe(9900);
expect(restored.activity.length).toBe(review.activity.length + 2);
});
test("Reset uses the received copy and does not invent a historic copy", () => {
const review = createSeed();
expect(sectionCommand(review, actor, "all", true)).toBeUndefined();
review.receivedSnapshots = { examiner: captureReceivedSnapshot(review) };
const changed = execute(
review,
{ type: "identity", value: { clientName: "Changed" } },
actor,
meta,
);
const reset = execute(changed, sectionCommand(changed, actor, "all", true)!, actor, meta);
expect(reset.clientName).toBe(review.clientName);
expect(changed.clientName).toBe("Changed");
});