| """tests/test_one_pager.py — PDF one-pager export (export/one_pager.py).""" |
| from __future__ import annotations |
|
|
| from export.one_pager import build_pdf |
|
|
|
|
| def _brief(**overrides) -> dict: |
| base = { |
| "ticker": "NVDA", |
| "company_name": "NVIDIA CORP", |
| "filing_date": "2026-05-20", |
| "generated_at": "2026-05-21T10:00:00Z", |
| "what_matters_most": "Revenue grew but margins compressed sharply amid China export controls.", |
| "bull_points": [{"text": "Strategic partnerships provide multi-year demand visibility."}], |
| "bear_points": [{"text": "Gross margin compression is structural, not transitory."}], |
| "what_to_watch": ["Q2 FY2027 revenue guidance", "Gross margin guidance for FY2027"], |
| } |
| base.update(overrides) |
| return base |
|
|
|
|
| def test_build_pdf_returns_nonempty_bytes(): |
| data = build_pdf(_brief(), "NVDA") |
| assert isinstance(data, bytes) |
| assert len(data) > 100 |
|
|
|
|
| def test_build_pdf_starts_with_pdf_magic_bytes(): |
| data = build_pdf(_brief(), "NVDA") |
| assert data[:4] == b"%PDF" |
|
|
|
|
| def test_build_pdf_is_a_single_page(): |
| data = build_pdf(_brief(), "NVDA") |
| |
| |
| assert data.count(b"/Type /Page") - data.count(b"/Type /Pages") == 1 |
|
|
|
|
| def test_build_pdf_handles_missing_optional_sections(): |
| minimal = {"ticker": "NVDA", "company_name": "NVIDIA CORP"} |
| data = build_pdf(minimal, "NVDA") |
| assert data[:4] == b"%PDF" |
|
|
|
|
| def test_build_pdf_handles_non_latin1_characters_without_raising(): |
| brief = _brief(what_matters_most="Margins compressed — management flagged “headwinds” in the call.") |
| data = build_pdf(brief, "NVDA") |
| assert data[:4] == b"%PDF" |
|
|
|
|
| def test_build_pdf_handles_many_bullets_without_raising(): |
| |
| |
| |
| brief = _brief(bull_points=[{"text": f"Bull point number {i} with some detail."} for i in range(5)]) |
| data = build_pdf(brief, "NVDA") |
| assert data[:4] == b"%PDF" |
|
|