diff options
| author | Oskar <oskar@mullvad.net> | 2025-09-03 07:54:45 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-09-05 11:47:01 +0200 |
| commit | 1ffdfcac7a100a55f108a6fce27e93e7a2199a9b (patch) | |
| tree | 8e81abc85da55b74d76017ebbb67bca6c3438b5b | |
| parent | f61e1331a5e0a40e4d351c36f9688cc1ee2d3487 (diff) | |
| download | mullvadvpn-1ffdfcac7a100a55f108a6fce27e93e7a2199a9b.tar.xz mullvadvpn-1ffdfcac7a100a55f108a6fce27e93e7a2199a9b.zip | |
Add utility function to ignore ipc call in mocked tests
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/mocked-utils.ts | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/mocked-utils.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/mocked-utils.ts index 530b2c48a7..84722617c3 100644 --- a/desktop/packages/mullvad-vpn/test/e2e/mocked/mocked-utils.ts +++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/mocked-utils.ts @@ -113,13 +113,29 @@ export const generateExpectIpcCall = (electronApp: ElectronApplication) => { }; }; +export const generateIgnoreIpcCall = (electronApp: ElectronApplication) => { + return async (channel: string): Promise<void> => { + await electronApp.evaluate( + ({ ipcMain }, { channel }) => { + ipcMain.removeHandler(channel); + ipcMain.handle(channel, () => ({ + type: 'success', + value: null, + })); + }, + { channel }, + ); + }; +}; + type IpcMockedTestKey<I extends AnyIpcCall> = I['direction'] extends 'main-to-renderer' ? 'notify' : 'handle'; -type IpcMockedTestExpectKey<I extends AnyIpcCall> = I['direction'] extends 'main-to-renderer' - ? never - : 'expect'; +type IpcMockedTestExtraHandlerKey< + I extends AnyIpcCall, + K, +> = I['direction'] extends 'main-to-renderer' ? never : K; // eslint-disable-next-line @typescript-eslint/no-explicit-any type Async<F extends (...args: any) => any> = (arg: Parameters<F>[0]) => Promise<ReturnType<F>>; @@ -133,7 +149,9 @@ export type IpcMockedTest<S extends Schema> = { [K in keyof S[G]]: { [C in IpcMockedTestKey<S[G][K]>]: IpcMockedTestFn<S[G][K]>; } & { - [C in IpcMockedTestExpectKey<S[G][K]>]: () => Promise<void>; + [C in IpcMockedTestExtraHandlerKey<S[G][K], 'expect'>]: () => Promise<void>; + } & { + [C in IpcMockedTestExtraHandlerKey<S[G][K], 'ignore'>]: () => Promise<void>; } & { eventKey: string; }; @@ -151,6 +169,7 @@ export function createTestIpc(electronApp: ElectronApplication): IpcMockedTest<I handle: <T>(response: T) => generateMockIpcHandle(electronApp)({ channel: event, response }), expect: () => generateExpectIpcCall(electronApp)(event), + ignore: () => generateIgnoreIpcCall(electronApp)(event), }, ]; }); |
