31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { vi } from 'vitest';
|
|
import type { AppSupabaseClient } from '../../supabase/client';
|
|
|
|
export interface MockedRpcCall { name: string; params: unknown }
|
|
|
|
export interface MockClient {
|
|
client: AppSupabaseClient;
|
|
rpcCalls: MockedRpcCall[];
|
|
setRpcResponse: (name: string, response: { data?: unknown; error?: unknown }) => void;
|
|
}
|
|
|
|
export function makeMockClient(initialUserId = '11111111-1111-1111-1111-111111111111'): MockClient {
|
|
const rpcCalls: MockedRpcCall[] = [];
|
|
const rpcResponses = new Map<string, { data?: unknown; error?: unknown }>();
|
|
const client = {
|
|
auth: {
|
|
getUser: vi.fn().mockResolvedValue({ data: { user: { id: initialUserId } }, error: null }),
|
|
},
|
|
rpc: vi.fn().mockImplementation((name: string, params: unknown) => {
|
|
rpcCalls.push({ name, params });
|
|
const r = rpcResponses.get(name) ?? { data: null, error: null };
|
|
return Promise.resolve(r);
|
|
}),
|
|
} as unknown as AppSupabaseClient;
|
|
return {
|
|
client,
|
|
rpcCalls,
|
|
setRpcResponse: (name, response) => rpcResponses.set(name, response),
|
|
};
|
|
}
|