mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
88 lines
3.2 KiB
TypeScript
88 lines
3.2 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
createBuildConsumeAnilistSetupTokenFromUrlMainDepsHandler,
|
|
createBuildHandleAnilistSetupProtocolUrlMainDepsHandler,
|
|
createBuildNotifyAnilistSetupMainDepsHandler,
|
|
createBuildRegisterSubminerProtocolClientMainDepsHandler,
|
|
} from './anilist-setup-protocol-main-deps';
|
|
|
|
test('notify anilist setup main deps builder maps callbacks', () => {
|
|
const calls: string[] = [];
|
|
const deps = createBuildNotifyAnilistSetupMainDepsHandler({
|
|
hasMpvClient: () => true,
|
|
showMpvOsd: (message) => calls.push(`osd:${message}`),
|
|
showDesktopNotification: (title) => calls.push(`notify:${title}`),
|
|
logInfo: (message) => calls.push(`log:${message}`),
|
|
})();
|
|
|
|
assert.equal(deps.hasMpvClient(), true);
|
|
deps.showMpvOsd('ok');
|
|
deps.showDesktopNotification('SubMiner', { body: 'x' });
|
|
deps.logInfo('done');
|
|
assert.deepEqual(calls, ['osd:ok', 'notify:SubMiner', 'log:done']);
|
|
});
|
|
|
|
test('consume anilist setup token main deps builder maps callbacks', () => {
|
|
const calls: string[] = [];
|
|
const deps = createBuildConsumeAnilistSetupTokenFromUrlMainDepsHandler({
|
|
consumeAnilistSetupCallbackUrl: () => true,
|
|
saveToken: () => calls.push('save'),
|
|
setCachedToken: () => calls.push('cache'),
|
|
setResolvedState: () => calls.push('resolved'),
|
|
setSetupPageOpened: () => calls.push('opened'),
|
|
onSuccess: () => calls.push('success'),
|
|
closeWindow: () => calls.push('close'),
|
|
})();
|
|
|
|
assert.equal(
|
|
deps.consumeAnilistSetupCallbackUrl({
|
|
rawUrl: 'subminer://anilist-setup',
|
|
saveToken: () => {},
|
|
setCachedToken: () => {},
|
|
setResolvedState: () => {},
|
|
setSetupPageOpened: () => {},
|
|
onSuccess: () => {},
|
|
closeWindow: () => {},
|
|
}),
|
|
true,
|
|
);
|
|
deps.saveToken('token');
|
|
deps.setCachedToken('token');
|
|
deps.setResolvedState(Date.now());
|
|
deps.setSetupPageOpened(true);
|
|
deps.onSuccess();
|
|
deps.closeWindow();
|
|
assert.deepEqual(calls, ['save', 'cache', 'resolved', 'opened', 'success', 'close']);
|
|
});
|
|
|
|
test('handle anilist setup protocol url main deps builder maps callbacks', () => {
|
|
const calls: string[] = [];
|
|
const deps = createBuildHandleAnilistSetupProtocolUrlMainDepsHandler({
|
|
consumeAnilistSetupTokenFromUrl: () => true,
|
|
logWarn: (message) => calls.push(`warn:${message}`),
|
|
})();
|
|
|
|
assert.equal(deps.consumeAnilistSetupTokenFromUrl('subminer://anilist-setup'), true);
|
|
deps.logWarn('missing', null);
|
|
assert.deepEqual(calls, ['warn:missing']);
|
|
});
|
|
|
|
test('register subminer protocol client main deps builder maps callbacks', () => {
|
|
const calls: string[] = [];
|
|
const deps = createBuildRegisterSubminerProtocolClientMainDepsHandler({
|
|
isDefaultApp: () => true,
|
|
getArgv: () => ['electron', 'entry.js'],
|
|
execPath: '/tmp/electron',
|
|
resolvePath: (value) => `/abs/${value}`,
|
|
setAsDefaultProtocolClient: () => true,
|
|
logWarn: (message) => calls.push(`warn:${message}`),
|
|
})();
|
|
|
|
assert.equal(deps.isDefaultApp(), true);
|
|
assert.deepEqual(deps.getArgv(), ['electron', 'entry.js']);
|
|
assert.equal(deps.execPath, '/tmp/electron');
|
|
assert.equal(deps.resolvePath('entry.js'), '/abs/entry.js');
|
|
assert.equal(deps.setAsDefaultProtocolClient('subminer'), true);
|
|
});
|