Files
jellytau/src/lib/stores/__mocks__/tauri.ts
T
dtourolle e8e37649fa
🏗️ Build and Test JellyTau / Run Tests (push) Failing after 18s
🏗️ Build and Test JellyTau / Build Android APK (push) Has been skipped
Traceability Validation / Check Requirement Traces (push) Failing after 2s
Many improvemtns and fixes related to decoupling of svelte and rust on android.
2026-02-28 19:50:47 +01:00

118 lines
2.7 KiB
TypeScript

/**
* Mock implementation of Tauri invoke for testing
*/
export interface InvokeCall {
command: string;
args: Record<string, any>;
}
let invokeHistory: InvokeCall[] = [];
let invokeResponses: Map<string, any> = new Map();
/**
* Mock invoke function that captures calls
*/
export const mockInvoke = async (
command: string,
args?: Record<string, any>
): Promise<any> => {
const callArgs = args || {};
invokeHistory.push({ command, args: callArgs });
// Return mock response if set
const response = invokeResponses.get(command);
if (response !== undefined) {
if (response instanceof Error) {
throw response;
}
return response;
}
// Default success response
return { success: true };
};
/**
* Set a mock response for a command
*/
export const setMockResponse = (command: string, response: any): void => {
invokeResponses.set(command, response);
};
/**
* Get all invoke calls made during test
*/
export const getInvokeCalls = (): InvokeCall[] => {
return [...invokeHistory];
};
/**
* Get calls for a specific command
*/
export const getInvokeCalls_ForCommand = (command: string): InvokeCall[] => {
return invokeHistory.filter((call) => call.command === command);
};
/**
* Get the last invoke call
*/
export const getLastInvokeCall = (): InvokeCall | undefined => {
return invokeHistory[invokeHistory.length - 1];
};
/**
* Clear invoke history
*/
export const clearInvokeHistory = (): void => {
invokeHistory = [];
invokeResponses.clear();
};
/**
* Verify a command was called with expected parameters
*/
export const expectInvokeCall = (
command: string,
expectedArgs: Record<string, any>
): void => {
const calls = getInvokeCalls_ForCommand(command);
if (calls.length === 0) {
throw new Error(`Command "${command}" was never called`);
}
const lastCall = calls[calls.length - 1];
// Deep equality check
for (const [key, expectedValue] of Object.entries(expectedArgs)) {
const actualValue = lastCall.args[key];
if (JSON.stringify(actualValue) !== JSON.stringify(expectedValue)) {
throw new Error(
`Parameter "${key}" mismatch:\n` +
` Expected: ${JSON.stringify(expectedValue)}\n` +
` Actual: ${JSON.stringify(actualValue)}`
);
}
}
};
/**
* Helper to get parameter value from invoke calls
*/
export const getInvokeParameter = (
command: string,
paramName: string,
callIndex = -1 // -1 = last call
): any => {
const calls = getInvokeCalls_ForCommand(command);
if (calls.length === 0) {
throw new Error(`Command "${command}" was never called`);
}
const targetCall = callIndex === -1 ? calls[calls.length - 1] : calls[callIndex];
return targetCall.args[paramName];
};