Add tests for multi-selection and advanced selection logic (shift-click)

This commit is contained in:
2026-05-12 22:13:26 +02:00
parent cb1f2f398f
commit 774b0bdb5f

View File

@@ -86,6 +86,68 @@ describe("selection click helpers", () => {
expect(getSelectionDefaultActiveId(nextSelection)).toBe("entity-main"); expect(getSelectionDefaultActiveId(nextSelection)).toBe("entity-main");
}); });
it("multi-selects path points on the same path with shift-click", () => {
const firstSelection = applyEditorSelectionClick(
{
kind: "none"
},
{
kind: "pathPoint",
pathId: "path-main",
pointId: "point-a"
},
false
);
const secondSelection = applyEditorSelectionClick(
firstSelection,
{
kind: "pathPoint",
pathId: "path-main",
pointId: "point-b"
},
true
);
expect(secondSelection).toEqual({
kind: "pathPoints",
pathId: "path-main",
pointIds: ["point-a", "point-b"]
});
expect(getSelectionDefaultActiveId(secondSelection)).toBe("point-b");
const toggledSelection = applyEditorSelectionClick(
secondSelection,
{
kind: "pathPoint",
pathId: "path-main",
pointId: "point-b"
},
true
);
expect(toggledSelection).toEqual({
kind: "pathPoint",
pathId: "path-main",
pointId: "point-a"
});
expect(
applyEditorSelectionClick(
toggledSelection,
{
kind: "pathPoint",
pathId: "path-other",
pointId: "point-x"
},
true
)
).toEqual({
kind: "pathPoint",
pathId: "path-other",
pointId: "point-x"
});
});
it("clears on empty click without shift and preserves on empty shift-click", () => { it("clears on empty click without shift and preserves on empty shift-click", () => {
const currentSelection = { const currentSelection = {
kind: "modelInstances" as const, kind: "modelInstances" as const,