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({ base: { identity: { id: "test", title: "Test" }, canvas: { enabled: true }, panels: {}, }, modules: [], }); 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({ base: { identity: { id: "runtime-test", title: "Toolcraft App" }, canvas: { enabled: true }, panels: {}, persistence: { storage: "localStorage", }, }, modules: [], }); expect(app.persistence).toEqual({ additionalValueTargets: [], include: ["canvas", "panels", "values"], key: "toolcraft:runtime-test:state:v2", storage: "localStorage", version: 2, }); }); it("adds panel persistence instead of rejecting incomplete explicit policies", () => { const app = defineToolcraft({ base: { identity: { id: "runtime-test", title: "Toolcraft App" }, canvas: { enabled: true }, panels: { controls: { sections: [ { id: "test-section-1", controls: { opacity: { applicability: { mode: "always" as const }, defaultValue: 75, target: "selectedLayer.opacity", type: "slider", }, }, }, ], title: "Controls", }, }, persistence: { storage: "localStorage", }, }, modules: [], }); expect(app.persistence).toMatchObject({ include: ["canvas", "panels", "values"], }); }); });