48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
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',
|
|
});
|
|
});
|
|
});
|