Files
waooplus/tests/unit/llm/reasoning-capability.test.ts
2026-03-08 17:10:06 +08:00

42 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
isLikelyOpenAIReasoningModel,
shouldUseOpenAIReasoningProviderOptions,
} from '@/lib/llm/reasoning-capability'
describe('llm/reasoning-capability', () => {
it('identifies likely OpenAI reasoning model ids', () => {
expect(isLikelyOpenAIReasoningModel('o3-mini')).toBe(true)
expect(isLikelyOpenAIReasoningModel('gpt-5.2')).toBe(true)
expect(isLikelyOpenAIReasoningModel('claude-sonnet-4-6')).toBe(false)
})
it('enables reasoning provider options for native openai provider', () => {
expect(shouldUseOpenAIReasoningProviderOptions({
providerKey: 'openai',
modelId: 'gpt-5.2',
})).toBe(true)
})
it('enables reasoning provider options for openai-compatible only when apiMode is openai-official', () => {
expect(shouldUseOpenAIReasoningProviderOptions({
providerKey: 'openai-compatible',
providerApiMode: 'openai-official',
modelId: 'gpt-5.2',
})).toBe(true)
expect(shouldUseOpenAIReasoningProviderOptions({
providerKey: 'openai-compatible',
modelId: 'gpt-5.2',
})).toBe(false)
})
it('disables reasoning provider options for non-openai models even on openai-compatible gateways', () => {
expect(shouldUseOpenAIReasoningProviderOptions({
providerKey: 'openai-compatible',
providerApiMode: 'openai-official',
modelId: 'claude-sonnet-4-6',
})).toBe(false)
})
})