Spaces:
Runtime error
Runtime error
| """Tests for spec paper-module builders and filename mapping.""" | |
| from researchlink.schemas.paper import PaperExtraction, PaperMetadata | |
| from researchlink.schemas.provenance import FieldStatus, SourceRecord | |
| from researchlink.services import paper_module as pm | |
| from researchlink.services.metadata_resolver import build_provenance | |
| def test_spec_rename_maps_and_passes_through(): | |
| assert pm.spec_filename("digest.md") == "summary.md" | |
| assert pm.spec_filename("reproducibility.md") == "reproduction.md" | |
| assert pm.spec_filename("README.md") == "README.md" # unmapped → identity | |
| assert pm.spec_filename("labs/01.py") == "labs/01.py" | |
| def test_paper_markdown_grounded(): | |
| meta = PaperMetadata(title="T", year=2024, authors_provisional=["A"]) | |
| ext = PaperExtraction(abstract="An abstract.", section_headings=["Intro", "Method"], | |
| full_text="Body text here.", page_count=3) | |
| md = pm.paper_markdown(meta, ext) | |
| assert md.startswith("# T") | |
| assert "An abstract." in md | |
| assert "- Intro" in md and "- Method" in md | |
| assert "Body text here." in md | |
| assert "Machine-extracted" in md | |
| def test_paper_markdown_marks_missing(): | |
| md = pm.paper_markdown(PaperMetadata(title="X"), PaperExtraction()) | |
| assert "[needs-verification]" in md | |
| def test_build_metadata_json_splits_sources_and_conflicts(): | |
| records = [ | |
| SourceRecord(name="arxiv", fields={"title": "T", "year": 2017}), | |
| SourceRecord(name="crossref", fields={"title": "T", "year": 2018}), | |
| ] | |
| prov = build_provenance(records) | |
| meta = PaperMetadata(title="T", slug="2017-t") | |
| payload, sources = pm.build_metadata_json(prov, meta, model_slug="m") | |
| assert payload["schema_version"] == "0.1" | |
| assert payload["slug"] == "2017-t" | |
| assert payload["generated_by_model"] == "m" | |
| assert "year" in payload["conflicts"] # conflict surfaced | |
| assert payload["fields"]["title"]["status"] == FieldStatus.verified.value | |
| assert payload["fields"]["title"]["confidence_label"] in ("high", "medium", "low") | |
| assert "sources" not in payload["fields"] # sources split out | |
| assert sources["schema_version"] == "0.1" | |
| assert len(sources["sources"]) == 2 | |
| assert sources["sources"][0]["type"] == "arxiv" | |
| assert sources["sources"][0]["status"] == "ok" | |