diff options
Diffstat (limited to 'internal/processor/processor_test.go')
| -rw-r--r-- | internal/processor/processor_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/internal/processor/processor_test.go b/internal/processor/processor_test.go index c944d7a..9a301cb 100644 --- a/internal/processor/processor_test.go +++ b/internal/processor/processor_test.go @@ -284,6 +284,7 @@ func TestGenerateAudioUsesSharedOpenAIVoices(t *testing.T) { flags.OutputDir = tempDir flags.AudioFormat = "mp3" flags.AllVoices = true + flags.AudioProvider = "openai" p := NewProcessor(flags) @@ -333,6 +334,7 @@ func TestGenerateAudioBgBgUsesSharedOpenAIVoices(t *testing.T) { flags := cli.NewFlags() flags.OutputDir = tempDir flags.AudioFormat = "mp3" + flags.AudioProvider = "openai" p := NewProcessor(flags) if err := p.generateAudioBgBg("ябълка", "круша"); err != nil { @@ -379,6 +381,7 @@ func TestGenerateAudioProviderFactoryError(t *testing.T) { flags := cli.NewFlags() flags.OutputDir = tempDir flags.AudioFormat = "mp3" + flags.AudioProvider = "openai" p := NewProcessor(flags) err := p.generateAudio("ябълка") @@ -390,6 +393,62 @@ func TestGenerateAudioProviderFactoryError(t *testing.T) { } } +func TestGenerateAudioUsesConfiguredGeminiVoiceAndModel(t *testing.T) { + originalFactory := newAudioProvider + t.Cleanup(func() { + newAudioProvider = originalFactory + }) + + fakeProvider := &fakeAudioProvider{} + var capturedConfig *audio.Config + newAudioProvider = func(config *audio.Config) (audio.Provider, error) { + copyConfig := *config + capturedConfig = ©Config + return fakeProvider, nil + } + + originalConfig := viper.New() + *originalConfig = *viper.GetViper() + defer func() { + *viper.GetViper() = *originalConfig + }() + viper.Reset() + viper.Set("audio.provider", "gemini") + viper.Set("audio.gemini_tts_model", "gemini-2.5-flash-preview-tts") + viper.Set("audio.gemini_voice", "Kore") + + flags := cli.NewFlags() + flags.OutputDir = t.TempDir() + flags.AudioFormat = "mp3" + + p := NewProcessor(flags) + if err := p.generateAudio("ябълка"); err != nil { + t.Fatalf("generateAudio() unexpected error: %v", err) + } + + if capturedConfig == nil { + t.Fatal("expected audio provider config to be captured") + } + if capturedConfig.Provider != "gemini" { + t.Fatalf("captured provider = %q, want %q", capturedConfig.Provider, "gemini") + } + if capturedConfig.GeminiTTSModel != "gemini-2.5-flash-preview-tts" { + t.Fatalf("captured GeminiTTSModel = %q, want %q", capturedConfig.GeminiTTSModel, "gemini-2.5-flash-preview-tts") + } + if capturedConfig.GeminiVoice != "Kore" { + t.Fatalf("captured GeminiVoice = %q, want %q", capturedConfig.GeminiVoice, "Kore") + } + if capturedConfig.OutputFormat != "wav" { + t.Fatalf("captured OutputFormat = %q, want %q", capturedConfig.OutputFormat, "wav") + } + if fakeProvider.generateCalls != 1 { + t.Fatalf("GenerateAudio() calls = %d, want %d", fakeProvider.generateCalls, 1) + } + if !strings.HasSuffix(fakeProvider.lastOutputFile, "audio.wav") { + t.Fatalf("GenerateAudio() output file = %q, want wav output", fakeProvider.lastOutputFile) + } +} + func TestDownloadImagesWithTranslationUsesNanoBananaConfigAndSavesPrompt(t *testing.T) { t.Setenv("OPENAI_API_KEY", "test-openai-key") t.Setenv("GOOGLE_API_KEY", "test-google-key") |
