216 lines · 5.7 KB · TypeScript
RawDownload
import { describe, expect, it } from "vite-plus/test"; import {  CLOSE_ACTIVE_RIGHT_PANEL_SURFACE_EVENT,  requestCloseActiveRightPanelSurface,  resolveNativeCloseTarget,  resolveRightPanelCloseTarget,  shouldDeferCloseCommandToDesktopMenu,  shouldDeferCloseShortcutToDesktopMenu,} from "./rightPanelCloseRequest"; const keyboardEvent = (overrides: Partial<KeyboardEvent> = {}) =>  ({    code: "KeyW",    key: "w",    metaKey: true,    ctrlKey: false,    shiftKey: false,    altKey: false,    ...overrides,  }) as KeyboardEvent; describe("requestCloseActiveRightPanelSurface", () => {  it("reports when the active right-panel surface handles the request", () => {    const target = new EventTarget();    target.addEventListener(CLOSE_ACTIVE_RIGHT_PANEL_SURFACE_EVENT, (event) => {      event.preventDefault();    });     expect(requestCloseActiveRightPanelSurface(target)).toBe(true);  });   it("leaves an unhandled request available for window closing", () => {    expect(requestCloseActiveRightPanelSurface(new EventTarget())).toBe(false);  });   it("defers the native Cmd+W accelerator only in the macOS desktop app", () => {    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: true,        platform: "MacIntel",        event: keyboardEvent(),      }),    ).toBe(true);    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: false,        platform: "MacIntel",        event: keyboardEvent(),      }),    ).toBe(false);    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: true,        platform: "Win32",        event: keyboardEvent(),      }),    ).toBe(false);  });   it("keeps rebound macOS shortcuts in the renderer", () => {    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: true,        platform: "MacIntel",        event: keyboardEvent({ code: "KeyK", key: "k" }),      }),    ).toBe(false);    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: true,        platform: "MacIntel",        event: keyboardEvent({ shiftKey: true }),      }),    ).toBe(false);  });   it("defers Cmd+W when the physical key and layout character differ", () => {    expect(      shouldDeferCloseShortcutToDesktopMenu({        desktop: true,        platform: "MacIntel",        event: keyboardEvent({ key: "z" }),      }),    ).toBe(true);  });   it("defers native Cmd+W for focused terminal close commands", () => {    expect(      shouldDeferCloseCommandToDesktopMenu({        command: "terminal.close",        desktop: true,        event: keyboardEvent(),        platform: "MacIntel",        terminalFocused: true,      }),    ).toBe(true);    expect(      shouldDeferCloseCommandToDesktopMenu({        command: "terminal.close",        desktop: true,        event: keyboardEvent(),        platform: "MacIntel",        terminalFocused: false,      }),    ).toBe(false);  });}); describe("resolveRightPanelCloseTarget", () => {  it("closes the active surface when the open panel has one", () => {    expect(      resolveRightPanelCloseTarget({        isOpen: true,        hasActiveSurface: true,        hasFocusedTerminal: false,      }),    ).toBe("surface");  });   it("closes the focused terminal pane before its containing surface", () => {    expect(      resolveRightPanelCloseTarget({        isOpen: true,        hasActiveSurface: true,        hasFocusedTerminal: true,      }),    ).toBe("terminal");  });   it("closes the panel itself when it is open without a surface", () => {    expect(      resolveRightPanelCloseTarget({        isOpen: true,        hasActiveSurface: false,        hasFocusedTerminal: false,      }),    ).toBe("panel");  });   it("does not intercept window close when the panel is hidden", () => {    expect(      resolveRightPanelCloseTarget({        isOpen: false,        hasActiveSurface: true,        hasFocusedTerminal: false,      }),    ).toBeNull();  });}); describe("resolveNativeCloseTarget", () => {  const defaults = {    focusOwner: null,    drawerTerminalOpen: true,    rightPanelOpen: true,    hasActiveRightPanelSurface: true,    activeRightPanelSurfaceIsTerminal: false,  } as const;   it("does not intercept window close when focus is outside an open panel", () => {    expect(resolveNativeCloseTarget(defaults)).toBeNull();  });   it("closes a focused drawer terminal before an open right panel", () => {    expect(resolveNativeCloseTarget({ ...defaults, focusOwner: "drawer-terminal" })).toBe(      "drawer-terminal",    );  });   it("ignores stale drawer ownership after the drawer closes", () => {    expect(      resolveNativeCloseTarget({        ...defaults,        focusOwner: "drawer-terminal",        drawerTerminalOpen: false,      }),    ).toBeNull();  });   it("closes only the focused pane in a right-panel terminal group", () => {    expect(      resolveNativeCloseTarget({        ...defaults,        focusOwner: "right-panel-terminal",        activeRightPanelSurfaceIsTerminal: true,      }),    ).toBe("right-panel-terminal");  });   it("closes the active surface for other right-panel focus", () => {    expect(resolveNativeCloseTarget({ ...defaults, focusOwner: "right-panel" })).toBe(      "right-panel-surface",    );  });   it("closes an empty focused panel without closing the window", () => {    expect(      resolveNativeCloseTarget({        ...defaults,        focusOwner: "right-panel",        hasActiveRightPanelSurface: false,      }),    ).toBe("right-panel");  });   it("does not intercept after the right panel closes", () => {    expect(      resolveNativeCloseTarget({        ...defaults,        focusOwner: "right-panel",        rightPanelOpen: false,      }),    ).toBeNull();  });});