Files
SubMiner/src/main/runtime/overlay-runtime-bootstrap-handlers.test.ts
T

66 lines
2.1 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import type { BaseWindowTracker } from '../../window-trackers';
import type { KikuFieldGroupingChoice } from '../../types';
import { createOverlayRuntimeBootstrapHandlers } from './overlay-runtime-bootstrap-handlers';
test('overlay runtime bootstrap handlers compose options builder and bootstrap handler', () => {
const appState = {
backendOverride: null as string | null,
windowTracker: null as BaseWindowTracker | null,
subtitleTimingTracker: null as unknown,
mpvClient: null,
mpvSocketPath: '/tmp/mpv.sock',
runtimeOptionsManager: null,
ankiIntegration: null as unknown,
};
let initialized = false;
let warmupsStarted = 0;
const { initializeOverlayRuntime } = createOverlayRuntimeBootstrapHandlers({
initializeOverlayRuntimeMainDeps: {
appState,
overlayManager: {
getVisibleOverlayVisible: () => true,
},
overlayVisibilityRuntime: {
updateVisibleOverlayVisibility: () => {},
},
overlayShortcutsRuntime: {
syncOverlayShortcuts: () => {},
},
createMainWindow: () => {},
registerGlobalShortcuts: () => {},
updateVisibleOverlayBounds: () => {},
getOverlayWindows: () => [],
getResolvedConfig: () => ({}),
showDesktopNotification: () => {},
createFieldGroupingCallback: () => async () =>
({
keepNoteId: 1,
deleteNoteId: 2,
deleteDuplicate: false,
cancelled: true,
}) as KikuFieldGroupingChoice,
getKnownWordCacheStatePath: () => '/tmp/known.json',
shouldStartAnkiIntegration: () => true,
},
initializeOverlayRuntimeBootstrapDeps: {
isOverlayRuntimeInitialized: () => initialized,
initializeOverlayRuntimeCore: () => {},
setOverlayRuntimeInitialized: (next) => {
initialized = next;
},
startBackgroundWarmups: () => {
warmupsStarted += 1;
},
},
});
initializeOverlayRuntime();
initializeOverlayRuntime();
assert.equal(initialized, true);
assert.equal(warmupsStarted, 1);
});