/** * Mock Context Factory * * Utilities for creating test contexts with sensible defaults. */ import type { TestContext } from "@wavespec/types"; /** * Creates a test context with smart defaults * * This utility makes it easy to create test contexts for adapter testing * without manually specifying every field. All fields can be overridden. * * @param overrides - Partial context to override defaults * @returns Complete TestContext with defaults filled in * * @example Basic usage * ```typescript * const ctx = createMockContext(); * // Returns: { mode: 'live', timeout: 60000, isolation: 'per_suite' } * ``` * * @example Override specific fields * ```typescript * const ctx = createMockContext({ * mode: 'replay', * timeout: 30000, * cassettePath: './cassettes/test.json' * }); * ``` * * @example With discovery cache * ```typescript * const mockCache: DiscoveryCache = { * getTools: async () => [{ name: 'add' }], * getPrompts: async () => [], * getResources: async () => [] * }; * * const ctx = createMockContext({ * discoveryCache: mockCache * }); * ``` */ export function createMockContext( overrides: Partial = {}, ): TestContext & { adapterConfig?: any } { return { mode: overrides.mode ?? "live", timeout: overrides.timeout ?? 60000, isolation: overrides.isolation ?? "per_suite", ci: overrides.ci, cassettePath: overrides.cassettePath, replayStrict: overrides.replayStrict, discoveryCache: overrides.discoveryCache, server: overrides.server, snapshotDir: overrides.snapshotDir, contractDir: overrides.contractDir, updateSnapshots: overrides.updateSnapshots, adapterConfig: overrides.adapterConfig, }; }