summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-09-03 07:54:45 +0200
committerOskar <oskar@mullvad.net>2025-09-05 11:47:01 +0200
commit1ffdfcac7a100a55f108a6fce27e93e7a2199a9b (patch)
tree8e81abc85da55b74d76017ebbb67bca6c3438b5b
parentf61e1331a5e0a40e4d351c36f9688cc1ee2d3487 (diff)
downloadmullvadvpn-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.ts27
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),
},
];
});