insomnia/packages/insomnia-app/app/__mocks__/electron.ts
Jason Blalock 8db87df17c
[Feature/Plugin API] Add clipboard wrapper methods to context app (#3977)
Co-authored-by: Jason Blalock <jasonblalock@users.noreply.github.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
Co-authored-by: Opender Singh <opender94@gmail.com>
2021-09-01 17:40:11 +00:00

86 lines
1.5 KiB
TypeScript

import { EventEmitter } from 'events';
import mkdirp from 'mkdirp';
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(),
},
clipboard: {
writeText: jest.fn(),
readText: jest.fn(),
clear: 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;