From 139744a53ed01e4242739b7c743b7c970046d6ab Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 2 Apr 2026 22:36:05 +0200 Subject: [PATCH] Add unit tests for viewport layout --- tests/unit/viewport-layout.test.ts | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/unit/viewport-layout.test.ts diff --git a/tests/unit/viewport-layout.test.ts b/tests/unit/viewport-layout.test.ts new file mode 100644 index 00000000..5e657f3b --- /dev/null +++ b/tests/unit/viewport-layout.test.ts @@ -0,0 +1,40 @@ +import { describe, expect, it } from "vitest"; + +import { + createDefaultViewportLayoutState, + getViewportDisplayModeLabel, + getViewportLayoutModeLabel, + getViewportPanelLabel +} from "../../src/viewport-three/viewport-layout"; + +describe("viewport layout", () => { + it("defaults to a quad-ready panel arrangement with orthographic authoring panes", () => { + const layout = createDefaultViewportLayoutState(); + + expect(layout.layoutMode).toBe("single"); + expect(layout.activePanelId).toBe("topLeft"); + expect(layout.panels.topLeft).toMatchObject({ + viewMode: "perspective", + displayMode: "normal" + }); + expect(layout.panels.topRight).toMatchObject({ + viewMode: "top", + displayMode: "authoring" + }); + expect(layout.panels.bottomLeft).toMatchObject({ + viewMode: "front", + displayMode: "authoring" + }); + expect(layout.panels.bottomRight).toMatchObject({ + viewMode: "side", + displayMode: "authoring" + }); + }); + + it("exposes readable labels for the layout and panel chrome", () => { + expect(getViewportLayoutModeLabel("single")).toBe("Single View"); + expect(getViewportLayoutModeLabel("quad")).toBe("4-Panel"); + expect(getViewportDisplayModeLabel("authoring")).toBe("Authoring"); + expect(getViewportPanelLabel("topRight")).toBe("Top Right"); + }); +});