2
2
mirror of https://github.com/Llewellynvdm/nativefier.git synced 2024-06-02 21:00:48 +00:00
nativefier/src/options/fields/userAgent.test.ts
Adam Weeden 7a08a2d676
Enable TypeScript strict:true, and more typescript-eslint rules (#1223)
* Catch promise errors better

* Move subFunctions to bottom of createNewWindow

* Use parents when creating child BrowserWindow instances

* Some about:blank pages have an anchor (for some reason)

* Inject browserWindowOptions better

* Interim refactor to MainWindow object

* Split up the window functions/helpers/events some

* Further separate out window functions + tests

* Add a mock for unit testing functions that access electron

* Add unit tests for onWillPreventUnload

* Improve windowEvents tests

* Add the first test for windowHelpers

* Move WebRequest event handling to node

* insertCSS completely under test

* clearAppData completely under test

* Fix contextMenu require bug

* More tests + fixes

* Fix + add to createNewTab tests

* Convert createMainWindow back to func + work out gremlins

* Move setupWindow away from main since its shared

* Make sure contextMenu is handling promises

* Fix issues with fullscreen not working + menu refactor

* Run jest against app/dist so that we can hit app unit tests as well

* Requested PR changes

* Add strict typing; tests currently failing

* Fix failing unit tests

* Add some more eslint warnings and fixes

* More eslint fixes

* Strict typing on (still issues with the lib dir)

* Fix the package.json import/require

* Fix some funky test errors

* Warn -> Error for eslint rules

* @ts-ignore -> @ts-expect-error

* Add back the ext code I removed
2021-06-15 22:20:49 -04:00

91 lines
2.8 KiB
TypeScript

import { getChromeVersionForElectronVersion } from '../../infer/browsers/inferChromeVersion';
import { getLatestFirefoxVersion } from '../../infer/browsers/inferFirefoxVersion';
import { getLatestSafariVersion } from '../../infer/browsers/inferSafariVersion';
import { userAgent } from './userAgent';
jest.mock('./../../infer/browsers/inferChromeVersion');
jest.mock('./../../infer/browsers/inferFirefoxVersion');
jest.mock('./../../infer/browsers/inferSafariVersion');
test('when a userAgent parameter is passed', async () => {
const params = {
packager: {},
nativefier: { userAgent: 'valid user agent' },
};
await expect(userAgent(params)).resolves.toBeUndefined();
});
test('no userAgent parameter is passed', async () => {
const params = {
packager: { platform: 'mac' },
nativefier: {},
};
await expect(userAgent(params)).resolves.toBeUndefined();
});
test('edge userAgent parameter is passed', async () => {
(getChromeVersionForElectronVersion as jest.Mock).mockImplementationOnce(() =>
Promise.resolve('99.0.0'),
);
const params = {
packager: { platform: 'darwin' },
nativefier: { userAgent: 'edge' },
};
const parsedUserAgent = await userAgent(params);
expect(parsedUserAgent).not.toBe(params.nativefier.userAgent);
expect(parsedUserAgent).toContain('Edg/99.0.0');
});
test('firefox userAgent parameter is passed', async () => {
(getLatestFirefoxVersion as jest.Mock).mockImplementationOnce(() =>
Promise.resolve('100.0.0'),
);
const params = {
packager: { platform: 'win32' },
nativefier: { userAgent: 'firefox' },
};
const parsedUserAgent = await userAgent(params);
expect(parsedUserAgent).not.toBe(params.nativefier.userAgent);
expect(parsedUserAgent).toContain('Firefox/100.0.0');
});
test('safari userAgent parameter is passed', async () => {
(getLatestSafariVersion as jest.Mock).mockImplementationOnce(() =>
Promise.resolve({
majorVersion: 101,
version: '101.0.0',
webkitVersion: '600.0.0.0',
}),
);
const params = {
packager: { platform: 'linux' },
nativefier: { userAgent: 'safari' },
};
const parsedUserAgent = await userAgent(params);
expect(parsedUserAgent).not.toBe(params.nativefier.userAgent);
expect(parsedUserAgent).toContain('Version/101.0.0 Safari');
});
test('short userAgent parameter is passed with an electronVersion', async () => {
(getChromeVersionForElectronVersion as jest.Mock).mockImplementationOnce(() =>
Promise.resolve('102.0.0'),
);
const params = {
packager: { electronVersion: '12.0.0', platform: 'darwin' },
nativefier: { userAgent: 'edge' },
};
const parsedUserAgent = await userAgent(params);
expect(parsedUserAgent).not.toBe(params.nativefier.userAgent);
expect(parsedUserAgent).toContain('102.0.0');
expect(getChromeVersionForElectronVersion).toHaveBeenCalledWith('12.0.0');
});