import { describe, expect, it } from 'vitest'; import { DEFAULT_DOUBAO_MODEL, DEFAULT_LLM_PROVIDER, normalizeLlmProvider, resolveLlmProviderConfig, } from './llmProvider'; describe('llmProvider', () => { it('defaults to doubao when the incoming provider is missing', () => { expect(normalizeLlmProvider(undefined)).toBe(DEFAULT_LLM_PROVIDER); }); it('normalizes a supported provider name', () => { expect(normalizeLlmProvider('Gemini')).toBe('gemini'); expect(normalizeLlmProvider('doubao')).toBe('doubao'); }); it('rejects unsupported providers', () => { expect(() => normalizeLlmProvider('gpt')).toThrow(/Unsupported LLM provider/); }); it('returns the selected doubao provider config from env', () => { expect( resolveLlmProviderConfig('doubao', { ARK_API_KEY: 'ark-key', }), ).toEqual({ provider: 'doubao', apiKey: 'ark-key', model: DEFAULT_DOUBAO_MODEL, baseUrl: 'https://ark.cn-beijing.volces.com/api/v3/responses', }); }); it('returns the selected gemini provider config from env', () => { expect( resolveLlmProviderConfig('gemini', { GEMINI_API_KEY: 'gemini-key', }), ).toEqual({ provider: 'gemini', apiKey: 'gemini-key', model: 'gemini-2.5-flash', }); }); });