// @vitest-environment jsdom import { act } from "react"; import { createRoot } from "react-dom/client"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { useKeyboardShortcuts } from "./useKeyboardShortcuts"; // eslint-disable-next-line @typescript-eslint/no-explicit-any (globalThis as any).IS_REACT_ACT_ENVIRONMENT = true; function TestHarness({ onNewIssue, }: { onNewIssue: () => void; }) { useKeyboardShortcuts({ enabled: true, onNewIssue, }); return
keyboard shortcuts test
; } describe("useKeyboardShortcuts", () => { let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); document.body.appendChild(container); }); afterEach(() => { container.remove(); }); it("ignores events already claimed by another handler", () => { const root = createRoot(container); const onNewIssue = vi.fn(); act(() => { root.render(); }); const event = new KeyboardEvent("keydown", { key: "c", bubbles: true, cancelable: true, }); event.preventDefault(); document.dispatchEvent(event); expect(onNewIssue).not.toHaveBeenCalled(); act(() => { root.unmount(); }); }); });