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(); });});
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();
});
});