Files
SubMiner/src/main/runtime/yomitan-extension-loader-main-deps.test.ts

50 lines
1.8 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
createBuildEnsureYomitanExtensionLoadedMainDepsHandler,
createBuildLoadYomitanExtensionMainDepsHandler,
} from './yomitan-extension-loader-main-deps';
test('load yomitan extension main deps builder maps callbacks', async () => {
const calls: string[] = [];
const deps = createBuildLoadYomitanExtensionMainDepsHandler({
loadYomitanExtensionCore: async () => {
calls.push('load-core');
return null;
},
userDataPath: '/tmp/subminer',
getYomitanParserWindow: () => null,
setYomitanParserWindow: () => calls.push('set-window'),
setYomitanParserReadyPromise: () => calls.push('set-ready'),
setYomitanParserInitPromise: () => calls.push('set-init'),
setYomitanExtension: () => calls.push('set-ext'),
})();
assert.equal(deps.userDataPath, '/tmp/subminer');
await deps.loadYomitanExtensionCore({} as never);
deps.setYomitanParserWindow(null);
deps.setYomitanParserReadyPromise(null);
deps.setYomitanParserInitPromise(null);
deps.setYomitanExtension(null);
assert.deepEqual(calls, ['load-core', 'set-window', 'set-ready', 'set-init', 'set-ext']);
});
test('ensure yomitan extension loaded main deps builder maps callbacks', async () => {
const calls: string[] = [];
const deps = createBuildEnsureYomitanExtensionLoadedMainDepsHandler({
getYomitanExtension: () => null,
getLoadInFlight: () => null,
setLoadInFlight: () => calls.push('set-inflight'),
loadYomitanExtension: async () => {
calls.push('load');
return null;
},
})();
assert.equal(deps.getYomitanExtension(), null);
assert.equal(deps.getLoadInFlight(), null);
deps.setLoadInFlight(null);
await deps.loadYomitanExtension();
assert.deepEqual(calls, ['set-inflight', 'load']);
});