1package pdfexport23import (4 "errors"5 "path/filepath"6 "strings"7 "testing"89 "codeberg.org/go-pdf/fpdf"10)1112func TestWritePDFReturnsAdapterRenderError(t *testing.T) {13 const category = "Render Error Test"14 RegisterPrintAdapter(renderErrorTestAdapter{category: category})1516 output := filepath.Join(t.TempDir(), "error.pdf")17 puzzles := []Puzzle{18 {19 Category: category,20 Name: "broken-page",21 Index: 1,22 PrintPayload: struct{}{},23 },24 }2526 err := WritePDF(output, nil, puzzles, RenderConfig{VolumeNumber: 1})27 if err == nil {28 t.Fatal("expected adapter render error")29 }30 if !strings.Contains(err.Error(), "failed to render body") {31 t.Fatalf("error = %q, want render failure context", err.Error())32 }33 if !strings.Contains(err.Error(), "broken-page") {34 t.Fatalf("error = %q, want puzzle name context", err.Error())35 }36}3738type renderErrorTestAdapter struct {39 category string40}4142func (a renderErrorTestAdapter) CanonicalGameType() string { return a.category }43func (a renderErrorTestAdapter) Aliases() []string { return nil }44func (a renderErrorTestAdapter) BuildPDFPayload([]byte) (any, error) { return nil, nil }45func (a renderErrorTestAdapter) RenderPDFBody(*fpdf.Fpdf, any) error {46 return errors.New("failed to render body")47}