{"_id":"@brimdata/electron-mock-ipc","_rev":"1-eaf6f40dc17b767cc48e8b72aab2dbc2","name":"@brimdata/electron-mock-ipc","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@brimdata/electron-mock-ipc","version":"0.0.1","description":"Mock Electron's ipcMain and ipcRenderer","main":"lib/src/index.js","typings":"./lib/src/index.d.ts","scripts":{"build":"tsc -p ./","lint":"eslint --ext .js,.ts src test","test":"NODE_ENV=test jest -u --maxWorkers=3"},"repository":{"type":"git","url":"git+ssh://git@github.com/h3poteto/electron-mock-ipc.git"},"keywords":["electron","ipc","ipcMain","ipcRenderer"],"author":{"name":"h3poteto"},"license":"MIT","jest":{"moduleFileExtensions":["ts","js"],"moduleNameMapper":{"^@/(.+)":"<rootDir>/src/$1","^~/(.+)":"<rootDir>/$1"},"testMatch":["**/test/**/*.spec.ts"],"preset":"ts-jest/presets/default","transform":{"^.+\\.(ts|tsx)$":"ts-jest"},"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}}},"peerDependencies":{"electron":">=6.0.0"},"devDependencies":{"@types/core-js":"^2.5.2","@types/jest":"^26.0.4","@types/node":"^14.14.10","@typescript-eslint/eslint-plugin":"^1.11.0","@typescript-eslint/parser":"^1.11.0","eslint":"^5.16.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^12.0.0","eslint-plugin-import":"^2.17.3","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.0","eslint-plugin-promise":"^4.1.1","eslint-plugin-standard":"^5.0.0","jest":"^25.2.4","prettier":"^2.0.2","ts-jest":"^25.3.0","typescript":"^3.5.2","electron":"^10.1.0"},"gitHead":"31127e930912601c74379e87149338de8565fa06","bugs":{"url":"https://github.com/h3poteto/electron-mock-ipc/issues"},"homepage":"https://github.com/h3poteto/electron-mock-ipc#readme","_id":"@brimdata/electron-mock-ipc@0.0.1","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-l/D9agbN3tZbuV9lj6QqiqP0owc8uDmcFFXqNL3YWsWLmNsDa7o4bc0C1k2B9kaIljzry259zX3vIMjYWv8uHA==","shasum":"5c86cf0841f8c9c54676c11a04b46f16cbfcaee9","tarball":"https://registry.npmjs.org/@brimdata/electron-mock-ipc/-/electron-mock-ipc-0.0.1.tgz","fileCount":18,"unpackedSize":41982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg92rGCRA9TVsSAnZWagAAZW8P/jAwsbxJWxVoeLNpRfhT\nSt+khuVp7zN7KRUmv5vYo1nU8kFJs87zTL7A6RHoUK18ireWbDfAMu4xPMZZ\nV5NoK9/ajO3fJcG5U7NlORUCtWoZYrDSittbz1I0KClH3mR/vRQmI4Q6cRLB\nT8YCXd/mw8wUky2cU+Ky0fa5O4rKFK2WOiBkhSLgUXi7LUdtwiNsGSCQ9q6G\nWfTrX4MdseWST68sNcihK6Uz4pEiZEg1kBTC6U6ilXLfykADuJDBeQO+aOJw\nR3VbsLngqD28j+cvslnIBl6mL7QRWZ9RiUXsCbmyGLkwtj6gcapJeQDXhM0q\njqVa7SAutA+Y2qR9GWvs3Fqx2ueJ+gvX/EM0V7+2MuI+p5AA+1nRmzDBPv4X\nG7wN27oUijfQ2s0gJmXqZ8g1Ms4s1F1iXKf+2Yr9m8ePD4Iwi8ZSRSEDuGBj\nlFAqE9gZOqLtktnk/ZLlj9ofVIndhNktvoIcGYW8/hv4joqgDHCSYj87Sk+3\nbO7xiGA80g8JMgwa1osKviwH8XLS/8vPcmbRsnzeW6PawMHUjgthmIJHQQjq\nzmccQGbT+XFkLKSronI3TTdpcibwzlpWhsaxzKYhQzItlIVGo5Sn+wHqomSV\nj4fcrxIEb3I5u7xIlaLHs+qTw9QoKW+F6zQnFsxOTCv4u3Ymfgn2ljRoktau\nQwg0\r\n=DZL2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJpBKQun1E8mr81DUx24oeITX3grDILCoxwn+D72ViIgIhALLGWr31L6B+xo1RlQidlTmLkEEcdd4wd+RHnK2gMJ21"}]},"_npmUser":{"name":"jkerr","email":"kerr@looky.cloud"},"directories":{},"maintainers":[{"name":"jkerr","email":"kerr@looky.cloud"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/electron-mock-ipc_0.0.1_1626827462261_0.3760199162699769"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-21T00:31:02.210Z","0.0.1":"2021-07-21T00:31:02.463Z","modified":"2022-04-04T20:41:39.913Z"},"maintainers":[{"name":"jkerr","email":"kerr@looky.cloud"}],"description":"Mock Electron's ipcMain and ipcRenderer","homepage":"https://github.com/h3poteto/electron-mock-ipc#readme","keywords":["electron","ipc","ipcMain","ipcRenderer"],"repository":{"type":"git","url":"git+ssh://git@github.com/h3poteto/electron-mock-ipc.git"},"author":{"name":"h3poteto"},"bugs":{"url":"https://github.com/h3poteto/electron-mock-ipc/issues"},"license":"MIT","readme":"# ElectronMockIPC\n[![Test](https://github.com/h3poteto/electron-mock-ipc/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/h3poteto/electron-mock-ipc/actions/workflows/test.yml)\n[![npm](https://img.shields.io/npm/v/electron-mock-ipc.svg)](https://www.npmjs.com/package/electron-mock-ipc)\n[![GitHub release](https://img.shields.io/github/release/h3poteto/electron-mock-ipc.svg)](https://github.com/h3poteto/electron-mock-ipc/releases)\n[![npm](https://img.shields.io/npm/dm/electron-mock-ipc)](https://www.npmjs.com/package/electron-mock-ipc)\n[![NPM](https://img.shields.io/npm/l/electron-mock-ipc)](/LICENSE.txt)\n\nThis is a mock library for ipcMain and ipcRenderer in Electron. They communicate with each other, so you can mock ipc methods in your tests without changing your production code.\n\n\n## Install\n\n```\n$ npm install --save-dev electron-mock-ipc\n```\n\nor\n\n```\n$ yarn add --dev electron-mock-ipc\n```\n\n## Usage\nThis library can use in jest, and mocha.\n\nAt first, please create a file to mock:\n\n```typescript\nimport createIPCMock from 'electron-mock-ipc'\n\nconst mocked = createIPCMock()\nconst ipcMain = mocked.ipcMain\nconst ipcRenderer = mocked.ipcRenderer\nexport { ipcMain, ipcRenderer }\n```\nand save it as `spec/mock/electron-mock.ts`.\n\n\n### Jest\nIn Jest, please replace electron object using `moduleNameMapper`. Please override it in `package.json`.\n\n```json\n  \"jest\": {\n    \"moduleNameMapper\": {\n      \"^electron$\": \"<rootDir>/spec/mock/electron-mock.ts\"\n    }\n  }\n```\n\nAfter that, all ipc objects are mocked, so you can write tests as below.\n\n```typescript\nimport { IpcMainEvent } from 'electron'\nimport { ipcMain } from '~/spec/mock/electron-mock'\nimport { targetMethod } from '~/src/target'\n\ndescribe('your test', () => {\n  it('should be received', async () => {\n    ipcMain.once('test-event', (event: IpcMainEvent, obj: string) => {\n      event.sender.send('response-test-event', 'response' + obj)\n    })\n    const res = await targetMethod()\n    expect(res).toEqual('responsehoge')\n  })\n})\n```\n\n### Mocha\nIn Mocha, you can not inject a mock object easily. So, please inject the ipcRenderer object in `preload.js`, and use `preload.js` to load electron.\n\n```javascript\nimport { ipcRenderer } from 'electron'\nimport { ipcRenderer as mock } from '~/spec/mock/electron-mock'\n\nif (process.env.NODE_ENV === 'test') {\n  global.ipcRenderer = mock\n} else {\n  global.ipcRenderer = ipcRenderer\n}\n```\n\n`preload.js` is used to disable nodeIntegration, please refer [here](https://stackoverflow.com/questions/52236641/electron-ipc-and-nodeintegration).\n\n\nAnd write test.\n\n```typescript\nimport { IpcMainEvent } from 'electron'\nimport { targetMethod } from '~/src/target'\nimport { ipcMain } from '~/spec/mock/electron'\nimport { describe, it } from 'mocha'\nimport { expect } from 'chai'\n\ndescribe('your test', () => {\n  it('should be received', async () => {\n    ipcMain.once('test-event', (event: IpcMainEvent, obj: string) => {\n      event.sender.send('response-test-event', 'response' + obj)\n    })\n    const res = await targetMethod()\n    expect(res).to.equal('responsehoge')\n  })\n})\n```\n\n## Example\nI prepared a test example, please refer [here](example).\n\n## License\n\nThe software is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md"}