scrub / tests /test_docx_text_order_extraction.py
solidprivacy-nl
SCRUB-WP fix DOCX preview text order (#8)
cb9f70c unverified
Raw
History Blame Contribute Delete
1.31 kB
from io import BytesIO
from pathlib import Path
from docx import Document
from document_tools import extract_docx_text
def _save_docx_bytes(doc: Document) -> bytes:
buffer = BytesIO()
doc.save(buffer)
return buffer.getvalue()
def test_docx_text_extraction_preserves_interleaved_paragraph_table_order():
doc = Document()
doc.add_paragraph("PAGINA_1_MARKER gewone tekst")
table = doc.add_table(rows=1, cols=1)
table.cell(0, 0).text = "PAGINA_2_MARKER tabeltekst"
doc.add_paragraph("PAGINA_3_MARKER gewone tekst")
roundtrip_doc = Document(BytesIO(_save_docx_bytes(doc)))
text = extract_docx_text(roundtrip_doc)
assert "PAGINA_1_MARKER" in text
assert "PAGINA_2_MARKER" in text
assert "PAGINA_3_MARKER" in text
assert text.index("PAGINA_1_MARKER") < text.index("PAGINA_2_MARKER") < text.index("PAGINA_3_MARKER")
def test_docx_text_order_test_uses_synthetic_markers_only():
doc = Document()
doc.add_paragraph("PAGINA_1_MARKER gewone tekst")
doc.add_paragraph("PAGINA_2_MARKER gewone tekst")
extracted = extract_docx_text(Document(BytesIO(_save_docx_bytes(doc))))
forbidden_real_markers = ["BSN", "IBAN", "Samir", "Marrakech", "dossiernummer"]
for marker in forbidden_real_markers:
assert marker not in extracted