Files
MajoorWaldi-ComfyUI-Majoor-…/ui/tests/viewer_open_request.vitest.ts
T
Ewald 85a82f130a test: migrate ui/tests from .mjs to .ts
- Rename 132 *.vitest.mjs -> *.vitest.ts
- Rename vitest.setup.mjs -> vitest.setup.ts
- Rename helpers/vitestEnvironment.mjs -> vitestEnvironment.ts
- Delete settings_store.test.mjs (Node test runner, superseded by .vitest.ts)
- Fix .mjs imports in vitest.setup.ts and grid_loader_adaptive_paging.vitest.ts

Config updates:
- vitest.config.mjs: setupFiles, include, coverage.include -> .ts
- tsconfig.test.json: new dedicated config for test files (strict:false)
- knip.json: update project pattern for tests
- package.json: add typecheck:tests script (audit-only)
2026-05-26 13:04:05 +02:00

54 lines
1.9 KiB
TypeScript

// @vitest-environment happy-dom
import { beforeEach, describe, expect, it, vi } from "vitest";
const viewerMock = vi.hoisted(() => ({
open: vi.fn(),
setMode: vi.fn(),
}));
const getViewerInstanceMock = vi.hoisted(() => vi.fn(() => viewerMock));
vi.mock("../components/Viewer.js", () => ({
getViewerInstance: getViewerInstanceMock,
}));
describe("requestViewerOpen", () => {
beforeEach(() => {
viewerMock.open.mockClear();
viewerMock.setMode.mockClear();
getViewerInstanceMock.mockClear();
});
it("falls back to the viewer singleton when no portal listener handles the event", async () => {
const { requestViewerOpen } = await import("../features/viewer/viewerOpenRequest.js");
const asset = { id: 1, filename: "one.png", kind: "image" };
const opened = requestViewerOpen({ assets: [asset], index: 0 });
expect(opened).toBe(true);
expect(getViewerInstanceMock).toHaveBeenCalledTimes(1);
expect(viewerMock.open).toHaveBeenCalledWith([asset], 0);
});
it("does not double-open when the portal marks the event as handled", async () => {
const { EVENTS } = await import("../app/events.js");
const { requestViewerOpen } = await import("../features/viewer/viewerOpenRequest.js");
const asset = { id: 2, filename: "two.png", kind: "image" };
const onOpen = vi.fn((event) => {
event.detail.handled = true;
});
window.addEventListener(EVENTS.OPEN_VIEWER, onOpen);
try {
const opened = requestViewerOpen({ assets: [asset], index: 0, mode: "ab" });
expect(opened).toBe(true);
expect(onOpen).toHaveBeenCalledTimes(1);
expect(getViewerInstanceMock).not.toHaveBeenCalled();
expect(viewerMock.open).not.toHaveBeenCalled();
} finally {
window.removeEventListener(EVENTS.OPEN_VIEWER, onOpen);
}
});
});