package text import ( "errors" "strings" "testing" "codeberg.org/snonux/comicforge/internal/provider" ) func TestDefaultRegistryNewFromConfig(t *testing.T) { t.Parallel() registry := DefaultRegistry() gotProvider, err := registry.NewFromConfig(fakeConfig{ name: provider.Gemini, apiKey: "test-key", model: "gemini-2.5-flash", }) if err != nil { t.Fatalf("NewFromConfig() error = %v", err) } if got, want := gotProvider.Name(), provider.Gemini; got != want { t.Fatalf("provider.Name() = %q, want %q", got, want) } } func TestDefaultRegistryUnsupportedProvider(t *testing.T) { t.Parallel() registry := DefaultRegistry() _, err := registry.NewFromConfig(fakeConfig{ name: provider.OpenAI, apiKey: "test-key", model: "unused", }) if err == nil { t.Fatal("expected unsupported provider error") } if !strings.Contains(err.Error(), "text provider \"openai\" is not implemented") { t.Fatalf("error = %v, want unsupported provider error", err) } } func TestRegistryUnknownProvider(t *testing.T) { t.Parallel() registry := DefaultRegistry() _, err := registry.New("missing", fakeConfig{}) if err == nil { t.Fatal("expected unknown provider error") } if !errors.Is(err, provider.ErrUnknownProvider) { t.Fatalf("error = %v, want ErrUnknownProvider", err) } } type fakeConfig struct { name string apiKey string model string } func (f fakeConfig) TextProviderName() string { return f.name } func (f fakeConfig) GoogleAPIKey() string { return f.apiKey } func (f fakeConfig) TextModel() string { return f.model }