Files
Termix/src/ui/tests/lib/app-keyboard-shortcuts.test.ts
T

43 lines
1.3 KiB
TypeScript
Raw Normal View History

+17
2026-09-20 14:56:39 -05:00
import { describe, expect, it, vi } from "vitest";
import {
dispatchCtrlW,
getAltDigitShortcut,
isShiftKey,
} from "../../lib/app-keyboard-shortcuts";
describe("app keyboard shortcuts", () => {
it.each(["ShiftLeft", "ShiftRight"])(
"accepts %s for double Shift",
(code) => {
expect(isShiftKey({ key: "Shift", code })).toBe(true);
},
);
it("does not classify other keys as Shift", () => {
expect(isShiftKey({ key: "w", code: "KeyW" })).toBe(false);
});
it("recognizes Alt+digit shortcuts by their logical key", () => {
expect(getAltDigitShortcut({ key: "7", code: "Digit7" })).toBe(7);
});
it("does not swallow layout characters produced by Alt+digit", () => {
expect(getAltDigitShortcut({ key: "|", code: "Digit7" })).toBeNull();
});
it("lets the focused control consume Electron Ctrl+W", () => {
const target = document.createElement("input");
const listener = vi.fn((event: KeyboardEvent) => event.preventDefault());
target.addEventListener("keydown", listener);
expect(dispatchCtrlW(target)).toBe(true);
expect(listener).toHaveBeenCalledWith(
expect.objectContaining({ key: "w", code: "KeyW", ctrlKey: true }),
);
});
it("falls back to closing the active tab when Ctrl+W is not consumed", () => {
expect(dispatchCtrlW(document.createElement("div"))).toBe(false);
});
});