vibe-proxy/backend/sdk/cliproxy/config_model_display_name_test.go
2026-08-24 00:10:41 +02:00

108 lines
3.1 KiB
Go

package cliproxy
import (
"testing"
"github.com/router-for-me/CLIProxyAPI/v7/internal/config"
"github.com/router-for-me/CLIProxyAPI/v7/internal/registry"
)
func TestBuildConfigModelsDisplayName(t *testing.T) {
tests := []struct {
name string
want string
got func() *ModelInfo
}{
{
name: "claude",
want: "Claude Catalog Name",
got: func() *ModelInfo {
return buildClaudeConfigModels(&config.ClaudeKey{Models: []config.ClaudeModel{{
Name: "claude-upstream", Alias: "claude-catalog", DisplayName: "Claude Catalog Name",
}}})[0]
},
},
{
name: "gemini",
want: "Gemini Catalog Name",
got: func() *ModelInfo {
return buildGeminiConfigModels(&config.GeminiKey{Models: []config.GeminiModel{{
Name: "gemini-upstream", Alias: "gemini-catalog", DisplayName: "Gemini Catalog Name",
}}})[0]
},
},
{
name: "vertex",
want: "Vertex Catalog Name",
got: func() *ModelInfo {
return buildVertexCompatConfigModels(&config.VertexCompatKey{Models: []config.VertexCompatModel{{
Name: "vertex-upstream", Alias: "vertex-catalog", DisplayName: "Vertex Catalog Name",
}}})[0]
},
},
{
name: "codex",
want: "Codex Catalog Name",
got: func() *ModelInfo {
return buildCodexConfigModels(&config.CodexKey{Models: []config.CodexModel{{
Name: "gpt-5.5", Alias: "gpt-5.5", DisplayName: "Codex Catalog Name",
}}})[0]
},
},
{
name: "xai",
want: "xAI Catalog Name",
got: func() *ModelInfo {
return buildXAIConfigModels(&config.XAIKey{Models: []config.XAIModel{{
Name: "grok-4.5", Alias: "grok-latest", DisplayName: "xAI Catalog Name",
}}})[0]
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tt.got().DisplayName; got != tt.want {
t.Fatalf("DisplayName = %q, want %q", got, tt.want)
}
})
}
}
func TestBuildCodexConfigModelsSelectsDefaultsOrConfiguredModels(t *testing.T) {
configured := buildCodexConfigModels(&config.CodexKey{Models: []config.CodexModel{{
Name: "upstream-codex", Alias: "configured-codex",
}}})
if len(configured) != 1 {
t.Fatalf("configured model count = %d, want 1", len(configured))
}
if configured[0].ID != "configured-codex" {
t.Fatalf("configured model ID = %q, want configured-codex", configured[0].ID)
}
defaults := buildCodexConfigModels(&config.CodexKey{})
wantDefaults := registry.GetCodexProModels()
if len(defaults) != len(wantDefaults) {
t.Fatalf("default model count = %d, want %d", len(defaults), len(wantDefaults))
}
defaultIDs := make(map[string]struct{}, len(defaults))
for _, model := range defaults {
if model != nil {
defaultIDs[model.ID] = struct{}{}
}
}
for _, modelID := range []string{"gpt-image-1.5", "gpt-image-2"} {
if _, ok := defaultIDs[modelID]; !ok {
t.Errorf("missing default model %q", modelID)
}
}
}
func TestBuildConfigModelsDisplayNameFallback(t *testing.T) {
model := buildClaudeConfigModels(&config.ClaudeKey{Models: []config.ClaudeModel{{
Name: "claude-upstream", Alias: "claude-catalog",
}}})[0]
if model.DisplayName != "claude-upstream" {
t.Fatalf("DisplayName = %q, want upstream model name", model.DisplayName)
}
}