diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-21 22:58:44 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-21 22:58:44 +0300 |
| commit | c5856133c8f12e3fdc76de0fc0482bf072580252 (patch) | |
| tree | d85832e3a5c73a66f7e37d7e0bd04d5ecf7173e7 /internal/text/registry_test.go | |
| parent | 15c08b9e665ad7c11bffcb671ab1a8338243bf72 (diff) | |
t7 centralize provider registries
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 } |
