Ctrl K
ComunidadGuías…

internal/config/model_display_name_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package config

import (
	"encoding/json"
	"testing"

	"gopkg.in/yaml.v3"
)

func TestModelDisplayNameConfigDecoding(t *testing.T) {
	const yamlConfig = `codex-api-key:
  - models:
      - name: codex-upstream
        alias: codex-alias
        display-name: Codex Name
xai-api-key:
  - models:
      - name: xai-upstream
        alias: xai-alias
        display-name: xAI Name
claude-api-key:
  - models:
      - name: claude-upstream
        alias: claude-alias
        display-name: Claude Name
gemini-api-key:
  - models:
      - name: gemini-upstream
        alias: gemini-alias
        display-name: Gemini Name
vertex-api-key:
  - models:
      - name: vertex-upstream
        alias: vertex-alias
        display-name: Vertex Name
openai-compatibility:
  - models:
      - name: compat-upstream
        alias: compat-alias
        display-name: Compatibility Name
`
	const jsonConfig = `{"codex-api-key":[{"models":[{"name":"codex-upstream","alias":"codex-alias","display-name":"Codex Name"}]}],"xai-api-key":[{"models":[{"name":"xai-upstream","alias":"xai-alias","display-name":"xAI Name"}]}],"claude-api-key":[{"models":[{"name":"claude-upstream","alias":"claude-alias","display-name":"Claude Name"}]}],"gemini-api-key":[{"models":[{"name":"gemini-upstream","alias":"gemini-alias","display-name":"Gemini Name"}]}],"vertex-api-key":[{"models":[{"name":"vertex-upstream","alias":"vertex-alias","display-name":"Vertex Name"}]}],"openai-compatibility":[{"models":[{"name":"compat-upstream","alias":"compat-alias","display-name":"Compatibility Name"}]}]}`

	for _, tt := range []struct {
		name   string
		decode func(*Config) error
	}{
		{
			name: "YAML",
			decode: func(cfg *Config) error {
				return yaml.Unmarshal([]byte(yamlConfig), cfg)
			},
		},
		{
			name: "JSON",
			decode: func(cfg *Config) error {
				return json.Unmarshal([]byte(jsonConfig), cfg)
			},
		},
	} {
		t.Run(tt.name, func(t *testing.T) {
			var cfg Config
			if errDecode := tt.decode(&cfg); errDecode != nil {
				t.Fatalf("decode config: %v", errDecode)
			}
			if got := cfg.CodexKey[0].Models[0].DisplayName; got != "Codex Name" {
				t.Fatalf("Codex display name = %q", got)
			}
			if got := cfg.XAIKey[0].Models[0].DisplayName; got != "xAI Name" {
				t.Fatalf("xAI display name = %q", got)
			}
			if got := cfg.ClaudeKey[0].Models[0].DisplayName; got != "Claude Name" {
				t.Fatalf("Claude display name = %q", got)
			}
			if got := cfg.GeminiKey[0].Models[0].DisplayName; got != "Gemini Name" {
				t.Fatalf("Gemini display name = %q", got)
			}
			if got := cfg.VertexCompatAPIKey[0].Models[0].DisplayName; got != "Vertex Name" {
				t.Fatalf("Vertex display name = %q", got)
			}
			if got := cfg.OpenAICompatibility[0].Models[0].DisplayName; got != "Compatibility Name" {
				t.Fatalf("OpenAI compatibility display name = %q", got)
			}
		})
	}
}