diff options
Diffstat (limited to 'python/tests')
| -rw-r--r-- | python/tests/import_arxiv.py | 96 | 
1 files changed, 96 insertions, 0 deletions
| diff --git a/python/tests/import_arxiv.py b/python/tests/import_arxiv.py new file mode 100644 index 00000000..726bafc5 --- /dev/null +++ b/python/tests/import_arxiv.py @@ -0,0 +1,96 @@ + +import json, gzip +import pytest +from fatcat_tools.importers import ArxivRawImporter, Bs4XmlFilePusher +from fixtures import api +from bs4 import BeautifulSoup + + +@pytest.fixture(scope="function") +def arxiv_importer(api): +    ari = ArxivRawImporter(api, bezerk_mode=True) +    ari._test_override = True +    return ari + +def test_arxiv_importer(arxiv_importer): +    last_index = arxiv_importer.api.get_changelog(limit=1)[0].index +    with open('tests/files/arxivraw_1810.09584.xml', 'r') as f: +        arxiv_importer.bezerk_mode = True +        counts = Bs4XmlFilePusher(arxiv_importer, f, "record").run() +    assert counts['insert'] == 2 +    assert counts['exists'] == 0 +    assert counts['skip'] == 0 + +    # fetch most recent editgroup +    change = arxiv_importer.api.get_changelog_entry(index=last_index+1) +    eg = change.editgroup +    assert eg.description +    assert "arxiv" in eg.description.lower() +    assert eg.extra['git_rev'] +    assert "fatcat_tools.ArxivRawImporter" in eg.extra['agent'] + +    last_index = arxiv_importer.api.get_changelog(limit=1)[0].index +    with open('tests/files/arxivraw_1810.09584.xml', 'r') as f: +        arxiv_importer.bezerk_mode = False +        arxiv_importer.reset() +        counts = Bs4XmlFilePusher(arxiv_importer, f, "record").run() +    assert counts['insert'] == 0 +    assert counts['exists'] == 2 +    assert counts['skip'] == 0 +    assert last_index == arxiv_importer.api.get_changelog(limit=1)[0].index + +def test_arxiv_xml_parse(arxiv_importer): +    with open('tests/files/arxivraw_1810.09584.xml', 'r') as f: +        soup = BeautifulSoup(f, "xml") +        r = arxiv_importer.parse_record(soup.find_all("record")[0]) + +    r1 = r[0] +    r2 = r[1] +    print(r1.extra) +    print(r2.extra) +    assert r1.work_id == r2.work_id +    assert r1.title == "Martingale theory for housekeeping heat" +    assert r1.subtitle == None +    assert r1.original_title == None +    assert r1.release_type == "article-journal" +    assert r1.release_stage == "submitted" +    assert r2.release_stage == "published" +    assert r1.license_slug == "ARXIV-NED-1.0" +    assert r1.version == "v1" +    assert r2.version == "v2" +    assert r1.ext_ids.arxiv == "1810.09584v1" +    assert r2.ext_ids.arxiv == "1810.09584v2" +    assert r1.ext_ids.doi == None +    assert r2.ext_ids.doi == "10.1209/0295-5075/124/60006" +    assert r1.release_year == 2018 +    assert str(r1.release_date) == "2018-10-22" +    assert r2.release_year == 2019 +    assert str(r2.release_date) == "2019-01-13" +    # matched by ISSN, so shouldn't be in there? +    #assert extra['container_name'] == "Abstracts of the Papers Communicated to the Royal Society of London" +    assert len(r1.contribs) == 4 +    # XXX: extra['arxiv'] stuff + +    assert r1.contribs[0].raw_name == "Raphael Chetrite" +    assert r1.contribs[0].role == "author" +    assert r1.contribs[1].raw_name == "Shamik Gupta" +    assert r1.contribs[2].raw_name == "Izaak Neri" +    assert r1.contribs[3].raw_name == "Édgar Roldán" +    assert r1.contribs[3].role == "author" + +    assert len(r1.contribs) == 4 +    assert r1.contribs == r2.contribs + +    assert r1.abstracts[0].content.startswith("The housekeeping heat is the energy exchanged") +    # order isn't deterministic +    assert "application/x-latex" in [a.mimetype for a in r1.abstracts] +    assert "text/plain" in [a.mimetype for a in r1.abstracts] + +    assert r1.abstracts == r2.abstracts + +    assert r1.extra['arxiv']['comments'] == "7 pages, 2 figures" +    assert r1.extra['arxiv']['categories'] == ["cond-mat.stat-mech", "physics.bio-ph", "physics.data-an"] + +    assert r1.extra == r2.extra + +    assert not r1.refs | 
