import { describe, expect, it } from "vitest"; import { assertTransition, canTransition, IllegalTransition, } from "@/services/state-machine"; describe("state-machine", () => { it("allows FETCHED → PARSING", () => { expect(canTransition("FETCHED", "PARSING")).toBe(true); }); it("allows PARSING → PENDING_CONFIRM", () => { expect(() => assertTransition("PARSING", "PENDING_CONFIRM")).not.toThrow(); }); it("rejects SUCCESS → PARSING", () => { expect(() => assertTransition("SUCCESS", "PARSING")).toThrow(IllegalTransition); }); it("allows PARSE_FAILED → PARSING", () => { expect(canTransition("PARSE_FAILED", "PARSING")).toBe(true); }); it("allows PARSING → FETCHED (stale reaper)", () => { expect(canTransition("PARSING", "FETCHED")).toBe(true); }); });