diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-01 14:30:39 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-01 14:30:39 +0300 |
| commit | 6e88181efd6b176659d990a048a5ffaef5459fce (patch) | |
| tree | a10bda910cbf18809126cf46c65a23c6cfaab337 | |
| parent | 2fab4c5f02abf7c2ad7796fb5affffdc374fb59c (diff) | |
Add Gemini audio tests for zm
| -rw-r--r-- | internal/audio/gemini_provider_test.go | 81 | ||||
| -rw-r--r-- | internal/audio/provider_test.go | 5 |
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) + } + } } }) } |
