From b54fe0b56daa1b1f8f007575cca14b5a85da3027 Mon Sep 17 00:00:00 2001 From: byGalax Date: Fri, 15 May 2026 22:07:53 +0200 Subject: [PATCH] test(shared): add mock supabase client helper for auth unit tests --- .../shared/src/auth/__tests__/mockClient.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 packages/shared/src/auth/__tests__/mockClient.ts 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), + }; +}