mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
111 lines
3.1 KiB
TypeScript
111 lines
3.1 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { createCliCommandDepsRuntimeService } from "./cli-command-deps-runtime-service";
|
|
|
|
test("createCliCommandDepsRuntimeService wires runtime helpers", () => {
|
|
let socketPath = "/tmp/mpv";
|
|
let setClientSocketPath: string | null = null;
|
|
let connectCalls = 0;
|
|
let texthookerPort = 7000;
|
|
let texthookerRunning = false;
|
|
let texthookerStartPort: number | null = null;
|
|
let overlayVisible = false;
|
|
let overlayInvisible = false;
|
|
let openYomitanAfterDelay: number | null = null;
|
|
|
|
const deps = createCliCommandDepsRuntimeService({
|
|
mpv: {
|
|
getSocketPath: () => socketPath,
|
|
setSocketPath: (next) => {
|
|
socketPath = next;
|
|
},
|
|
getClient: () => ({
|
|
setSocketPath: (next) => {
|
|
setClientSocketPath = next;
|
|
},
|
|
connect: () => {
|
|
connectCalls += 1;
|
|
},
|
|
}),
|
|
showOsd: () => {},
|
|
},
|
|
texthooker: {
|
|
service: {
|
|
isRunning: () => texthookerRunning,
|
|
start: (port) => {
|
|
texthookerRunning = true;
|
|
texthookerStartPort = port;
|
|
},
|
|
},
|
|
getPort: () => texthookerPort,
|
|
setPort: (port) => {
|
|
texthookerPort = port;
|
|
},
|
|
shouldOpenBrowser: () => true,
|
|
openInBrowser: () => {},
|
|
},
|
|
overlay: {
|
|
isInitialized: () => false,
|
|
initialize: () => {},
|
|
toggleVisible: () => {
|
|
overlayVisible = !overlayVisible;
|
|
},
|
|
toggleInvisible: () => {
|
|
overlayInvisible = !overlayInvisible;
|
|
},
|
|
setVisible: (visible) => {
|
|
overlayVisible = visible;
|
|
},
|
|
setInvisible: (visible) => {
|
|
overlayInvisible = visible;
|
|
},
|
|
},
|
|
mining: {
|
|
copyCurrentSubtitle: () => {},
|
|
startPendingMultiCopy: () => {},
|
|
mineSentenceCard: async () => {},
|
|
startPendingMineSentenceMultiple: () => {},
|
|
updateLastCardFromClipboard: async () => {},
|
|
triggerFieldGrouping: async () => {},
|
|
triggerSubsyncFromConfig: async () => {},
|
|
markLastCardAsAudioCard: async () => {},
|
|
},
|
|
ui: {
|
|
openYomitanSettings: () => {},
|
|
cycleSecondarySubMode: () => {},
|
|
openRuntimeOptionsPalette: () => {},
|
|
printHelp: () => {},
|
|
},
|
|
app: {
|
|
stop: () => {},
|
|
hasMainWindow: () => true,
|
|
},
|
|
getMultiCopyTimeoutMs: () => 2500,
|
|
schedule: (_fn, delayMs) => {
|
|
openYomitanAfterDelay = delayMs;
|
|
return null;
|
|
},
|
|
log: () => {},
|
|
warn: () => {},
|
|
error: () => {},
|
|
});
|
|
|
|
deps.setMpvSocketPath("/tmp/new");
|
|
deps.setMpvClientSocketPath("/tmp/new");
|
|
deps.connectMpvClient();
|
|
deps.ensureTexthookerRunning(9000);
|
|
deps.openYomitanSettingsDelayed(1000);
|
|
deps.toggleVisibleOverlay();
|
|
deps.toggleInvisibleOverlay();
|
|
|
|
assert.equal(deps.getMpvSocketPath(), "/tmp/new");
|
|
assert.equal(setClientSocketPath, "/tmp/new");
|
|
assert.equal(connectCalls, 1);
|
|
assert.equal(texthookerStartPort, 9000);
|
|
assert.equal(texthookerPort, 7000);
|
|
assert.equal(openYomitanAfterDelay, 1000);
|
|
assert.equal(overlayVisible, true);
|
|
assert.equal(overlayInvisible, true);
|
|
assert.equal(deps.getMultiCopyTimeoutMs(), 2500);
|
|
});
|