"""Quick verification of the three HTML converters (PDF/PNG/DOCX)."""
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parents[1]))

from app.services import message_builder as mb

HTML = """<html><head><style>h1{color:navy}</style></head><body>
<h1>Invoice INV-QA-0001</h1>
<p>Customer: Alice Smith &mdash; Amount due: <b>$432.63</b></p>
<table border="1">
  <tr><th>Item</th><th>Qty</th><th>Price</th></tr>
  <tr><td>Consulting</td><td>2</td><td>$200.00</td></tr>
  <tr><td>Shipping</td><td>1</td><td>$32.63</td></tr>
</table>
<ul><li>Due 2026-09-25</li><li>Pay by card</li></ul>
</body></html>"""

def main() -> None:
    pdf = mb.html_to_pdf(HTML)
    assert pdf[:4] == b"%PDF", "PDF magic missing"
    print(f"PDF  OK  {len(pdf):,} bytes  magic={pdf[:8]!r}")

    png = mb.html_to_image(HTML)
    assert png[:8] == b"\x89PNG\r\n\x1a\n", "PNG magic missing"
    print(f"PNG  OK  {len(png):,} bytes  magic={png[:8]!r}")

    docx = mb.html_to_docx(HTML)
    assert docx[:2] == b"PK", "DOCX (zip) magic missing"
    print(f"DOCX OK  {len(docx):,} bytes  magic={docx[:2]!r}")

    # text round-trip check for docx
    import io
    from docx import Document
    d = Document(io.BytesIO(docx))
    text = "\n".join(p.text for p in d.paragraphs if p.text)
    assert "INV-QA-0001" in text, "invoice number missing in docx"
    assert len(d.tables) == 1 and d.tables[0].rows[1].cells[0].text == "Consulting", "table missing in docx"
    print(f"DOCX content verified: {len(d.paragraphs)} paragraphs, {len(d.tables)} table(s)")

    print("ALL CONVERTERS PASS")

if __name__ == "__main__":
    main()
