Skip to content

Commit 1399e84

Browse files
Expand OpenAI model regression coverage
Add data-driven tests around OpenAI and compat model handling, including GPT-5 token parameter selection, mapped model values, and provider boundary behavior. Also extend predicate and model-name conversion coverage across completion, Claude, OpenRouter, and AI/ML model-key groups so future config and mapping regressions fail deterministically.
1 parent db00729 commit 1399e84

File tree

4 files changed

+282
-75
lines changed

4 files changed

+282
-75
lines changed

tests/unit/config/config-predicates.test.mjs

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import { afterEach, beforeEach, describe, test } from 'node:test'
33
import {
44
getNavigatorLanguage,
55
getPreferredLanguageKey,
6+
chatgptApiModelKeys,
7+
gptApiModelKeys,
8+
claudeApiModelKeys,
9+
openRouterApiModelKeys,
10+
aimlApiModelKeys,
611
isUsingAimlApiModel,
712
isUsingAzureOpenAiApiModel,
813
isUsingBingWebModel,
@@ -19,6 +24,7 @@ import {
1924
isUsingMultiModeModel,
2025
isUsingOllamaApiModel,
2126
isUsingOpenAiApiModel,
27+
isUsingGptCompletionApiModel,
2228
isUsingOpenRouterApiModel,
2329
} from '../../../src/config/index.mjs'
2430

@@ -64,19 +70,32 @@ test('getNavigatorLanguage treats zh-Hant locale as zhHant', () => {
6470
})
6571

6672
test('isUsingChatgptApiModel detects chatgpt API models and excludes custom model', () => {
67-
assert.equal(isUsingChatgptApiModel({ modelName: 'chatgptApi4oMini' }), true)
73+
for (const modelName of chatgptApiModelKeys) {
74+
assert.equal(isUsingChatgptApiModel({ modelName }), true)
75+
}
6876
assert.equal(isUsingChatgptApiModel({ modelName: 'customModel' }), false)
6977
})
7078

7179
test('isUsingOpenAiApiModel accepts both chat and completion API model groups', () => {
72-
assert.equal(isUsingOpenAiApiModel({ modelName: 'chatgptApi4oMini' }), true)
73-
assert.equal(isUsingOpenAiApiModel({ modelName: 'gptApiInstruct' }), true)
80+
for (const modelName of chatgptApiModelKeys) {
81+
assert.equal(isUsingOpenAiApiModel({ modelName }), true)
82+
}
83+
for (const modelName of gptApiModelKeys) {
84+
assert.equal(isUsingOpenAiApiModel({ modelName }), true)
85+
}
7486
})
7587

7688
test('isUsingOpenAiApiModel excludes custom model', () => {
7789
assert.equal(isUsingOpenAiApiModel({ modelName: 'customModel' }), false)
7890
})
7991

92+
test('isUsingGptCompletionApiModel accepts all completion API model keys', () => {
93+
for (const modelName of gptApiModelKeys) {
94+
assert.equal(isUsingGptCompletionApiModel({ modelName }), true)
95+
}
96+
assert.equal(isUsingGptCompletionApiModel({ modelName: 'chatgptApi4oMini' }), false)
97+
})
98+
8099
test('isUsingCustomModel works with modelName and apiMode forms', () => {
81100
assert.equal(isUsingCustomModel({ modelName: 'customModel' }), true)
82101

@@ -113,8 +132,9 @@ test('isUsingGeminiWebModel detects bard/gemini web models', () => {
113132
})
114133

115134
test('isUsingClaudeApiModel detects Claude API models', () => {
116-
assert.equal(isUsingClaudeApiModel({ modelName: 'claude37SonnetApi' }), true)
117-
assert.equal(isUsingClaudeApiModel({ modelName: 'claudeOpus4Api' }), true)
135+
for (const modelName of claudeApiModelKeys) {
136+
assert.equal(isUsingClaudeApiModel({ modelName }), true)
137+
}
118138
assert.equal(isUsingClaudeApiModel({ modelName: 'claude2WebFree' }), false)
119139
})
120140

@@ -131,16 +151,16 @@ test('isUsingDeepSeekApiModel detects DeepSeek models', () => {
131151
})
132152

133153
test('isUsingOpenRouterApiModel detects OpenRouter models', () => {
134-
assert.equal(
135-
isUsingOpenRouterApiModel({ modelName: 'openRouter_anthropic_claude_sonnet4' }),
136-
true,
137-
)
138-
assert.equal(isUsingOpenRouterApiModel({ modelName: 'openRouter_openai_o3' }), true)
154+
for (const modelName of openRouterApiModelKeys) {
155+
assert.equal(isUsingOpenRouterApiModel({ modelName }), true)
156+
}
139157
assert.equal(isUsingOpenRouterApiModel({ modelName: 'chatgptApi4oMini' }), false)
140158
})
141159

142160
test('isUsingAimlApiModel detects AI/ML models', () => {
143-
assert.equal(isUsingAimlApiModel({ modelName: 'aiml_claude_3_7_sonnet_20250219' }), true)
161+
for (const modelName of aimlApiModelKeys) {
162+
assert.equal(isUsingAimlApiModel({ modelName }), true)
163+
}
144164
assert.equal(isUsingAimlApiModel({ modelName: 'chatgptApi4oMini' }), false)
145165
})
146166

0 commit comments

Comments
 (0)