import { describe, expect, it } from "vitest"; import { defineToolcraft } from "./define-toolcraft"; describe("defineToolcraft runtime setup persistence", () => { it("enables canonical app state persistence by default", () => { const app = defineToolcraft({ identity: { id: "test", title: "Test" }, canvas: { enabled: true }, panels: {}, }); expect(app.persistence).toEqual({ additionalValueTargets: [], include: ["canvas", "panels", "values"], key: "toolcraft:test:state:v2", storage: "localStorage", version: 2, }); }); it("preserves explicit localStorage identity while adding mandatory slices", () => { const app = defineToolcraft({ canvas: { enabled: true }, panels: {}, persistence: { include: ["values", "canvas", "panels"], key: "toolcraft:test:state:v1", storage: "localStorage", version: 1, }, }); expect(app.persistence).toEqual({ additionalValueTargets: [], include: ["canvas", "panels", "values"], key: "toolcraft:test:state:v1", storage: "localStorage", version: 1, }); }); it("adds panel persistence instead of rejecting incomplete explicit policies", () => { const app = defineToolcraft({ canvas: { enabled: true }, panels: { controls: { sections: [ { controls: { opacity: { defaultValue: 75, target: "selectedLayer.opacity", type: "slider", }, }, }, ], title: "Controls", }, }, persistence: { include: ["values"], key: "toolcraft:panel-test:state:v1", storage: "localStorage", version: 1, }, }); expect(app.persistence).toMatchObject({ include: ["canvas", "panels", "values"], }); }); });