summaryrefslogtreecommitdiff
path: root/internal/tts/registry_test.go
blob: f53fa172475adf840f257e1c7f456472a62c7a68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package tts

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-preview-tts",
	}, "Aoede")
	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",
	}, "Aoede")
	if err == nil {
		t.Fatal("expected unsupported provider error")
	}
	if !strings.Contains(err.Error(), "tts 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", registryConfig{Config: 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) TTSProviderName() string { return f.name }
func (f fakeConfig) GoogleAPIKey() string    { return f.apiKey }
func (f fakeConfig) TTSModel() string        { return f.model }