"""Splitting of the document into chunks.""" from __future__ import annotations from app.pdf.chunker import split_document from app.pdf.document import SourceDocument from tests.conftest import build_document def test_document_with_sections_is_split() -> None: document = SourceDocument(build_document(sections=40, paragraphs_per_section=10)) chunks = split_document(document, pages_per_chunk=5) assert len(chunks) > 1 for chunk in chunks: assert chunk.startswith("") assert "" in chunk def test_every_section_appears_exactly_once() -> None: document = SourceDocument(build_document(sections=30, paragraphs_per_section=8)) chunks = split_document(document, pages_per_chunk=3) joined = "".join(chunks) for index in range(30): assert joined.count(f"id=\"sekce-{index}\"") == 1 def test_head_is_repeated_in_every_chunk() -> None: document = SourceDocument(build_document(sections=20, paragraphs_per_section=10)) chunks = split_document(document, pages_per_chunk=2) assert len(chunks) > 1 for chunk in chunks: assert "font-family:sans-serif" in chunk def test_document_without_split_points_stays_whole(unsplittable_document: str) -> None: document = SourceDocument(unsplittable_document) chunks = split_document(document, pages_per_chunk=1) assert len(chunks) == 1 def test_single_wrapper_is_traversed() -> None: sections = "".join(f"

Kapitola {i}

Text

" for i in range(10)) html = f"
{sections}
" document = SourceDocument(html) assert document.container.tag == "main" chunks = split_document(document, pages_per_chunk=1) assert len(chunks) > 1 for chunk in chunks: assert "class=\"obal\"" in chunk