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(); 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), }; }