mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-05-26 12:55:16 -07:00
125 lines
3.7 KiB
TypeScript
125 lines
3.7 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
createCreateAnilistSetupWindowHandler,
|
|
createCreateConfigSettingsWindowHandler,
|
|
createCreateFirstRunSetupWindowHandler,
|
|
createCreateJellyfinSetupWindowHandler,
|
|
} from './setup-window-factory';
|
|
|
|
test('createCreateFirstRunSetupWindowHandler builds first-run setup window', () => {
|
|
let options: Electron.BrowserWindowConstructorOptions | null = null;
|
|
const createSetupWindow = createCreateFirstRunSetupWindowHandler({
|
|
createBrowserWindow: (nextOptions) => {
|
|
options = nextOptions;
|
|
return { id: 'first-run' } as never;
|
|
},
|
|
});
|
|
|
|
assert.deepEqual(createSetupWindow(), { id: 'first-run' });
|
|
assert.deepEqual(options, {
|
|
width: 720,
|
|
height: 860,
|
|
title: 'SubMiner Setup',
|
|
show: true,
|
|
autoHideMenuBar: true,
|
|
resizable: false,
|
|
minimizable: false,
|
|
maximizable: false,
|
|
webPreferences: {
|
|
nodeIntegration: false,
|
|
contextIsolation: true,
|
|
},
|
|
});
|
|
});
|
|
|
|
test('createCreateJellyfinSetupWindowHandler builds jellyfin setup window', () => {
|
|
let options: Electron.BrowserWindowConstructorOptions | null = null;
|
|
const createSetupWindow = createCreateJellyfinSetupWindowHandler({
|
|
createBrowserWindow: (nextOptions) => {
|
|
options = nextOptions;
|
|
return { id: 'jellyfin' } as never;
|
|
},
|
|
});
|
|
|
|
assert.deepEqual(createSetupWindow(), { id: 'jellyfin' });
|
|
assert.deepEqual(options, {
|
|
width: 520,
|
|
height: 560,
|
|
title: 'Jellyfin Setup',
|
|
show: true,
|
|
autoHideMenuBar: true,
|
|
webPreferences: {
|
|
nodeIntegration: false,
|
|
contextIsolation: true,
|
|
},
|
|
});
|
|
});
|
|
|
|
test('createCreateJellyfinSetupWindowHandler wires optional preload bridge', () => {
|
|
const captured: { options?: Electron.BrowserWindowConstructorOptions } = {};
|
|
const createSetupWindow = createCreateJellyfinSetupWindowHandler({
|
|
createBrowserWindow: (nextOptions) => {
|
|
captured.options = nextOptions;
|
|
return { id: 'jellyfin' } as never;
|
|
},
|
|
preloadPath: 'C:\\SubMiner\\dist\\preload-jellyfin-setup.js',
|
|
});
|
|
|
|
assert.deepEqual(createSetupWindow(), { id: 'jellyfin' });
|
|
const options = captured.options;
|
|
assert.ok(options);
|
|
assert.equal(options.webPreferences?.preload, 'C:\\SubMiner\\dist\\preload-jellyfin-setup.js');
|
|
assert.equal(options.webPreferences?.sandbox, true);
|
|
});
|
|
|
|
test('createCreateAnilistSetupWindowHandler builds anilist setup window', () => {
|
|
let options: Electron.BrowserWindowConstructorOptions | null = null;
|
|
const createSetupWindow = createCreateAnilistSetupWindowHandler({
|
|
createBrowserWindow: (nextOptions) => {
|
|
options = nextOptions;
|
|
return { id: 'anilist' } as never;
|
|
},
|
|
});
|
|
|
|
assert.deepEqual(createSetupWindow(), { id: 'anilist' });
|
|
assert.deepEqual(options, {
|
|
width: 1000,
|
|
height: 760,
|
|
title: 'Anilist Setup',
|
|
show: true,
|
|
autoHideMenuBar: true,
|
|
webPreferences: {
|
|
nodeIntegration: false,
|
|
contextIsolation: true,
|
|
},
|
|
});
|
|
});
|
|
|
|
test('createCreateConfigSettingsWindowHandler builds configuration settings window', () => {
|
|
let options: Electron.BrowserWindowConstructorOptions | null = null;
|
|
const createSettingsWindow = createCreateConfigSettingsWindowHandler({
|
|
preloadPath: '/tmp/preload-settings.js',
|
|
createBrowserWindow: (nextOptions) => {
|
|
options = nextOptions;
|
|
return { id: 'config-settings' } as never;
|
|
},
|
|
});
|
|
|
|
assert.deepEqual(createSettingsWindow(), { id: 'config-settings' });
|
|
assert.deepEqual(options, {
|
|
width: 1040,
|
|
height: 760,
|
|
title: 'SubMiner Settings',
|
|
show: true,
|
|
autoHideMenuBar: true,
|
|
resizable: true,
|
|
backgroundColor: '#24273a',
|
|
webPreferences: {
|
|
nodeIntegration: false,
|
|
contextIsolation: true,
|
|
preload: '/tmp/preload-settings.js',
|
|
},
|
|
});
|
|
});
|