Nativefier/src/options/optionsMain.test.ts

126 lines
3.5 KiB
TypeScript

import { getOptions, normalizePlatform } from './optionsMain';
import * as asyncConfig from './asyncConfig';
import { inferPlatform } from '../infer/inferOs';
import { AppOptions, RawOptions } from '../../shared/src/options/model';
let asyncConfigMock: jest.SpyInstance;
const mockedAsyncConfig: AppOptions = {
nativefier: {
accessibilityPrompt: false,
alwaysOnTop: false,
backgroundColor: undefined,
basicAuthPassword: undefined,
basicAuthUsername: undefined,
blockExternalUrls: false,
bookmarksMenu: undefined,
bounce: false,
browserwindowOptions: undefined,
clearCache: false,
counter: false,
crashReporter: undefined,
disableContextMenu: false,
disableDevTools: false,
disableGpu: false,
disableOldBuildWarning: false,
diskCacheSize: undefined,
enableEs3Apis: false,
fastQuit: true,
fileDownloadOptions: undefined,
flashPluginDir: undefined,
fullScreen: false,
globalShortcuts: undefined,
height: undefined,
hideWindowFrame: false,
ignoreCertificate: false,
ignoreGpuBlacklist: false,
inject: [],
insecure: false,
internalUrls: undefined,
maximize: false,
maxHeight: undefined,
minWidth: undefined,
minHeight: undefined,
maxWidth: undefined,
nativefierVersion: '1.0.0',
processEnvs: undefined,
proxyRules: undefined,
showMenuBar: false,
singleInstance: false,
strictInternalUrls: false,
titleBarStyle: undefined,
tray: 'false',
userAgent: undefined,
userAgentHonest: false,
verbose: false,
versionString: '1.0.0',
width: undefined,
widevine: false,
x: undefined,
y: undefined,
zoom: 1,
},
packager: {
arch: process.arch,
dir: '',
platform: process.platform,
portable: false,
targetUrl: '',
upgrade: false,
},
};
beforeAll(() => {
asyncConfigMock = jest
.spyOn(asyncConfig, 'asyncConfig')
.mockResolvedValue(mockedAsyncConfig);
});
test('it should call the async config', async () => {
const params: RawOptions = {
targetUrl: 'https://example.com/',
tray: 'false',
};
const result = await getOptions(params);
expect(asyncConfigMock).toHaveBeenCalledWith(
expect.objectContaining({
packager: expect.anything() as AppOptions['packager'],
nativefier: expect.anything() as AppOptions['nativefier'],
}),
);
expect(result.packager.targetUrl).toEqual(params.targetUrl);
});
test('it should set the accessibility prompt option to true by default', async () => {
const params: RawOptions = {
targetUrl: 'https://example.com/',
tray: 'false',
};
const result = await getOptions(params);
expect(asyncConfigMock).toHaveBeenCalledWith(
expect.objectContaining({
nativefier: expect.objectContaining({
accessibilityPrompt: true,
}) as AppOptions['nativefier'],
}),
);
expect(result.nativefier.accessibilityPrompt).toEqual(true);
});
test.each([
{ platform: 'darwin', expectedPlatform: 'darwin' },
{ platform: 'mAc', expectedPlatform: 'darwin' },
{ platform: 'osx', expectedPlatform: 'darwin' },
{ platform: 'liNux', expectedPlatform: 'linux' },
{ platform: 'mas', expectedPlatform: 'mas' },
{ platform: 'WIN32', expectedPlatform: 'win32' },
{ platform: 'windows', expectedPlatform: 'win32' },
{},
])('it should be able to normalize the platform %s', (platformOptions) => {
if (!platformOptions.expectedPlatform) {
platformOptions.expectedPlatform = inferPlatform();
}
expect(normalizePlatform(platformOptions.platform)).toBe(
platformOptions.expectedPlatform,
);
});