import { describe, expect, it } from "vitest"; import { defineToolcraft } from "../schema/define-toolcraft"; import { createToolcraftState } from "./create-template-state"; import { createToolcraftPersistenceSnapshot, parseToolcraftPersistenceSnapshot, } from "./persistence"; describe("Toolcraft persisted control values", () => { it("canonicalizes legacy Color payloads during restore", () => { const schema = defineToolcraft({ canvas: { enabled: true }, panels: { controls: { sections: [ { controls: { fill: { defaultValue: "#112233", target: "appearance.fill", type: "color", }, }, }, ], title: "Controls", }, }, persistence: { include: ["values"], key: "toolcraft:persistence-control-values-test:state:v1", storage: "localStorage", version: 1, }, }); const snapshot = createToolcraftPersistenceSnapshot( createToolcraftState(schema), schema.persistence, ); const legacySnapshot = { ...snapshot, state: { ...snapshot?.state, values: { ...snapshot?.state.values, "appearance.fill": { hex: "#abc" }, }, }, }; const restored = parseToolcraftPersistenceSnapshot( schema, JSON.stringify(legacySnapshot), ); expect(restored?.values?.["appearance.fill"]).toBe("#AABBCC"); }); });