File size: 2,243 Bytes
7880373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""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")
    # A minimal, reliable single-page check without a full PDF parser
    # dependency: fpdf2 emits one "/Type /Page" object per page.
    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():
    # Regression guard for the fpdf2 cursor-drift bug: multi_cell() without
    # explicit new_x/new_y leaves the cursor at the right margin after a
    # short unwrapped line, starving the *next* call of horizontal space.
    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"