Something went wrong. Try again.
[mirror] A local-first desktop markdown writer with grammar checking, at proto integration, and more github.com/stormlightlabs/writer/releases
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import { useLayoutHotkeys } from "$hooks/useLayoutHotkeys";import { resetAppStore, useAppStore } from "$state/stores/app";import { resetShortcutsStore, useShortcutsStore } from "$state/stores/shortcuts";import { act, renderHook } from "@testing-library/react";import { beforeEach, describe, expect, it } from "vitest";
describe("useLayoutHotkeys", () => { beforeEach(() => { resetAppStore(); resetShortcutsStore(); });
it("registers Cmd+P preview shortcut metadata", () => { renderHook(() => useLayoutHotkeys());
const shortcuts = useShortcutsStore.getState().shortcuts; const previewShortcut = shortcuts.find((s) => s.id === "toggle-preview");
expect(previewShortcut).toBeDefined(); expect(previewShortcut?.label).toBe("Toggle Preview"); expect(previewShortcut?.category).toBe("View"); expect(previewShortcut?.keys).toStrictEqual(["Cmd", "P"]); });
it("toggles preview visibility on Cmd+P", () => { renderHook(() => useLayoutHotkeys());
expect(useAppStore.getState().isPreviewVisible).toBe(false);
act(() => { const event = new KeyboardEvent("keydown", { key: "p", metaKey: true, bubbles: true }); document.dispatchEvent(event); });
expect(useAppStore.getState().isPreviewVisible).toBe(true);
act(() => { const event = new KeyboardEvent("keydown", { key: "P", metaKey: true, bubbles: true }); document.dispatchEvent(event); });
expect(useAppStore.getState().isPreviewVisible).toBe(false); });
it("does not toggle preview on Cmd+Shift+P", () => { renderHook(() => useLayoutHotkeys());
expect(useAppStore.getState().isPreviewVisible).toBe(false);
act(() => { const event = new KeyboardEvent("keydown", { key: "P", metaKey: true, shiftKey: true, bubbles: true }); document.dispatchEvent(event); });
expect(useAppStore.getState().isPreviewVisible).toBe(false); });});