import { describe, expect, it } from "vitest"; import { migrateToolcraftPersistencePayload } from "./persistence-migrations"; describe("Toolcraft persistence migrations", () => { it("migrates every supported version in order", () => { const payload = { state: { panels: { controls: { collapsedSections: { appearance: true }, }, }, }, version: 1, }; expect(migrateToolcraftPersistencePayload(payload, 2)).toEqual({ fromVersion: 1, kind: "migrated", payload: { state: payload.state, version: 2, }, }); }); it("preserves a newer unsupported payload", () => { const payload = { state: { values: { "appearance.opacity": 50 } }, version: 3, }; expect(migrateToolcraftPersistencePayload(payload, 2)).toEqual({ kind: "newer-version", payload, }); }); it("rejects malformed and unsupported older payloads", () => { expect(migrateToolcraftPersistencePayload({ version: 1 }, 2)).toEqual({ kind: "invalid", }); expect( migrateToolcraftPersistencePayload({ state: {}, version: 0 }, 2), ).toEqual({ kind: "unsupported-version", payload: { state: {}, version: 0 }, }); }); });