Files
2026-08-14 23:41:57 +08:00

67 lines
2.2 KiB
Go

package provider
// Tests for the preset provider/model catalog (mirrors pi agent's preset picker):
// LookupPreset resolves a catalog id to its owning provider, PresetsByProvider
// groups by provider, and every preset must name a provider that has a known
// credential env var (or be the local, keyless Ollama).
import "testing"
// TestLookupPresetResolvesProvider verifies a catalog id resolves to its
// declared provider, and an unknown id does not.
func TestLookupPresetResolvesProvider(t *testing.T) {
p, ok := LookupPreset("meta/llama-3.3-70b-instruct")
if !ok {
t.Fatal("expected NVIDIA llama preset to be in the catalog")
}
if p.Provider != "nvidia" {
t.Errorf("provider = %q, want nvidia", p.Provider)
}
if _, ok := LookupPreset("definitely/not-a-preset"); ok {
t.Error("unknown id must not resolve to a preset")
}
}
// TestPresetsByProviderGroups verifies each provider surfaces at least one
// preset and that the returned entries all belong to that provider.
func TestPresetsByProviderGroups(t *testing.T) {
for _, name := range []string{"openrouter", "nvidia", "ollama"} {
got := PresetsByProvider(name)
if len(got) == 0 {
t.Errorf("provider %q has no presets", name)
}
for _, m := range got {
if m.Provider != name {
t.Errorf("PresetsByProvider(%q) returned entry for %q", name, m.Provider)
}
}
}
}
// TestPresetProvidersHaveCredentialMapping verifies every non-local preset
// provider has API-key env vars in the provider registry (the single source of
// truth), so a selected preset can actually resolve a credential. Ollama is
// local and keyless.
func TestPresetProvidersHaveCredentialMapping(t *testing.T) {
for _, pv := range PresetProviders {
if pv.Name == "ollama" {
continue
}
spec, ok := LookupProviderSpec(pv.Name)
if !ok || len(spec.EnvVars) == 0 {
t.Errorf("preset provider %q has no credential env var mapping", pv.Name)
}
}
}
// TestPresetLabelFallsBackToID verifies Label uses DisplayName when set and
// falls back to the id otherwise.
func TestPresetLabelFallsBackToID(t *testing.T) {
if got := (PresetModel{ID: "x", DisplayName: "X"}).Label(); got != "X" {
t.Errorf("Label = %q, want X", got)
}
if got := (PresetModel{ID: "x"}).Label(); got != "x" {
t.Errorf("Label = %q, want x", got)
}
}