import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it, vi } from "vite-plus/test"; import { handleSurfaceTabAuxClick } from "~/lib/rightPanelTabPointer"; import { RightPanelTabs } from "./RightPanelTabs"; import { PanelLayoutControls, RightPanelCloseControl, RightPanelMaximizeControl, } from "./chat/PanelLayoutControls"; vi.mock("~/env", () => ({ isElectron: false })); function renderTabs(mode: "inline" | "sheet"): string { return renderToStaticMarkup(
Active surface
, ); } describe("RightPanelTabs", () => { it("closes the clicked surface on middle mouse button", () => { const surface = { id: "files", kind: "files" } as const; const event = { button: 1, preventDefault: vi.fn(), stopPropagation: vi.fn(), }; const onCloseSurface = vi.fn(); handleSurfaceTabAuxClick(event, surface, onCloseSurface); expect(event.preventDefault).toHaveBeenCalledOnce(); expect(event.stopPropagation).toHaveBeenCalledOnce(); expect(onCloseSurface).toHaveBeenCalledOnce(); expect(onCloseSurface).toHaveBeenCalledWith(surface); }); it.each([0, 2])("ignores auxiliary click button %s", (button) => { const event = { button, preventDefault: vi.fn(), stopPropagation: vi.fn(), }; const onCloseSurface = vi.fn(); handleSurfaceTabAuxClick(event, { id: "files", kind: "files" }, onCloseSurface); expect(event.preventDefault).not.toHaveBeenCalled(); expect(event.stopPropagation).not.toHaveBeenCalled(); expect(onCloseSurface).not.toHaveBeenCalled(); }); it("marks the panel content region", () => { const markup = renderTabs("inline"); expect(markup).toContain("data-right-panel-content"); }); it("places the whole-panel close control after the other title-bar controls", () => { const markup = renderToStaticMarkup(
, ); expect(markup.indexOf('aria-label="Close right panel"')).toBeGreaterThan( markup.indexOf('aria-label="Toggle right panel"'), ); }); });