mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 12:11:28 -07:00
83 lines
2.8 KiB
TypeScript
83 lines
2.8 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { composeAppReadyRuntime } from './app-ready-composer';
|
|
|
|
test('composeAppReadyRuntime returns reload/critical/app-ready handlers', () => {
|
|
const composed = composeAppReadyRuntime({
|
|
reloadConfigMainDeps: {
|
|
reloadConfigStrict: () => ({ ok: true, path: '/tmp/config.jsonc', warnings: [] }),
|
|
logInfo: () => {},
|
|
logWarning: () => {},
|
|
showDesktopNotification: () => {},
|
|
startConfigHotReload: () => {},
|
|
refreshAnilistClientSecretState: async () => {},
|
|
failHandlers: {
|
|
logError: () => {},
|
|
showErrorBox: () => {},
|
|
quit: () => {},
|
|
},
|
|
},
|
|
criticalConfigErrorMainDeps: {
|
|
getConfigPath: () => '/tmp/config.jsonc',
|
|
failHandlers: {
|
|
logError: () => {},
|
|
showErrorBox: () => {},
|
|
quit: () => {},
|
|
},
|
|
},
|
|
appReadyRuntimeMainDeps: {
|
|
ensureDefaultConfigBootstrap: () => {},
|
|
loadSubtitlePosition: () => {},
|
|
resolveKeybindings: () => {},
|
|
createMpvClient: () => {},
|
|
getResolvedConfig: () => ({}) as never,
|
|
getConfigWarnings: () => [],
|
|
logConfigWarning: () => {},
|
|
setLogLevel: () => {},
|
|
initRuntimeOptionsManager: () => {},
|
|
setSecondarySubMode: () => {},
|
|
defaultSecondarySubMode: 'hover',
|
|
defaultWebsocketPort: 5174,
|
|
defaultAnnotationWebsocketPort: 6678,
|
|
defaultTexthookerPort: 5174,
|
|
hasMpvWebsocketPlugin: () => false,
|
|
startSubtitleWebsocket: () => {},
|
|
startAnnotationWebsocket: () => {},
|
|
startTexthooker: () => {},
|
|
log: () => {},
|
|
createMecabTokenizerAndCheck: async () => {},
|
|
createSubtitleTimingTracker: () => {},
|
|
loadYomitanExtension: async () => {},
|
|
handleFirstRunSetup: async () => {},
|
|
startJellyfinRemoteSession: async () => {},
|
|
prewarmSubtitleDictionaries: async () => {},
|
|
startBackgroundWarmups: () => {},
|
|
texthookerOnlyMode: false,
|
|
shouldAutoInitializeOverlayRuntimeFromConfig: () => false,
|
|
setVisibleOverlayVisible: () => {},
|
|
initializeOverlayRuntime: () => {},
|
|
handleInitialArgs: () => {},
|
|
logDebug: () => {},
|
|
now: () => Date.now(),
|
|
},
|
|
immersionTrackerStartupMainDeps: {
|
|
getResolvedConfig: () => ({}) as never,
|
|
getConfiguredDbPath: () => '/tmp/immersion.sqlite',
|
|
createTrackerService: () =>
|
|
({
|
|
startSession: () => {},
|
|
}) as never,
|
|
setTracker: () => {},
|
|
getMpvClient: () => null,
|
|
seedTrackerFromCurrentMedia: () => {},
|
|
logInfo: () => {},
|
|
logDebug: () => {},
|
|
logWarn: () => {},
|
|
},
|
|
});
|
|
|
|
assert.equal(typeof composed.reloadConfig, 'function');
|
|
assert.equal(typeof composed.criticalConfigError, 'function');
|
|
assert.equal(typeof composed.appReadyRuntimeRunner, 'function');
|
|
});
|