From 86719fc489cac32b1d286e0889e05d8ebdb14d56 Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Mon, 5 Aug 2024 18:05:19 +0200 Subject: [PATCH] Add test for multi-select flip fixedPoint --- packages/excalidraw/tests/resize.test.tsx | 30 ++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/excalidraw/tests/resize.test.tsx b/packages/excalidraw/tests/resize.test.tsx index e5053d690..94b76c572 100644 --- a/packages/excalidraw/tests/resize.test.tsx +++ b/packages/excalidraw/tests/resize.test.tsx @@ -339,7 +339,7 @@ describe("arrow element", () => { expect(label.fontSize).toEqual(20); }); - it("flips the fixed point binding on negative resize", () => { + it("flips the fixed point binding on negative resize for single bindable", () => { const rectangle = UI.createElement("rectangle", { x: -100, y: -75, @@ -366,6 +366,34 @@ describe("arrow element", () => { expect(arrow.startBinding?.fixedPoint?.[0]).toBeCloseTo(-0.05); expect(arrow.startBinding?.fixedPoint?.[1]).toBeCloseTo(0.25); }); + + it("flips the fixed point binding on negative resize for group selection", () => { + const rectangle = UI.createElement("rectangle", { + x: -100, + y: -75, + width: 95, + height: 100, + }); + UI.clickTool("arrow"); + UI.clickOnTestId("elbow-arrow"); + mouse.reset(); + mouse.moveTo(-5, 0); + mouse.click(); + mouse.moveTo(120, 200); + mouse.click(); + + const arrow = h.scene.getSelectedElements( + h.state, + )[0] as ExcalidrawArrowElement; + + expect(arrow.startBinding?.fixedPoint?.[0]).toBeCloseTo(1.05); + expect(arrow.startBinding?.fixedPoint?.[1]).toBeCloseTo(0.75); + + UI.resize([rectangle, arrow], "nw", [300, 350]); + + expect(arrow.startBinding?.fixedPoint?.[0]).toBeCloseTo(-0.144, 2); + expect(arrow.startBinding?.fixedPoint?.[1]).toBeCloseTo(0.25); + }); }); describe("text element", () => {