diff --git a/tests/unit/transform-foundation.integration.test.tsx b/tests/unit/transform-foundation.integration.test.tsx index 69a0bc9c..8e3514d3 100644 --- a/tests/unit/transform-foundation.integration.test.tsx +++ b/tests/unit/transform-foundation.integration.test.tsx @@ -848,6 +848,69 @@ describe("transform foundation integration", () => { ).toBeInTheDocument(); }); + it("toggles repeated axis keys from world to local while translating a selected face", async () => { + const { store, brush } = await renderTransformFixtureApp(); + + await act(async () => { + fireEvent.click( + screen.getByRole("button", { name: /^Brush Transform Fixture$/ }) + ); + }); + + await act(async () => { + fireEvent.keyDown(window, { + key: "1", + code: "Digit1" + }); + }); + + act(() => { + store.setSelection({ + kind: "brushFace", + brushId: brush.id, + faceId: "posY" + }); + }); + + fireEvent.keyDown(window, { + key: "g", + code: "KeyG" + }); + fireEvent.keyDown(window, { + key: "z", + code: "KeyZ" + }); + + expect( + store.getState().viewportTransientState.transformSession + ).toMatchObject({ + kind: "active", + target: { + kind: "brushFace", + brushId: brush.id, + faceId: "posY" + }, + axisConstraint: "z", + axisConstraintSpace: "world" + }); + + fireEvent.keyDown(window, { + key: "z", + code: "KeyZ" + }); + + expect( + store.getState().viewportTransientState.transformSession + ).toMatchObject({ + kind: "active", + axisConstraint: "z", + axisConstraintSpace: "local" + }); + expect( + screen.getByText(/constrained move to local z\./i) + ).toBeInTheDocument(); + }); + it("toggles repeated axis keys from world to local while translating a selected vertex", async () => { const { store, brush } = await renderTransformFixtureApp();