diff options
Diffstat (limited to 'internal/text/registry_test.go')
| -rw-r--r-- | internal/text/registry_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/internal/text/registry_test.go b/internal/text/registry_test.go new file mode 100644 index 0000000..3f5f72a --- /dev/null +++ b/internal/text/registry_test.go @@ -0,0 +1,66 @@ +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 } |
