import { describe, expect, it } from "vitest"; import { migrateLegacyCreateFlowState } from "../../lib/create/migrateLegacyCreateFlowState"; import { resolveCoreValueId, resolveMethodId } from "../../lib/create/idAliases"; describe("deck id aliases", () => { it("maps old card ids onto the remade decks", () => { expect(resolveMethodId("membership", "open-access")).toEqual({ deck: "membership", id: "open-admission", }); expect(resolveMethodId("conflictManagement", "peer-mediation")).toEqual({ deck: "conflictManagement", id: "conflict-ladder", }); expect(resolveMethodId("decisionApproaches", "lazy-consensus")).toEqual({ deck: "decisionApproaches", id: "lazy-consensus", }); }); it("moves a cut card to the card that now holds its content", () => { expect(resolveMethodId("decisionApproaches", "proof-of-work")).toEqual({ deck: "decisionApproaches", id: "weighted-voting", }); }); it("migrates a saved draft's cards and core values", () => { const draft = migrateLegacyCreateFlowState({ selectedMembershipMethodIds: ["open-access"], selectedConflictManagementIds: ["peer-mediation"], selectedCoreValueIds: ["1", "5", "36"], coreValuesChipsSnapshot: [ { id: "1", label: "Accessibility", state: "selected" }, { id: "5", label: "Altruism", state: "selected" }, { id: "36", label: "Holocracy", state: "selected" }, ], }); expect(draft.selectedMembershipMethodIds).toEqual(["open-admission"]); expect(draft.selectedConflictManagementIds).toEqual(["conflict-ladder"]); expect(draft.selectedCoreValueIds).toEqual(["accessibility", "generosity"]); expect(resolveCoreValueId("36")).toBeNull(); expect(draft.coreValuesChipsSnapshot?.map((row) => row.id)).toEqual([ "accessibility", "generosity", ]); expect(draft.coreValuesChipsSnapshot?.[1]?.label).toBe("Generosity"); }); it("is safe to run twice", () => { const once = migrateLegacyCreateFlowState({ selectedMembershipMethodIds: ["open-access"], selectedCoreValueIds: ["2"], }); const twice = migrateLegacyCreateFlowState(once); expect(twice.selectedMembershipMethodIds).toEqual(once.selectedMembershipMethodIds); expect(twice.selectedCoreValueIds).toEqual(once.selectedCoreValueIds); }); });