import { render } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { CanvasSceneSurface } from "./canvas-scene-surface"; describe("CanvasSceneSurface", () => { it("centers the finite clipped artboard around one scene origin", () => { const { container } = render( content , ); const surface = container.querySelector( "[data-toolcraft-canvas-surface]", ); const sceneOrigin = container.querySelector( "[data-toolcraft-scene-origin]", ); expect(surface?.dataset.toolcraftCanvasMode).toBe("finite"); expect(surface?.hasAttribute("data-toolcraft-editable-canvas")).toBe(true); expect(surface?.hasAttribute("data-toolcraft-infinite-scene")).toBe(false); expect(surface?.style).toMatchObject({ height: "200px", left: "-150px", top: "-100px", width: "300px", }); expect(surface?.className).toContain("overflow-hidden"); expect(sceneOrigin?.parentElement).toBe(surface); expect(sceneOrigin?.style).toMatchObject({ left: "150px", top: "100px" }); }); it("renders an unclipped zero-sized infinite surface at the same scene origin", () => { const { container } = render( content, ); const surface = container.querySelector( "[data-toolcraft-canvas-surface]", ); const sceneOrigin = container.querySelector( "[data-toolcraft-scene-origin]", ); expect(surface?.dataset.toolcraftCanvasMode).toBe("infinite"); expect(surface?.hasAttribute("data-toolcraft-editable-canvas")).toBe(false); expect(surface?.hasAttribute("data-toolcraft-infinite-scene")).toBe(true); expect(surface?.style).toMatchObject({ height: "0px", left: "0px", top: "0px", width: "0px", }); expect(surface?.className).toContain("overflow-visible"); expect(sceneOrigin?.parentElement).toBe(surface); expect(sceneOrigin?.style).toMatchObject({ left: "0px", top: "0px" }); }); });