diff --git a/src/__tests__/electron.js b/src/__tests__/electron.js index 8f6e2d3b..0ec96dfc 100644 --- a/src/__tests__/electron.js +++ b/src/__tests__/electron.js @@ -84,13 +84,21 @@ const mockElectronInstance = ({...overriddenProps} = {}) => { }, ipcMain: { listeners: {}, - emit: jest.fn(), - handle: jest.fn((eventName, func) => { - instance.ipcMain.listeners[eventName] = func; - }), - on: jest.fn((eventName, func) => { + _listen: (eventName, func) => { + if (instance.ipcMain.listeners[eventName]) { + const oldFunc = instance.ipcMain.listeners[eventName]; + const newFunc = func; + func = (event, args) => { + oldFunc(event, args); + newFunc(event, args); + }; + } instance.ipcMain.listeners[eventName] = func; - }), + }, + emit: jest.fn(), + handle: jest.fn((eventName, func) => instance.ipcMain._listen(eventName, func)), + on: jest.fn((eventName, func) => instance.ipcMain._listen(eventName, func)), + once: jest.fn((eventName, func) => instance.ipcMain._listen(eventName, func)), removeHandler: jest.fn(eventName => { delete instance.ipcMain.listeners[eventName]; }) diff --git a/src/chrome-tabs/__tests__/index.test.js b/src/chrome-tabs/__tests__/index.test.js index 7e11e3b4..9bd516f0 100644 --- a/src/chrome-tabs/__tests__/index.test.js +++ b/src/chrome-tabs/__tests__/index.test.js @@ -45,8 +45,9 @@ describe('Chrome Tabs Module module test suite', () => { resolveSend = resolve; }); browserViewInstance.webContents.send = jest.fn(() => resolveSend(true)); - // When chromeTabs.newTabContainer(); + // When + require('electron').ipcMain.listeners.tabsReady(); // Then await expect(isSent).resolves.toBe(true); expect(browserViewInstance.webContents.send).toHaveBeenCalledWith('electronimNewVersionAvailable', true); diff --git a/src/chrome-tabs/index.js b/src/chrome-tabs/index.js index 86b5a5b4..24ce66b4 100644 --- a/src/chrome-tabs/index.js +++ b/src/chrome-tabs/index.js @@ -67,7 +67,7 @@ const newTabContainer = () => { tabContainer.webContents.loadURL(`file://${__dirname}/index.html`, {extraHeaders: 'pragma: no-cache\nCache-control: no-cache'}); tabContainer.webContents.on('context-menu', handleContextMenu); - checkForUpdates(tabContainer.webContents); + eventBus.once(APP_EVENTS.tabsReady, () => checkForUpdates(tabContainer.webContents)); setInterval(() => checkForUpdates(tabContainer.webContents), 1000 * 60 * 30).unref(); return tabContainer; };