feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { createOpenYomitanSettingsHandler } from './yomitan-settings-opener';
test('yomitan opener warns when extension cannot be loaded', async () => {
const logs: string[] = [];
const openSettings = createOpenYomitanSettingsHandler({
ensureYomitanExtensionLoaded: async () => null,
openYomitanSettingsWindow: () => {
throw new Error('should not open');
},
getExistingWindow: () => null,
setWindow: () => {},
logWarn: (message) => logs.push(message),
logError: () => logs.push('error'),
});
openSettings();
await Promise.resolve();
await Promise.resolve();
assert.ok(logs.includes('Unable to open Yomitan settings: extension failed to load.'));
});
test('yomitan opener opens settings window when extension is available', async () => {
let opened = false;
const openSettings = createOpenYomitanSettingsHandler({
ensureYomitanExtensionLoaded: async () => ({ id: 'ext' }),
openYomitanSettingsWindow: () => {
opened = true;
},
getExistingWindow: () => null,
setWindow: () => {},
logWarn: () => {},
logError: () => {},
});
openSettings();
await Promise.resolve();
await Promise.resolve();
assert.equal(opened, true);
});