import { expect, it } from "vitest"; import { defineToolcraft, fireEvent, renderControlsPanelWithSchema, screen } from "../testing/controls-panel-test-utils"; it("keeps a locked Vector coordinate exact in canonical runtime values", () => { const schema = defineToolcraft({ base: { identity: { id: "vector-locks", title: "Vector locks" }, canvas: { enabled: true }, panels: { controls: { title: "Controls", sections: [{ id: "position", controls: { position: { type: "vector", label: "Position", target: "shape.position", defaultValue: { x: 0.1234567, y: 0.25 }, applicability: { mode: "always" }, }, } }] } }, }, modules: [], }); renderControlsPanelWithSchema(schema); fireEvent.click(screen.getByRole("button", { name: "Lock Position X axis" })); const values = () => JSON.parse(screen.getByTestId("values-json").textContent!); expect(values()["shape.position"]).toEqual({ x: 0.1234567, y: 0.25 }); fireEvent.click(screen.getByRole("button", { name: "Edit Position Y value" })); const editor = screen.getByRole("textbox", { name: "Position Y value" }); editor.textContent = "-0.75"; fireEvent.keyDown(editor, { key: "Enter" }); fireEvent.blur(editor); expect(values()["shape.position"]).toEqual({ x: 0.1234567, y: -0.75 }); expect(screen.queryByRole("button", { name: "Edit Position X value" })).toBeNull(); fireEvent.click(screen.getByRole("button", { name: "Unlock Position X axis" })); expect(values()["shape.position"]).toEqual({ x: 0.1234567, y: -0.75 }); });