93 lines · 2.7 KB · TypeScript
RawDownload
import { describe, expect, it } from "vite-plus/test"; import type { ResolvedKeybindingsConfig } from "@t3tools/contracts"; import {  preventRepeatedTerminalCloseShortcut,  preventTerminalCloseShortcut,  type TerminalCloseShortcutEvent,} from "./terminalCloseShortcut"; const keybindings = [  {    command: "terminal.close",    shortcut: {      key: "w",      metaKey: false,      ctrlKey: false,      shiftKey: false,      altKey: false,      modKey: true,    },    whenAst: { type: "identifier", name: "terminalFocus" },  },] satisfies ResolvedKeybindingsConfig; type KeyboardEventOverrides = Partial<  Pick<    TerminalCloseShortcutEvent,    "key" | "code" | "metaKey" | "ctrlKey" | "shiftKey" | "altKey" | "repeat"  >>; function keyboardEvent(  overrides: KeyboardEventOverrides = {},): TerminalCloseShortcutEvent & { readonly defaultPrevented: boolean } {  let defaultPrevented = false;  return {    key: "w",    code: "KeyW",    metaKey: false,    ctrlKey: true,    shiftKey: false,    altKey: false,    repeat: false,    ...overrides,    preventDefault: () => {      defaultPrevented = true;    },    get defaultPrevented() {      return defaultPrevented;    },  };} describe("terminal close shortcut guards", () => {  it("prevents the browser default for a deliberate terminal close", () => {    const event = keyboardEvent();     expect(preventTerminalCloseShortcut(event, keybindings, "Linux x86_64")).toBe(true);    expect(event.defaultPrevented).toBe(true);  });   it("keeps held close repeats from closing the browser after the last terminal unmounts", () => {    const firstPress = keyboardEvent();    expect(preventTerminalCloseShortcut(firstPress, keybindings, "Linux x86_64")).toBe(true);     let browserCloseCount = 0;    for (const repeat of [true, true, true]) {      const event = keyboardEvent({ repeat });      preventRepeatedTerminalCloseShortcut(event, keybindings, "Linux x86_64");      if (!event.defaultPrevented) browserCloseCount += 1;    }     expect(browserCloseCount).toBe(0);    expect(preventRepeatedTerminalCloseShortcut(keyboardEvent(), keybindings, "Linux x86_64")).toBe(      false,    );  });   it("leaves a non-repeated window close and unrelated repeats alone", () => {    const deliberateWindowClose = keyboardEvent({ repeat: false });    const unrelatedRepeat = keyboardEvent({ key: "q", code: "KeyQ", repeat: true });     expect(      preventRepeatedTerminalCloseShortcut(deliberateWindowClose, keybindings, "Linux x86_64"),    ).toBe(false);    expect(deliberateWindowClose.defaultPrevented).toBe(false);    expect(preventRepeatedTerminalCloseShortcut(unrelatedRepeat, keybindings, "Linux x86_64")).toBe(      false,    );    expect(unrelatedRepeat.defaultPrevented).toBe(false);  });});