返回 DeepSeek-Reasonix
management-shortcuts.test.tsx
根目录 / desktop / frontend / src / __tests__ / management-shortcuts.test.tsx
1 import assert from "node:assert/strict";
2 import { managementDom } from "../test-support/managementDom";
3 const dom = managementDom();
4 const { default: React, act } = await import("react");
5 const { createRoot } = await import("react-dom/client");
6 const { useGlobalShortcut, resolvedShortcutCombo, detectShortcutPlatform } = await import("../lib/keyboardShortcuts");
7 const { useAppNavigationStore: navigation } = await import("../store/appNavigation");
8 let sidebar = 0; let palette = 0; let closes = 0;
9 function Shortcuts() {
10 useGlobalShortcut("sidebar.toggle", () => { sidebar++; });
11 useGlobalShortcut("commandPalette.open", () => { palette++; });
12 useGlobalShortcut("tab.close", () => { closes++; navigation.getState().returnToWorkspace(); });
13 return null;
14 }
15 const fire = (action: Parameters<typeof resolvedShortcutCombo>[0]) => {
16 const combo = resolvedShortcutCombo(action, detectShortcutPlatform());
17 document.dispatchEvent(new dom.window.KeyboardEvent("keydown", { key: combo.key, ctrlKey: combo.ctrl, metaKey: combo.meta, altKey: combo.alt, shiftKey: combo.shift, bubbles: true, cancelable: true }));
18 };
19 const root = createRoot(document.getElementById("root")!);
20 await act(async () => root.render(<Shortcuts />));
21 fire("sidebar.toggle"); assert.equal(sidebar, 1);
22 navigation.getState().openPage({ kind: "automation" });
23 fire("sidebar.toggle"); assert.equal(sidebar, 1, "hidden workspace shortcuts are suspended");
24 fire("commandPalette.open"); assert.equal(palette, 1);
25 const modal = document.createElement("div"); modal.setAttribute("aria-modal", "true"); document.body.append(modal);
26 fire("tab.close"); assert.equal(closes, 0, "a child dialog has priority over page shortcuts");
27 modal.remove(); fire("tab.close");
28 assert.equal(closes, 1); assert.equal(navigation.getState().page.kind, "workspace");
29 await act(async () => root.unmount()); dom.window.close();
30 console.log("PASS hidden-workspace shortcuts, command palette, child-dialog priority and return shortcut");
31
31 lines Plain Text