mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
Standardize core service module and export names to reduce naming ambiguity and make imports predictable across runtime, tests, scripts, and docs.
78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { KikuFieldGroupingChoice } from "../../types";
|
|
import {
|
|
createFieldGroupingCallbackRuntime,
|
|
sendToVisibleOverlayRuntime,
|
|
} from "./overlay-bridge";
|
|
|
|
test("sendToVisibleOverlayRuntime restores visibility flag when opening hidden overlay modal", () => {
|
|
const sent: unknown[][] = [];
|
|
const restoreSet = new Set<"runtime-options" | "subsync">();
|
|
let visibleOverlayVisible = false;
|
|
|
|
const ok = sendToVisibleOverlayRuntime({
|
|
mainWindow: {
|
|
isDestroyed: () => false,
|
|
webContents: {
|
|
isLoading: () => false,
|
|
send: (...args: unknown[]) => {
|
|
sent.push(args);
|
|
},
|
|
},
|
|
} as unknown as Electron.BrowserWindow,
|
|
visibleOverlayVisible,
|
|
setVisibleOverlayVisible: (visible: boolean) => {
|
|
visibleOverlayVisible = visible;
|
|
},
|
|
channel: "runtime-options:open",
|
|
restoreOnModalClose: "runtime-options",
|
|
restoreVisibleOverlayOnModalClose: restoreSet,
|
|
});
|
|
|
|
assert.equal(ok, true);
|
|
assert.equal(visibleOverlayVisible, true);
|
|
assert.equal(restoreSet.has("runtime-options"), true);
|
|
assert.deepEqual(sent, [["runtime-options:open"]]);
|
|
});
|
|
|
|
test("createFieldGroupingCallbackRuntime cancels when overlay request cannot be sent", async () => {
|
|
let resolver: ((choice: KikuFieldGroupingChoice) => void) | null = null;
|
|
const callback = createFieldGroupingCallbackRuntime<
|
|
"runtime-options" | "subsync"
|
|
>({
|
|
getVisibleOverlayVisible: () => false,
|
|
getInvisibleOverlayVisible: () => false,
|
|
setVisibleOverlayVisible: () => {},
|
|
setInvisibleOverlayVisible: () => {},
|
|
getResolver: () => resolver,
|
|
setResolver: (next) => {
|
|
resolver = next;
|
|
},
|
|
sendToVisibleOverlay: () => false,
|
|
});
|
|
|
|
const result = await callback({
|
|
original: {
|
|
noteId: 1,
|
|
expression: "a",
|
|
sentencePreview: "a",
|
|
hasAudio: false,
|
|
hasImage: false,
|
|
isOriginal: true,
|
|
},
|
|
duplicate: {
|
|
noteId: 2,
|
|
expression: "b",
|
|
sentencePreview: "b",
|
|
hasAudio: false,
|
|
hasImage: false,
|
|
isOriginal: false,
|
|
},
|
|
});
|
|
|
|
assert.equal(result.cancelled, true);
|
|
assert.equal(result.keepNoteId, 0);
|
|
assert.equal(result.deleteNoteId, 0);
|
|
});
|