From 6ff5059531b88d605606fb675e5bb04ada6ba2fc Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sun, 12 Apr 2026 00:37:45 +0200 Subject: [PATCH] Add test for switching whitebox selection modes via keyboard shortcuts --- .../transform-foundation.integration.test.tsx | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tests/unit/transform-foundation.integration.test.tsx b/tests/unit/transform-foundation.integration.test.tsx index 5610e9b3..8f7b71f0 100644 --- a/tests/unit/transform-foundation.integration.test.tsx +++ b/tests/unit/transform-foundation.integration.test.tsx @@ -518,6 +518,63 @@ describe("transform foundation integration", () => { expect(screen.getByTestId("transform-translate-button")).not.toBeDisabled(); }); + it("switches whitebox selection modes through keyboard shortcuts", async () => { + const { store, brush } = await renderTransformFixtureApp(); + + await act(async () => { + fireEvent.click( + screen.getByRole("button", { name: /^Brush Transform Fixture$/ }) + ); + }); + + fireEvent.keyDown(window, { + key: "1", + code: "Digit1" + }); + + expect(store.getState().whiteboxSelectionMode).toBe("face"); + expect(screen.getByText(/selection mode set to face/i)).toBeInTheDocument(); + + act(() => { + store.setSelection({ + kind: "brushEdge", + brushId: brush.id, + edgeId: "edgeX_posY_negZ" + }); + }); + + fireEvent.keyDown(window, { + key: "2", + code: "Digit2" + }); + + expect(store.getState().whiteboxSelectionMode).toBe("edge"); + expect(store.getState().selection).toEqual({ + kind: "brushEdge", + brushId: brush.id, + edgeId: "edgeX_posY_negZ" + }); + + fireEvent.keyDown(window, { + key: "3", + code: "Digit3" + }); + + expect(store.getState().whiteboxSelectionMode).toBe("vertex"); + expect(store.getState().selection).toEqual({ + kind: "none" + }); + + fireEvent.keyDown(window, { + key: "^", + code: "Digit6", + shiftKey: true + }); + + expect(store.getState().whiteboxSelectionMode).toBe("object"); + expect(screen.getByText(/selection mode set to object/i)).toBeInTheDocument(); + }); + it("moves an entity through the shared transform controller", async () => { const { store, playerStart, viewportHost } = await renderTransformFixtureApp();