test(openrouter): clarify generic nested slug normalization

This commit is contained in:
SebastianBoehler 2026-03-17 10:08:17 +01:00
parent bc187b0fa5
commit d456f5d5a4

View file

@ -561,26 +561,68 @@ func TestProviderChat_AcceptsNumericOptionTypes(t *testing.T) {
}
func TestNormalizeModel_UsesAPIBase(t *testing.T) {
if got := normalizeModel("deepseek/deepseek-chat", "https://api.deepseek.com/v1"); got != "deepseek-chat" {
t.Fatalf("normalizeModel(deepseek) = %q, want %q", got, "deepseek-chat")
tests := []struct {
name string
model string
apiBase string
want string
}{
{
name: "strips deepseek transport prefix",
model: "deepseek/deepseek-chat",
apiBase: "https://api.deepseek.com/v1",
want: "deepseek-chat",
},
{
name: "preserves openrouter auto shorthand",
model: "openrouter/auto",
apiBase: "https://openrouter.ai/api/v1",
want: "openrouter/auto",
},
{
name: "preserves openrouter free shorthand",
model: "openrouter/free",
apiBase: "https://openrouter.ai/api/v1",
want: "openrouter/free",
},
{
name: "strips openrouter transport prefix for nested vendor model",
model: "openrouter/openai/gpt-5.4",
apiBase: "https://openrouter.ai/api/v1",
want: "openai/gpt-5.4",
},
{
name: "strips openrouter transport prefix for any nested provider path",
model: "openrouter/stepfun/step-3.5-flash:free",
apiBase: "https://openrouter.ai/api/v1",
want: "stepfun/step-3.5-flash:free",
},
{
name: "strips openrouter transport prefix for other nested vendor model",
model: "openrouter/minimax/minimax-m2.5",
apiBase: "https://openrouter.ai/api/v1",
want: "minimax/minimax-m2.5",
},
{
name: "strips vivgrid transport prefix",
model: "vivgrid/managed",
apiBase: "https://api.vivgrid.com/v1",
want: "managed",
},
{
name: "strips vivgrid auto alias",
model: "vivgrid/auto",
apiBase: "https://api.vivgrid.com/v1",
want: "auto",
},
}
if got := normalizeModel("openrouter/auto", "https://openrouter.ai/api/v1"); got != "openrouter/auto" {
t.Fatalf("normalizeModel(openrouter) = %q, want %q", got, "openrouter/auto")
}
if got := normalizeModel("openrouter/free", "https://openrouter.ai/api/v1"); got != "openrouter/free" {
t.Fatalf("normalizeModel(openrouter free) = %q, want %q", got, "openrouter/free")
}
if got := normalizeModel("openrouter/openai/gpt-5.4", "https://openrouter.ai/api/v1"); got != "openai/gpt-5.4" {
t.Fatalf("normalizeModel(openrouter nested openai) = %q, want %q", got, "openai/gpt-5.4")
}
if got := normalizeModel("openrouter/minimax/minimax-m2.5", "https://openrouter.ai/api/v1"); got != "minimax/minimax-m2.5" {
t.Fatalf("normalizeModel(openrouter nested minimax) = %q, want %q", got, "minimax/minimax-m2.5")
}
if got := normalizeModel("vivgrid/managed", "https://api.vivgrid.com/v1"); got != "managed" {
t.Fatalf("normalizeModel(vivgrid) = %q, want %q", got, "managed")
}
if got := normalizeModel("vivgrid/auto", "https://api.vivgrid.com/v1"); got != "auto" {
t.Fatalf("normalizeModel(vivgrid auto) = %q, want %q", got, "auto")
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := normalizeModel(tt.model, tt.apiBase); got != tt.want {
t.Fatalf("normalizeModel(%q, %q) = %q, want %q", tt.model, tt.apiBase, got, tt.want)
}
})
}
}