package dossier_test import ( "bytes" "testing" "github.com/netcell-it/deklarix/internal/dossier" ) func TestRenderProducesValidPDF(t *testing.T) { content, err := dossier.BuildContent(validData(t)) if err != nil { t.Fatalf("BuildContent: %v", err) } var buf bytes.Buffer if err := dossier.Render(&buf, content); err != nil { t.Fatalf("Render: %v", err) } out := buf.Bytes() if !bytes.HasPrefix(out, []byte("%PDF-")) { t.Fatalf("output does not start with %%PDF- header: %q", out[:min(20, len(out))]) } if !bytes.Contains(out, []byte("%%EOF")) { t.Fatal("output does not contain the expected PDF EOF trailer") } if len(out) < 500 { t.Fatalf("output suspiciously small (%d bytes) for a multi-section dossier", len(out)) } } func TestGenerateProducesValidPDF(t *testing.T) { var buf bytes.Buffer if err := dossier.Generate(&buf, validData(t)); err != nil { t.Fatalf("Generate: %v", err) } if !bytes.HasPrefix(buf.Bytes(), []byte("%PDF-")) { t.Fatal("Generate output does not start with the expected PDF header") } } func TestGeneratePropagatesBuildContentErrors(t *testing.T) { data := validData(t) data.Submission.Platform = "" var buf bytes.Buffer if err := dossier.Generate(&buf, data); err == nil { t.Fatal("expected Generate to propagate a BuildContent error, got nil") } }