first commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
package provider
|
||||
|
||||
import "testing"
|
||||
|
||||
// TestPresetProvidersIncludeNewProviders verifies the curated preset provider
|
||||
// list gained the expanded set of gateways, each paired with the correct API-key
|
||||
// environment variable (referenced by name only).
|
||||
func TestPresetProvidersIncludeNewProviders(t *testing.T) {
|
||||
byName := make(map[string]string, len(PresetProviders))
|
||||
for _, p := range PresetProviders {
|
||||
byName[p.Name] = p.EnvVar
|
||||
}
|
||||
|
||||
want := map[string]string{
|
||||
"deepseek": "DEEPSEEK_API_KEY",
|
||||
"groq": "GROQ_API_KEY",
|
||||
"xai": "XAI_API_KEY",
|
||||
"cerebras": "CEREBRAS_API_KEY",
|
||||
"mistral": "MISTRAL_API_KEY",
|
||||
"moonshotai": "MOONSHOT_API_KEY",
|
||||
"zai": "ZAI_API_KEY",
|
||||
"fireworks": "FIREWORKS_API_KEY",
|
||||
"together": "TOGETHER_API_KEY",
|
||||
"minimax": "MINIMAX_API_KEY",
|
||||
"xiaomi": "XIAOMI_API_KEY",
|
||||
}
|
||||
for name, env := range want {
|
||||
got, ok := byName[name]
|
||||
if !ok {
|
||||
t.Errorf("PresetProviders missing provider %q", name)
|
||||
continue
|
||||
}
|
||||
if got != env {
|
||||
t.Errorf("provider %q env var = %q, want %q", name, got, env)
|
||||
}
|
||||
}
|
||||
|
||||
// Every preset provider must be a known provider in the central registry, so
|
||||
// selecting a preset can always be resolved to a working Provider.
|
||||
for _, p := range PresetProviders {
|
||||
if p.Name == "ollama" {
|
||||
continue // local pseudo-provider, not in the registry
|
||||
}
|
||||
if _, ok := LookupProviderSpec(p.Name); !ok {
|
||||
t.Errorf("preset provider %q has no ProviderSpec in the registry", p.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestPresetCatalogCountsPerProvider asserts each expanded provider contributes
|
||||
// the expected number of curated entries.
|
||||
func TestPresetCatalogCountsPerProvider(t *testing.T) {
|
||||
wantAtLeast := map[string]int{
|
||||
"deepseek": 2,
|
||||
"groq": 3,
|
||||
"xai": 2,
|
||||
"cerebras": 3,
|
||||
"mistral": 4,
|
||||
"moonshotai": 3,
|
||||
"zai": 3,
|
||||
"fireworks": 3,
|
||||
"together": 3,
|
||||
"minimax": 2,
|
||||
"xiaomi": 3,
|
||||
}
|
||||
for provider, min := range wantAtLeast {
|
||||
got := PresetsByProvider(provider)
|
||||
if len(got) < min {
|
||||
t.Errorf("PresetsByProvider(%q) returned %d entries, want >= %d", provider, len(got), min)
|
||||
}
|
||||
for _, p := range got {
|
||||
if p.Provider != provider {
|
||||
t.Errorf("PresetsByProvider(%q) returned entry for %q", provider, p.Provider)
|
||||
}
|
||||
if p.ID == "" {
|
||||
t.Errorf("PresetsByProvider(%q) returned entry with empty ID", provider)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestLookupPresetNewEntries verifies representative new model ids resolve to the
|
||||
// correct owning provider and carry a non-empty label.
|
||||
func TestLookupPresetNewEntries(t *testing.T) {
|
||||
cases := []struct {
|
||||
id string
|
||||
provider string
|
||||
}{
|
||||
{"deepseek-v4-pro", "deepseek"},
|
||||
{"llama-3.3-70b-versatile", "groq"},
|
||||
{"grok-4.5", "xai"},
|
||||
{"zai-glm-4.7", "cerebras"},
|
||||
{"mistral-large-latest", "mistral"},
|
||||
{"kimi-k2-thinking", "moonshotai"},
|
||||
{"glm-5.1", "zai"},
|
||||
{"accounts/fireworks/models/gpt-oss-120b", "fireworks"},
|
||||
{"deepseek-ai/DeepSeek-V4-Pro", "together"},
|
||||
{"MiniMax-M3", "minimax"},
|
||||
{"mimo-v2.5-pro", "xiaomi"},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
p, ok := LookupPreset(tc.id)
|
||||
if !ok {
|
||||
t.Errorf("LookupPreset(%q) not found", tc.id)
|
||||
continue
|
||||
}
|
||||
if p.Provider != tc.provider {
|
||||
t.Errorf("LookupPreset(%q).Provider = %q, want %q", tc.id, p.Provider, tc.provider)
|
||||
}
|
||||
if p.Label() == "" {
|
||||
t.Errorf("LookupPreset(%q).Label() is empty", tc.id)
|
||||
}
|
||||
}
|
||||
|
||||
if _, ok := LookupPreset("this-model-does-not-exist"); ok {
|
||||
t.Error("LookupPreset returned ok for an unknown id")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user