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

61 lines
2.0 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',
externalProfilePath: '/tmp/gsm-profile',
getYomitanParserWindow: () => null,
setYomitanParserWindow: () => calls.push('set-window'),
setYomitanParserReadyPromise: () => calls.push('set-ready'),
setYomitanParserInitPromise: () => calls.push('set-init'),
setYomitanExtension: () => calls.push('set-ext'),
setYomitanSession: () => calls.push('set-session'),
})();
assert.equal(deps.userDataPath, '/tmp/subminer');
assert.equal(deps.externalProfilePath, '/tmp/gsm-profile');
await deps.loadYomitanExtensionCore({} as never);
deps.setYomitanParserWindow(null);
deps.setYomitanParserReadyPromise(null);
deps.setYomitanParserInitPromise(null);
deps.setYomitanExtension(null);
deps.setYomitanSession(null as never);
assert.deepEqual(calls, [
'load-core',
'set-window',
'set-ready',
'set-init',
'set-ext',
'set-session',
]);
});
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']);
});