diff --git a/packages/shared/src/auth/__tests__/mockClient.ts b/packages/shared/src/auth/__tests__/mockClient.ts new file mode 100644 index 0000000..79e4631 --- /dev/null +++ b/packages/shared/src/auth/__tests__/mockClient.ts @@ -0,0 +1,30 @@ +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), + }; +}