Files
community-rule/tests/unit/idAliases.test.ts
T
adilalloandCursor bcbc6f30d9 Import the remade decks on stable ids and recommend one card per job, so a saved draft still loads after a chip is renamed.
The real-group profiles stay as a test, so a change that moves a pick fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-04 14:22:54 -07:00

60 lines
2.3 KiB
TypeScript

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);
});
});