diff options
Diffstat (limited to 'internal/comic/comic_test.go')
| -rw-r--r-- | internal/comic/comic_test.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/internal/comic/comic_test.go b/internal/comic/comic_test.go index 4d0e019..29f2a31 100644 --- a/internal/comic/comic_test.go +++ b/internal/comic/comic_test.go @@ -436,6 +436,55 @@ func TestArtistAndRunnerEndToEndWithFakes(t *testing.T) { } } +func TestRunnerRunPromptWritesSingleAsset(t *testing.T) { + t.Parallel() + + originalLeakValidation := validateImagePromptLeakageFn + validateImagePromptLeakageFn = func(context.Context, string, string, string) error { return nil } + t.Cleanup(func() { + validateImagePromptLeakageFn = originalLeakValidation + }) + + tmpDir := t.TempDir() + runner := NewRunner(&RunnerConfig{ + ImageProvider: fakeImageProvider{t: t}, + Prompts: fakePromptRenderer{}, + OutputDir: tmpDir, + Slug: "manual-robot", + UltraRealistic: boolPtr(false), + PageMaxRetries: 1, + PageRetryBase: time.Second, + }) + + if err := runner.RunPrompt(context.Background(), "a robot reading a newspaper"); err != nil { + t.Fatalf("RunPrompt() error = %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "assets", "manual-robot", "prompt.png")); err != nil { + t.Fatalf("prompt image missing: %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "PDF")); !os.IsNotExist(err) { + t.Fatalf("PDF directory exists unexpectedly: %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "gallery")); !os.IsNotExist(err) { + t.Fatalf("gallery directory exists unexpectedly: %v", err) + } +} + +func TestRunnerRunPromptRejectsEmptyPrompt(t *testing.T) { + t.Parallel() + + runner := NewRunner(&RunnerConfig{ + ImageProvider: fakeImageProvider{t: t}, + Prompts: fakePromptRenderer{}, + OutputDir: t.TempDir(), + UltraRealistic: boolPtr(false), + }) + + if err := runner.RunPrompt(context.Background(), " "); err == nil { + t.Fatal("RunPrompt() error = nil, want validation failure") + } +} + func TestNewRunnerUsesRealisticWeightWhenUltraRealisticUnset(t *testing.T) { t.Parallel() @@ -931,3 +980,7 @@ func (p *recordingTTSProvider) GenerateAudio(_ context.Context, text, outputFile p.calls = append(p.calls, text) return os.WriteFile(outputFile, []byte("mp3"), 0o644) } + +func boolPtr(v bool) *bool { + return &v +} |
