57 lines · 1.6 KB · TypeScript
RawDownload
import type { DesktopBridge } from "@t3tools/contracts";import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test"; import {  dispatchSnapShotComposerFocus,  getDesktopSnapShotBridge,  subscribeSnapShotComposerFocus,} from "./desktopSnapShot"; beforeEach(() => {  Object.defineProperty(globalThis, "window", {    configurable: true,    value: new EventTarget(),  });}); afterEach(() => {  Reflect.deleteProperty(globalThis, "window");}); describe("getDesktopSnapShotBridge", () => {  it("rejects an older desktop bridge without window capture methods", () => {    window.desktopBridge = {} as DesktopBridge;     expect(getDesktopSnapShotBridge()).toBeUndefined();  });   it("returns a bridge with the complete window capture capability", () => {    const bridge = {      requestSnapShotPermissions: vi.fn(),      getSnapShotState: vi.fn(),      checkSnapShotShortcut: vi.fn(),      setSnapShotShortcutSuppressed: vi.fn(),      listPendingSnapShots: vi.fn(),      readSnapShot: vi.fn(),      acknowledgeSnapShot: vi.fn(),      onSnapShotEvent: vi.fn(),    } as unknown as DesktopBridge;    window.desktopBridge = bridge;     expect(getDesktopSnapShotBridge()).toBe(bridge);  });}); describe("window capture composer focus", () => {  it("notifies active subscribers", () => {    const listener = vi.fn();    const unsubscribe = subscribeSnapShotComposerFocus(listener);     dispatchSnapShotComposerFocus();    expect(listener).toHaveBeenCalledOnce();     unsubscribe();    dispatchSnapShotComposerFocus();    expect(listener).toHaveBeenCalledOnce();  });});