import { afterEach, describe, expect, it, vi } from "vitest"; const historyPatchMetadataNamespace = "toolcraft/history-patch-metadata/v1"; afterEach(() => { vi.resetModules(); }); describe("Toolcraft history patch metadata", () => { it("keeps reset provenance readable across independent module instances", async () => { const firstAccess = await import("./history-patch-metadata"); const patch = firstAccess.tagToolcraftControlsResetHistoryPatch({ after: { "effect.amount": 75 }, before: { "effect.amount": 12 }, label: "Reset controls", }); const metadataKeys = Object.getOwnPropertySymbols(patch); expect(metadataKeys).toHaveLength(1); expect(Symbol.keyFor(metadataKeys[0]!)).toBe( historyPatchMetadataNamespace, ); vi.resetModules(); const secondAccess = await import("./history-patch-metadata"); expect(secondAccess.isToolcraftControlsResetHistoryPatch(patch)).toBe(true); expect(Object.keys(patch).sort()).toEqual(["after", "before", "label"]); expect(JSON.parse(JSON.stringify(patch))).toEqual({ after: patch.after, before: patch.before, label: patch.label, }); }); });