diff --git a/tests/test_ocr.py b/tests/test_ocr.py index bf00c5f7..8e1691b4 100644 --- a/tests/test_ocr.py +++ b/tests/test_ocr.py @@ -543,3 +543,28 @@ def test_version_state_classifiable_from_meta_json(tmp_path: Path) -> None: ) assert "raw_upgradable" in state assert "derived_stale" in state + + +def test_postprocess_writes_role_index(tmp_path: Path) -> None: + import json + + from paperforge.worker.ocr import postprocess_ocr_result + + vault = tmp_path / "vault" + vault.mkdir() + (vault / "paperforge.json").write_text( + json.dumps({"vault_config": {"system_dir": "System", "resources_dir": "Resources"}}), + encoding="utf-8", + ) + ocr_root = vault / "System" / "PaperForge" / "ocr" + ocr_root.mkdir(parents=True) + ocr_dir = ocr_root / "IDX001" + ocr_dir.mkdir() + (ocr_dir / "meta.json").write_text( + '{"zotero_key":"IDX001","ocr_status":"done","ocr_model":"PaddleOCR"}', + encoding="utf-8", + ) + + _, _, _, _ = postprocess_ocr_result(vault, "IDX001", []) + + assert (ocr_dir / "index" / "role-index.json").exists() diff --git a/tests/test_ocr_index.py b/tests/test_ocr_index.py new file mode 100644 index 00000000..cc66df40 --- /dev/null +++ b/tests/test_ocr_index.py @@ -0,0 +1,27 @@ +from __future__ import annotations + + +def test_role_index_separates_body_caption_table_metadata_reference() -> None: + from paperforge.worker.ocr_index import build_role_indexes + + structured_blocks = [ + {"paper_id": "KEY001", "page": 1, "block_id": "b1", "role": "body_paragraph", "text": "Methods body"}, + {"paper_id": "KEY001", "page": 1, "block_id": "b2", "role": "figure_caption", "text": "Figure 1. Result"}, + {"paper_id": "KEY001", "page": 1, "block_id": "b3", "role": "table_caption", "text": "Table 1. Data"}, + {"paper_id": "KEY001", "page": 1, "block_id": "b4", "role": "reference_item", "text": "Smith et al. (2024)."}, + ] + resolved_metadata = { + "title": {"value": "Paper Title"}, + "doi": {"value": "10.1000/xyz"}, + } + + indexes = build_role_indexes( + structured_blocks=structured_blocks, + resolved_metadata=resolved_metadata, + ) + + assert "body" in indexes + assert "captions" in indexes + assert "tables" in indexes + assert "metadata" in indexes + assert "references" in indexes