Files
BlackBean/pigo/internal/provider/presets_catalog_test.go
T
2026-08-14 23:41:57 +08:00

119 lines
3.4 KiB
Go

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")
}
}