summaryrefslogtreecommitdiff
path: root/internal/processor/processor_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-01 20:14:03 +0300
committerPaul Buetow <paul@buetow.org>2026-04-01 20:14:03 +0300
commit4727a188102d8166e4acabc4fd62863245e6cdce (patch)
tree1e9edac79d1fb348dee86f43974ed729e03f9173 /internal/processor/processor_test.go
parent3ed1c1ba41709c0de75512643c50b064f7dce650 (diff)
z8: preserve Nano Banana CLI precedence
Diffstat (limited to 'internal/processor/processor_test.go')
-rw-r--r--internal/processor/processor_test.go49
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()