Files
narratio/internal/adapters/seriatim/fake_test.go

54 lines
1.6 KiB
Go

package seriatim
import (
"context"
"errors"
"os"
"path/filepath"
"strings"
"testing"
)
func TestFakeRunnerCapturesRequestAndReturnsPath(t *testing.T) {
fake := &FakeRunner{}
dir := t.TempDir()
req := MergeRequest{
GeneratedConfigPath: filepath.Join(dir, "config", "seriatim.yml"),
OutputMergedTranscriptPath: filepath.Join(dir, "transcripts", "merged.json"),
StdoutLogPath: filepath.Join(dir, "logs", "seriatim.stdout.log"),
StderrLogPath: filepath.Join(dir, "logs", "seriatim.stderr.log"),
}
res, err := fake.Run(context.Background(), req)
if err != nil {
t.Fatalf("Run() error = %v", err)
}
if len(fake.Requests) != 1 || fake.Requests[0].GeneratedConfigPath == "" {
t.Fatalf("requests = %#v, want captured request", fake.Requests)
}
if res.MergedTranscriptPath != req.OutputMergedTranscriptPath {
t.Fatalf("merged path = %q, want %q", res.MergedTranscriptPath, req.OutputMergedTranscriptPath)
}
cfgData, err := os.ReadFile(req.GeneratedConfigPath)
if err != nil {
t.Fatalf("read generated config: %v", err)
}
if !strings.Contains(string(cfgData), "placeholder: true") {
t.Fatalf("generated config = %q, want placeholder marker", string(cfgData))
}
for _, logPath := range []string{req.StdoutLogPath, req.StderrLogPath} {
if _, err := os.Stat(logPath); err != nil {
t.Fatalf("expected log file %q to exist: %v", logPath, err)
}
}
}
func TestFakeRunnerError(t *testing.T) {
fake := &FakeRunner{Err: errors.New("boom")}
_, err := fake.Run(context.Background(), MergeRequest{})
if err == nil {
t.Fatal("expected error, got nil")
}
}