summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-01 14:30:39 +0300
committerPaul Buetow <paul@buetow.org>2026-04-01 14:30:39 +0300
commit6e88181efd6b176659d990a048a5ffaef5459fce (patch)
treea10bda910cbf18809126cf46c65a23c6cfaab337 /internal
parent2fab4c5f02abf7c2ad7796fb5affffdc374fb59c (diff)
Add Gemini audio tests for zm
Diffstat (limited to 'internal')
-rw-r--r--internal/audio/gemini_provider_test.go81
-rw-r--r--internal/audio/provider_test.go5
2 files changed, 69 insertions, 17 deletions
diff --git a/internal/audio/gemini_provider_test.go b/internal/audio/gemini_provider_test.go
index 1f2a25a..aa73d4a 100644
--- a/internal/audio/gemini_provider_test.go
+++ b/internal/audio/gemini_provider_test.go
@@ -11,9 +11,11 @@ import (
func TestNewGeminiProvider(t *testing.T) {
tests := []struct {
- name string
- config *Config
- wantErr bool
+ name string
+ config *Config
+ wantErr bool
+ wantModel string
+ wantSpeed float64
}{
{
name: "missing google api key",
@@ -23,12 +25,11 @@ func TestNewGeminiProvider(t *testing.T) {
{
name: "valid config",
config: &Config{
- GoogleAPIKey: "test-key",
- GeminiTTSModel: "gemini-2.5-flash-preview-tts",
- GeminiVoice: "Kore",
- GeminiSpeed: 1.0,
+ GoogleAPIKey: "test-key",
},
- wantErr: false,
+ wantErr: false,
+ wantModel: defaultGeminiTTSModel,
+ wantSpeed: 1.0,
},
}
@@ -45,22 +46,47 @@ func TestNewGeminiProvider(t *testing.T) {
if provider.Name() != "gemini" {
t.Fatalf("Name() = %q, want %q", provider.Name(), "gemini")
}
+
+ geminiProvider, ok := provider.(*GeminiProvider)
+ if !ok {
+ t.Fatalf("NewGeminiProvider() returned %T, want *GeminiProvider", provider)
+ }
+ if geminiProvider.config.GeminiTTSModel != tt.wantModel {
+ t.Fatalf("GeminiTTSModel = %q, want %q", geminiProvider.config.GeminiTTSModel, tt.wantModel)
+ }
+ if geminiProvider.config.GeminiSpeed != tt.wantSpeed {
+ t.Fatalf("GeminiSpeed = %v, want %v", geminiProvider.config.GeminiSpeed, tt.wantSpeed)
+ }
})
}
}
func TestGeminiProviderIsAvailable(t *testing.T) {
- provider := &GeminiProvider{
- config: &Config{GoogleAPIKey: "test-key"},
- }
-
- if err := provider.IsAvailable(); err != nil {
- t.Fatalf("IsAvailable() unexpected error: %v", err)
+ tests := []struct {
+ name string
+ config *Config
+ wantErr bool
+ }{
+ {
+ name: "with API key",
+ config: &Config{GoogleAPIKey: "test-key"},
+ wantErr: false,
+ },
+ {
+ name: "without API key",
+ config: &Config{},
+ wantErr: true,
+ },
}
- provider.config.GoogleAPIKey = ""
- if err := provider.IsAvailable(); err == nil {
- t.Fatal("IsAvailable() expected error when API key is missing")
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ provider := &GeminiProvider{config: tt.config}
+ err := provider.IsAvailable()
+ if (err != nil) != tt.wantErr {
+ t.Fatalf("IsAvailable() error = %v, wantErr %v", err, tt.wantErr)
+ }
+ })
}
}
@@ -159,3 +185,24 @@ func TestWriteGeminiAudioFileRejectsUnsupportedFormats(t *testing.T) {
t.Fatalf("expected no output file to be written, statErr=%v", statErr)
}
}
+
+func TestGeminiProviderIntegrationWithGoogleAPIKey(t *testing.T) {
+ apiKey := strings.TrimSpace(os.Getenv("GOOGLE_API_KEY"))
+ if apiKey == "" {
+ t.Skip("Skipping integration test: GOOGLE_API_KEY not set")
+ }
+
+ provider, err := NewGeminiProvider(&Config{GoogleAPIKey: apiKey})
+ if err != nil {
+ t.Fatalf("NewGeminiProvider() unexpected error: %v", err)
+ }
+
+ geminiProvider, ok := provider.(*GeminiProvider)
+ if !ok {
+ t.Fatalf("NewGeminiProvider() returned %T, want *GeminiProvider", provider)
+ }
+
+ if err := geminiProvider.IsAvailable(); err != nil {
+ t.Fatalf("IsAvailable() unexpected error with GOOGLE_API_KEY set: %v", err)
+ }
+}
diff --git a/internal/audio/provider_test.go b/internal/audio/provider_test.go
index 6b86e3c..4c8d911 100644
--- a/internal/audio/provider_test.go
+++ b/internal/audio/provider_test.go
@@ -113,6 +113,11 @@ func TestNewProvider(t *testing.T) {
if provider.Name() != tt.wantProvider {
t.Fatalf("NewProvider() Name() = %v, want %v", provider.Name(), tt.wantProvider)
}
+ if tt.wantProvider == "gemini" {
+ if _, ok := provider.(*GeminiProvider); !ok {
+ t.Fatalf("NewProvider() returned %T, want *GeminiProvider", provider)
+ }
+ }
}
})
}