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>
This commit is contained in:
1 parent
96ca15d8e3
commit
bcbc6f30d9
89 files changed
+36555
-2828
No files matched your search
@@ -0,0 +1,59 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user