mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
75 lines
3.0 KiB
TypeScript
75 lines
3.0 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
createStartupAppReadyDepsRuntimeService,
|
|
createStartupAppShutdownDepsRuntimeService,
|
|
} from "./startup-lifecycle-runtime-deps-service";
|
|
|
|
test("createStartupAppReadyDepsRuntimeService preserves runtime deps behavior", async () => {
|
|
const calls: string[] = [];
|
|
const deps = createStartupAppReadyDepsRuntimeService({
|
|
loadSubtitlePosition: () => calls.push("loadSubtitlePosition"),
|
|
resolveKeybindings: () => calls.push("resolveKeybindings"),
|
|
createMpvClient: () => calls.push("createMpvClient"),
|
|
reloadConfig: () => calls.push("reloadConfig"),
|
|
getResolvedConfig: () => ({
|
|
secondarySub: { defaultMode: "hover" },
|
|
websocket: { enabled: "auto", port: 1234 },
|
|
}),
|
|
getConfigWarnings: () => [],
|
|
logConfigWarning: () => {},
|
|
initRuntimeOptionsManager: () => calls.push("initRuntimeOptionsManager"),
|
|
setSecondarySubMode: () => calls.push("setSecondarySubMode"),
|
|
defaultSecondarySubMode: "hover",
|
|
defaultWebsocketPort: 8765,
|
|
hasMpvWebsocketPlugin: () => true,
|
|
startSubtitleWebsocket: () => calls.push("startSubtitleWebsocket"),
|
|
log: () => calls.push("log"),
|
|
createMecabTokenizerAndCheck: async () => {
|
|
calls.push("createMecab");
|
|
},
|
|
createSubtitleTimingTracker: () => calls.push("createSubtitleTimingTracker"),
|
|
loadYomitanExtension: async () => {
|
|
calls.push("loadYomitan");
|
|
},
|
|
texthookerOnlyMode: false,
|
|
shouldAutoInitializeOverlayRuntimeFromConfig: () => false,
|
|
initializeOverlayRuntime: () => calls.push("initOverlayRuntime"),
|
|
handleInitialArgs: () => calls.push("handleInitialArgs"),
|
|
});
|
|
|
|
deps.loadSubtitlePosition();
|
|
await deps.createMecabTokenizerAndCheck();
|
|
deps.handleInitialArgs();
|
|
|
|
assert.equal(deps.defaultWebsocketPort, 8765);
|
|
assert.equal(deps.defaultSecondarySubMode, "hover");
|
|
assert.deepEqual(calls, ["loadSubtitlePosition", "createMecab", "handleInitialArgs"]);
|
|
});
|
|
|
|
test("createStartupAppShutdownDepsRuntimeService preserves shutdown handlers", () => {
|
|
const calls: string[] = [];
|
|
const deps = createStartupAppShutdownDepsRuntimeService({
|
|
unregisterAllGlobalShortcuts: () => calls.push("unregisterAllGlobalShortcuts"),
|
|
stopSubtitleWebsocket: () => calls.push("stopSubtitleWebsocket"),
|
|
stopTexthookerService: () => calls.push("stopTexthookerService"),
|
|
destroyYomitanParserWindow: () => calls.push("destroyYomitanParserWindow"),
|
|
clearYomitanParserPromises: () => calls.push("clearYomitanParserPromises"),
|
|
stopWindowTracker: () => calls.push("stopWindowTracker"),
|
|
destroyMpvSocket: () => calls.push("destroyMpvSocket"),
|
|
clearReconnectTimer: () => calls.push("clearReconnectTimer"),
|
|
destroySubtitleTimingTracker: () => calls.push("destroySubtitleTimingTracker"),
|
|
destroyAnkiIntegration: () => calls.push("destroyAnkiIntegration"),
|
|
});
|
|
|
|
deps.stopSubtitleWebsocket();
|
|
deps.clearReconnectTimer();
|
|
deps.destroyAnkiIntegration();
|
|
|
|
assert.deepEqual(calls, [
|
|
"stopSubtitleWebsocket",
|
|
"clearReconnectTimer",
|
|
"destroyAnkiIntegration",
|
|
]);
|
|
});
|