123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import ReactDOM from "react-dom";
- import { render } from "./test-utils";
- import { reseed } from "../random";
- import { UI } from "./helpers/ui";
- import { Excalidraw } from "../index";
- import { expect } from "vitest";
- ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
- beforeEach(() => {
- localStorage.clear();
- reseed(7);
- });
- test("unselected bound arrow updates when rotating its target element", async () => {
- await render(<Excalidraw />);
- const rectangle = UI.createElement("rectangle", {
- width: 200,
- height: 100,
- });
- const arrow = UI.createElement("arrow", {
- x: -80,
- y: 50,
- width: 70,
- height: 0,
- });
- expect(arrow.endBinding?.elementId).toEqual(rectangle.id);
- UI.rotate(rectangle, [60, 36], { shift: true });
- expect(arrow.endBinding?.elementId).toEqual(rectangle.id);
- expect(arrow.x).toBeCloseTo(-80);
- expect(arrow.y).toBeCloseTo(50);
- expect(arrow.width).toBeCloseTo(110.7, 1);
- expect(arrow.height).toBeCloseTo(0);
- });
- test("unselected bound arrows update when rotating their target elements", async () => {
- await render(<Excalidraw />);
- const ellipse = UI.createElement("ellipse", {
- x: 0,
- y: 80,
- width: 300,
- height: 120,
- });
- const ellipseArrow = UI.createElement("arrow", {
- position: 0,
- width: 40,
- height: 80,
- });
- const text = UI.createElement("text", {
- position: 220,
- });
- await UI.editText(text, "test");
- const textArrow = UI.createElement("arrow", {
- x: 360,
- y: 300,
- width: -100,
- height: -40,
- });
- expect(ellipseArrow.endBinding?.elementId).toEqual(ellipse.id);
- expect(textArrow.endBinding?.elementId).toEqual(text.id);
- UI.rotate([ellipse, text], [-82, 23], { shift: true });
- expect(ellipseArrow.endBinding?.elementId).toEqual(ellipse.id);
- expect(ellipseArrow.x).toEqual(0);
- expect(ellipseArrow.y).toEqual(0);
- expect(ellipseArrow.points[0]).toEqual([0, 0]);
- expect(ellipseArrow.points[1][0]).toBeCloseTo(48.5, 1);
- expect(ellipseArrow.points[1][1]).toBeCloseTo(126.5, 1);
- expect(textArrow.endBinding?.elementId).toEqual(text.id);
- expect(textArrow.x).toEqual(360);
- expect(textArrow.y).toEqual(300);
- expect(textArrow.points[0]).toEqual([0, 0]);
- expect(textArrow.points[1][0]).toBeCloseTo(-94, 1);
- expect(textArrow.points[1][1]).toBeCloseTo(-116.1, 1);
- });
|