mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-09-27 20:09:03 +00:00
169 lines
4.9 KiB
JavaScript
169 lines
4.9 KiB
JavaScript
|
import mainWindowHelpers from './mainWindowHelpers';
|
||
|
|
||
|
const { onNewWindowHelper } = mainWindowHelpers;
|
||
|
|
||
|
const originalUrl = 'https://medium.com/';
|
||
|
const internalUrl = 'https://medium.com/topics/technology';
|
||
|
const externalUrl = 'https://www.wikipedia.org/wiki/Electron';
|
||
|
const foregroundDisposition = 'foreground-tab';
|
||
|
const backgroundDisposition = 'background-tab';
|
||
|
|
||
|
const nativeTabsSupported = () => true;
|
||
|
const nativeTabsNotSupported = () => false;
|
||
|
|
||
|
test('internal urls should not be handled', () => {
|
||
|
const preventDefault = jest.fn();
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
internalUrl,
|
||
|
undefined,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsNotSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(0);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(0);
|
||
|
expect(preventDefault.mock.calls.length).toBe(0);
|
||
|
});
|
||
|
|
||
|
test('external urls should be opened externally', () => {
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
const preventDefault = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
externalUrl,
|
||
|
undefined,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsNotSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(1);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(0);
|
||
|
expect(preventDefault.mock.calls.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
test('tab disposition should be ignored if tabs are not enabled', () => {
|
||
|
const preventDefault = jest.fn();
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
internalUrl,
|
||
|
foregroundDisposition,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsNotSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(0);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(0);
|
||
|
expect(preventDefault.mock.calls.length).toBe(0);
|
||
|
});
|
||
|
|
||
|
test('tab disposition should be ignored if url is external', () => {
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
const preventDefault = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
externalUrl,
|
||
|
foregroundDisposition,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(1);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(0);
|
||
|
expect(preventDefault.mock.calls.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
test('foreground tabs with internal urls should be opened in the foreground', () => {
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
const preventDefault = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
internalUrl,
|
||
|
foregroundDisposition,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(0);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(1);
|
||
|
expect(createNewTab.mock.calls[0][1]).toBe(true);
|
||
|
expect(preventDefault.mock.calls.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
test('background tabs with internal urls should be opened in background tabs', () => {
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
const preventDefault = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
internalUrl,
|
||
|
backgroundDisposition,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(0);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(0);
|
||
|
expect(createNewTab.mock.calls.length).toBe(1);
|
||
|
expect(createNewTab.mock.calls[0][1]).toBe(false);
|
||
|
expect(preventDefault.mock.calls.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
test('about:blank urls should be handled', () => {
|
||
|
const preventDefault = jest.fn();
|
||
|
const openExternal = jest.fn();
|
||
|
const createAboutBlankWindow = jest.fn();
|
||
|
const createNewTab = jest.fn();
|
||
|
onNewWindowHelper(
|
||
|
'about:blank',
|
||
|
undefined,
|
||
|
originalUrl,
|
||
|
undefined,
|
||
|
preventDefault,
|
||
|
openExternal,
|
||
|
createAboutBlankWindow,
|
||
|
nativeTabsNotSupported,
|
||
|
createNewTab,
|
||
|
);
|
||
|
expect(openExternal.mock.calls.length).toBe(0);
|
||
|
expect(createAboutBlankWindow.mock.calls.length).toBe(1);
|
||
|
expect(createNewTab.mock.calls.length).toBe(0);
|
||
|
expect(preventDefault.mock.calls.length).toBe(1);
|
||
|
});
|