import zipfile
import pytest
from services.office_document_service import (
OfficeDocumentError,
extract_office_document_text,
)
def _write_zip(path, files):
with zipfile.ZipFile(path, "w") as archive:
for name, content in files.items():
archive.writestr(name, content)
def test_extracts_pptx_slide_text_in_slide_order(tmp_path):
path = tmp_path / "deck.pptx"
_write_zip(
path,
{
"ppt/slides/slide10.xml": "Ten",
"ppt/slides/slide2.xml": "Two",
"ppt/slides/slide1.xml": "One",
},
)
assert extract_office_document_text(str(path)) == "One\n\nTwo\n\nTen"
def test_extracts_docx_paragraphs(tmp_path):
path = tmp_path / "document.docx"
_write_zip(
path,
{
"word/document.xml": (
""
"Helloworld"
"Second paragraph"
""
)
},
)
assert extract_office_document_text(str(path)) == "Hello world\nSecond paragraph"
def test_rejects_legacy_binary_office_formats(tmp_path):
path = tmp_path / "legacy.ppt"
path.write_bytes(b"legacy")
with pytest.raises(OfficeDocumentError, match="external office conversion engine"):
extract_office_document_text(str(path))