/** * Testing utilities for @c15t/node-sdk * * These utilities help users mock the C15T client in their tests. * * @example * ```typescript * import { createMockClient, createMockResponse } from '@c15t/node-sdk/testing'; * * const mockClient = createMockClient({ * getSubject: async () => createMockResponse({ id: 'sub_123', consents: [] }), * }); * * // Use mockClient in your tests * const result = await mockClient.getSubject('sub_123'); * expect(result.data?.id).toBe('sub_123'); * ``` */ import type { ResponseContext } from './types'; /** * Creates a mock ResponseContext for testing * * @param data - The data to return in the response * @param options - Optional configuration for the mock response * @returns A ResponseContext object * * @example * ```typescript * const response = createMockResponse({ id: 'sub_123' }); * expect(response.ok).toBe(true); * expect(response.data?.id).toBe('sub_123'); * ``` */ export declare function createMockResponse(data: T, options?: { ok?: boolean; error?: { message: string; status: number; code?: string; details?: Record | null; }; response?: Response; }): ResponseContext; /** * Creates a mock error ResponseContext for testing * * @param error - The error details * @returns A ResponseContext object representing an error * * @example * ```typescript * const response = createMockErrorResponse({ * message: 'Not found', * status: 404, * code: 'NOT_FOUND', * }); * expect(response.ok).toBe(false); * expect(response.error?.status).toBe(404); * ``` */ export declare function createMockErrorResponse(error: { message: string; status: number; code?: string; details?: Record | null; }): ResponseContext; /** * Type for mock method implementations */ export type MockMethodImplementation = (input: TInput) => ResponseContext | Promise>; /** * Type for mock client overrides */ export interface MockClientOverrides { status?: MockMethodImplementation; init?: MockMethodImplementation; checkConsent?: MockMethodImplementation; createSubject?: MockMethodImplementation; getSubject?: MockMethodImplementation; patchSubject?: MockMethodImplementation; listSubjects?: MockMethodImplementation; } /** * Creates a mock C15T client for testing * * @param overrides - Method implementations to override * @returns A mock client object * * @example * ```typescript * const mockClient = createMockClient({ * getSubject: async (id) => createMockResponse({ * id, * externalId: 'user_123', * consents: [], * }), * checkConsent: async () => createMockResponse({ * results: { analytics: { hasConsent: true } }, * }), * }); * * // Use in tests * const result = await mockClient.getSubject('sub_123'); * ``` */ export declare function createMockClient(overrides?: MockClientOverrides): { status: () => Promise>; init: () => Promise>; checkConsent: (query: unknown) => Promise>; createSubject: (input: unknown) => Promise>; getSubject: (id: string) => Promise>; patchSubject: (id: string, input: unknown) => Promise>; listSubjects: (query?: unknown) => Promise>; consent: { check: (query: unknown) => Promise>; }; subjects: { create: (input: unknown) => Promise>; get: (id: string) => Promise>; patch: (id: string, input: unknown) => Promise>; list: (query?: unknown) => Promise>; }; meta: { status: () => Promise>; init: () => Promise>; }; }; /** * Type representing the mock client returned by createMockClient */ export type MockC15TClient = ReturnType;