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))