Spaces:
Runtime error
Runtime error
| """Tests for reloading a persisted paper module.""" | |
| import json | |
| from researchlink.schemas.paper import PaperExtraction, PaperMetadata | |
| from researchlink.schemas.provenance import SourceRecord | |
| from researchlink.services import module_io, paper_module | |
| from researchlink.services.metadata_resolver import build_provenance | |
| def _write_module(tmp_path): | |
| mod = tmp_path / "2017-attention" | |
| mod.mkdir() | |
| meta = PaperMetadata(title="Attention Is All You Need", year=2017, doi="10.1/x", | |
| arxiv_id="1706.03762", venue="NeurIPS", | |
| authors_provisional=["Vaswani", "Shazeer"], slug="2017-attention") | |
| ext = PaperExtraction(abstract="We propose the Transformer.", | |
| section_headings=["Introduction", "Method"], | |
| full_text="We propose the Transformer. It relies on attention.") | |
| (mod / "paper.md").write_text(paper_module.paper_markdown(meta, ext), encoding="utf-8") | |
| prov = build_provenance([SourceRecord(name="user", fields={ | |
| "title": meta.title, "year": 2017, "doi": "10.1/x", "arxiv_id": "1706.03762", | |
| "venue": "NeurIPS", "authors": meta.authors_provisional, "url": "https://arxiv.org/abs/1706.03762", | |
| })]) | |
| payload, sources = paper_module.build_metadata_json(prov, meta) | |
| (mod / "metadata.json").write_text(json.dumps(payload), encoding="utf-8") | |
| (mod / "sources.json").write_text(json.dumps(sources), encoding="utf-8") | |
| (mod / "references.md").write_text( | |
| "# References\n1. Bahdanau et al. Neural MT. 2015. ⚠️ `needs-verification`\n" | |
| "2. Sutskever et al. Seq2Seq. 2014.\n", encoding="utf-8") | |
| return mod | |
| def test_load_metadata_roundtrip(tmp_path): | |
| mod = _write_module(tmp_path) | |
| meta = module_io.load_metadata(mod) | |
| assert meta.title == "Attention Is All You Need" | |
| assert meta.year == 2017 | |
| assert meta.doi == "10.1/x" | |
| assert meta.arxiv_id == "1706.03762" | |
| assert meta.venue == "NeurIPS" | |
| assert meta.authors_provisional == ["Vaswani", "Shazeer"] | |
| assert meta.slug == "2017-attention" | |
| def test_load_extraction_roundtrip(tmp_path): | |
| mod = _write_module(tmp_path) | |
| ext = module_io.load_extraction(mod) | |
| assert ext.abstract == "We propose the Transformer." | |
| assert ext.section_headings == ["Introduction", "Method"] | |
| assert "relies on attention" in (ext.full_text or "") | |
| assert len(ext.references_raw) == 2 | |
| def test_load_references_strips_markers(tmp_path): | |
| mod = _write_module(tmp_path) | |
| refs = module_io.load_references(mod) | |
| assert refs[0] == "Bahdanau et al. Neural MT. 2015." # status marker stripped | |
| assert "Sutskever" in refs[1] | |
| def test_load_missing_files_tolerant(tmp_path): | |
| empty = tmp_path / "empty" | |
| empty.mkdir() | |
| assert module_io.load_metadata(empty).title == "Unknown Title" | |
| assert module_io.load_extraction(empty).references_raw == [] | |
| def test_write_module_file_maps_spec_name(tmp_path): | |
| mod = tmp_path / "m" | |
| mod.mkdir() | |
| dest = module_io.write_module_file(mod, "teaching-path.md", "# Study\n") | |
| assert dest.name == "study_notes.md" # internal key mapped to spec name | |
| assert dest.read_text() == "# Study\n" | |