insomnia/packages/insomnia-app/app/__mocks__/electron.ts
Dimitri Mitropoulos 9faf0b3fbb
sanitize all electron.shell.openExternal calls (#3336)
* sanitize all electron.shell.openExternal calls

* adds lint rule to disallow future usage of `openExternal`

* updates to use URL constructor per review feedback
2021-05-12 16:20:52 -04:00

81 lines
1.4 KiB
TypeScript

import mkdirp from 'mkdirp';
import { EventEmitter } from 'events';
import os from 'os';
import path from 'path';
const RANDOM_STRING = Math.random().toString().replace('.', '');
const remote = {
app: {
getPath(name) {
const dir = path.join(os.tmpdir(), `insomnia-tests-${RANDOM_STRING}`, name);
mkdirp.sync(dir);
return dir;
},
getLocale() {
return 'en-US';
},
},
net: {
request() {
const req = new EventEmitter();
// @ts-expect-error -- TSCONVERSION appears to be genuine
req.end = function() {};
return req;
},
},
BrowserWindow: {
getAllWindows() {
return [];
},
getFocusedWindow() {
return {
getContentBounds() {
return {
width: 1900,
height: 1060,
};
},
};
},
},
screen: {
getPrimaryDisplay() {
return {
workAreaSize: {
width: 1920,
height: 1080,
},
};
},
},
};
const electron = {
...remote,
remote,
ipcMain: {
on: jest.fn(),
once() {},
},
ipcRenderer: {
on: jest.fn(),
removeAllListeners: jest.fn(),
once() {},
send: jest.fn(),
},
shell: {
openExternal: jest.fn(),
},
};
// WARNING: changing this to `export default` will break the mock and be incredibly hard to debug. Ask me how I know.
module.exports = electron;