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.ConvertToPdf(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.ConvertHtmlsToPdf(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") } func TestConvertHtmlsToPDFZip(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.
`) outputPath := filepath.Join("test.pdf") c, err := converter.NewConverter("assets/chrome-headless-shell/win64") if err != nil { t.Fatal(err) } defer c.Close() b, err := c.ConvertHtmlsToZip(models.Html{Html: html, Output: outputPath}) if err != nil { t.Fatalf("ConvertHtml failed: %v", err) } f, err := os.Create("test.zip") if err != nil { t.Fatalf("create file: %v", err) } defer f.Close() _, err = f.Write(b) if err != nil { t.Fatalf("write to file: %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") }