Skip to article
Documentation

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");
});