diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-01 20:14:03 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-01 20:14:03 +0300 |
| commit | 4727a188102d8166e4acabc4fd62863245e6cdce (patch) | |
| tree | 1e9edac79d1fb348dee86f43974ed729e03f9173 /internal/processor/processor_test.go | |
| parent | 3ed1c1ba41709c0de75512643c50b064f7dce650 (diff) | |
z8: preserve Nano Banana CLI precedence
Diffstat (limited to 'internal/processor/processor_test.go')
| -rw-r--r-- | internal/processor/processor_test.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/internal/processor/processor_test.go b/internal/processor/processor_test.go index ef9e655..8ab13e7 100644 --- a/internal/processor/processor_test.go +++ b/internal/processor/processor_test.go @@ -397,6 +397,55 @@ func TestNewImageSearcherConfiguredNanoBananaRequiresGoogleAPIKey(t *testing.T) } } +func TestNewNanoBananaImageSearcherExplicitDefaultWinsOverConfig(t *testing.T) { + t.Setenv("OPENAI_API_KEY", "test-openai-key") + t.Setenv("GOOGLE_API_KEY", "test-google-key") + + originalConfig := viper.New() + *originalConfig = *viper.GetViper() + defer func() { + *viper.GetViper() = *originalConfig + }() + viper.Reset() + viper.Set("image.nanobanana_model", "config-image-model") + viper.Set("image.nanobanana_text_model", "config-text-model") + + originalConstructor := newNanoBananaImageClient + capturedConfig := new(image.NanoBananaConfig) + newNanoBananaImageClient = func(config *image.NanoBananaConfig) image.ImageSearcher { + *capturedConfig = *config + return &stubImageSearcher{} + } + t.Cleanup(func() { + newNanoBananaImageClient = originalConstructor + }) + + flags := cli.NewFlags() + flags.OutputDir = t.TempDir() + flags.ImageAPI = "nanobanana" + flags.ImageAPISpecified = true + flags.NanoBananaModel = image.DefaultNanoBananaModel + flags.NanoBananaModelSpecified = true + flags.NanoBananaTextModel = image.DefaultNanoBananaTextModel + flags.NanoBananaTextModelSpecified = true + + p := NewProcessor(flags) + searcher, err := p.newNanoBananaImageSearcher() + if err != nil { + t.Fatalf("newNanoBananaImageSearcher() unexpected error: %v", err) + } + if searcher == nil { + t.Fatal("expected searcher") + } + + if capturedConfig.Model != image.DefaultNanoBananaModel { + t.Fatalf("NanoBanana Model = %q, want explicit CLI default %q", capturedConfig.Model, image.DefaultNanoBananaModel) + } + if capturedConfig.TextModel != image.DefaultNanoBananaTextModel { + t.Fatalf("NanoBanana TextModel = %q, want explicit CLI default %q", capturedConfig.TextModel, image.DefaultNanoBananaTextModel) + } +} + func TestProcessSingleWord_InvalidWord(t *testing.T) { flags := cli.NewFlags() flags.OutputDir = t.TempDir() |
