49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
|
|
import { describe, expect, test } from 'bun:test'
|
||
|
|
|
||
|
|
import { resolveLanguageModelID } from '@/app/ai/chat/model'
|
||
|
|
import { normalizeOpenRouterModel } from '@/app/ai/chat/provider-models'
|
||
|
|
|
||
|
|
describe('resolveLanguageModelID', () => {
|
||
|
|
test('uses the selected OpenRouter model when no custom model is configured', () => {
|
||
|
|
expect(
|
||
|
|
resolveLanguageModelID({
|
||
|
|
providerID: 'openrouter',
|
||
|
|
modelID: 'anthropic/claude-sonnet-4.6',
|
||
|
|
customModelID: ''
|
||
|
|
})
|
||
|
|
).toBe('anthropic/claude-sonnet-4.6')
|
||
|
|
})
|
||
|
|
|
||
|
|
test('uses a custom OpenRouter model ID when provided', () => {
|
||
|
|
expect(
|
||
|
|
resolveLanguageModelID({
|
||
|
|
providerID: 'openrouter',
|
||
|
|
modelID: 'anthropic/claude-sonnet-4.6',
|
||
|
|
customModelID: ' meta-llama/llama-3.3-70b-instruct '
|
||
|
|
})
|
||
|
|
).toBe('meta-llama/llama-3.3-70b-instruct')
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
describe('normalizeOpenRouterModel', () => {
|
||
|
|
test('keeps tool-capable OpenRouter models', () => {
|
||
|
|
expect(
|
||
|
|
normalizeOpenRouterModel({
|
||
|
|
id: 'meta-llama/llama-3.3-70b-instruct',
|
||
|
|
name: 'Llama 3.3 70B Instruct',
|
||
|
|
supported_parameters: ['tools']
|
||
|
|
})
|
||
|
|
).toEqual({ id: 'meta-llama/llama-3.3-70b-instruct', name: 'Llama 3.3 70B Instruct' })
|
||
|
|
})
|
||
|
|
|
||
|
|
test('skips OpenRouter models without tool support', () => {
|
||
|
|
expect(
|
||
|
|
normalizeOpenRouterModel({
|
||
|
|
id: 'text-only/model',
|
||
|
|
name: 'Text Only',
|
||
|
|
supported_parameters: []
|
||
|
|
})
|
||
|
|
).toBeNull()
|
||
|
|
})
|
||
|
|
})
|