package html2pdf import ( "bytes" "fmt" "os" "path/filepath" "strings" "testing" "gitea.tecamino.com/paadi/html2pdf/converter" "gitea.tecamino.com/paadi/html2pdf/models" ) func TestConvert(t *testing.T) { t.Log("start test convert one file") err := Convert("./assets", "dst/test.html", "out.pdf") if err != nil { t.Fatal(err) } } func TestConvertFiles(t *testing.T) { t.Log("start test convert files") rootPath := "dst" files, err := os.ReadDir(rootPath) if err != nil { t.Fatal(err) } var input []models.File for _, f := range files { ext := filepath.Ext(f.Name()) if ext != ".html" { continue } input = append(input, models.File{ Input: filepath.Join(rootPath, f.Name()), Output: strings.Replace(f.Name(), ext, ".pdf", 1), }) } c, err := converter.NewConverter("assets/chrome-headless-shell/win64") if err != nil { t.Fatal(err) } defer c.Close() c.SetProgressCallback(func(progress int) { fmt.Println(progress) }) if err := c.Convert(input...); err != nil { t.Fatal(err) } t.Log("test successfull") } func TestConvertHtml(t *testing.T) { t.Log("start test ConvertHtml") // Skip in short mode (useful for CI) if testing.Short() { t.Skip("skipping ConvertHtml integration test in short mode") } html := []byte(`
This is a test.
`) tmpDir := t.TempDir() outputPath := filepath.Join(tmpDir, "test.pdf") c, err := converter.NewConverter("assets/chrome-headless-shell/win64") if err != nil { t.Fatal(err) } defer c.Close() err = c.ConvertHtmls(models.Html{Html: html, Output: outputPath}) if err != nil { t.Fatalf("ConvertHtml failed: %v", err) } // Assert PDF exists data, err := os.ReadFile(outputPath) if err != nil { t.Fatalf("PDF not created: %v", err) } // Assert non-empty if len(data) == 0 { t.Fatal("PDF file is empty") } // Assert valid PDF header if !bytes.HasPrefix(data, []byte("%PDF-")) { t.Fatalf("output is not a valid PDF (missing %%PDF- header)") } t.Log("ConvertHtml test successful") }