From 92f1daffad3361f8cfb88fe71e59b8a0b0a15770 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Tue, 22 Jan 2019 12:20:13 -0800 Subject: more per-entity tests --- python/tests/api_containers.py | 48 +++++++++++++++++++ python/tests/api_creators.py | 44 +++++++++++++++++ python/tests/api_files.py | 52 ++++++++++++++++++++ python/tests/api_filesets.py | 56 ++++++++++++---------- python/tests/api_misc.py | 8 ---- python/tests/api_releases.py | 103 ++++++++++++++++++++++++++++++++++++++++ python/tests/api_webcaptures.py | 59 +++++++++++++---------- 7 files changed, 312 insertions(+), 58 deletions(-) create mode 100644 python/tests/api_containers.py create mode 100644 python/tests/api_creators.py create mode 100644 python/tests/api_files.py create mode 100644 python/tests/api_releases.py (limited to 'python') diff --git a/python/tests/api_containers.py b/python/tests/api_containers.py new file mode 100644 index 00000000..674ae3b8 --- /dev/null +++ b/python/tests/api_containers.py @@ -0,0 +1,48 @@ + +import json +import pytest +from copy import copy + +from fatcat_client import * +from fatcat_client.rest import ApiException +from fixtures import * + + +def test_container(api): + eg = quick_eg(api) + + # all the fields! + c1 = ContainerEntity( + name="some container name", + container_type="journal", + publisher="some container publisher", + issnl="1234-567X", + wikidata_qid="Q954248", + extra=dict(a=1, b=2), + ) + + c1edit = api.create_container(c1, editgroup_id=eg.editgroup_id) + api.accept_editgroup(eg.editgroup_id) + c2 = api.get_container(c1edit.ident) + + # check that fields match + assert c1.name == c2.name + assert c1.container_type == c2.container_type + assert c1.publisher == c2.publisher + assert c1.issnl == c2.issnl + assert c1.wikidata_qid == c2.wikidata_qid + assert c1.extra == c2.extra + + # expansion + # TODO: via release + # lookup + # TODO: via issnl; but need to generate random identifiers + +def test_container_examples(api): + + api.lookup_container(issnl='1549-1277') + + c1 = api.get_container('aaaaaaaaaaaaaeiraaaaaaaaam') + assert c1.name == "PLOS Medicine" + assert c1.issnl == "1549-1277" + diff --git a/python/tests/api_creators.py b/python/tests/api_creators.py new file mode 100644 index 00000000..7443675b --- /dev/null +++ b/python/tests/api_creators.py @@ -0,0 +1,44 @@ + +import json +import pytest +from copy import copy + +from fatcat_client import * +from fatcat_client.rest import ApiException +from fixtures import * + + +def test_creators(api): + eg = quick_eg(api) + + # all the fields! + c1 = CreatorEntity( + display_name="Emma Smith", + given_name="emma", + surname="smith", + orcid="0000-0002-1825-0097", + wikidata_qid="Q9542248", + extra=dict(a=1, b=5), + ) + + c1edit = api.create_creator(c1, editgroup_id=eg.editgroup_id) + api.accept_editgroup(eg.editgroup_id) + c2 = api.get_creator(c1edit.ident) + + # check that fields match + assert c1.display_name == c2.display_name + assert c1.given_name == c2.given_name + assert c1.surname == c2.surname + assert c1.orcid == c2.orcid + assert c1.wikidata_qid == c2.wikidata_qid + assert c1.extra == c2.extra + + # expansion + # TODO: via release + # lookup + # TODO: via issnl; but need to generate random identifiers + +def test_creators_examples(api): + # TODO: aaaaaaaaaaaaaircaaaaaaaaam + + api.lookup_creator(orcid='0000-0003-3118-6859') diff --git a/python/tests/api_files.py b/python/tests/api_files.py new file mode 100644 index 00000000..033538ef --- /dev/null +++ b/python/tests/api_files.py @@ -0,0 +1,52 @@ + +import json +import pytest +from copy import copy + +from fatcat_client import * +from fatcat_client.rest import ApiException +from fixtures import * + + +def test_file(api): + + eg = quick_eg(api) + + # all the fields! + f1 = FileEntity( + size=89238, + md5="7ce6615b2a5904939576d9567bd5f68e", + sha1="027e7ed3ea1a40e92dd2657a1e3c992b5dc45dd2", + sha256="f1f4f18a904e76818863ccbc6141fce92b0dcb47b0d6041aec98bc6806e393c3", + mimetype="application/pdf", + extra=dict(a=2, b=5), + urls=[ + FileEntityUrls(url="https://web.archive.org/web/12345542/something.com/blah.pdf", rel="webarchive"), + ], + release_ids=[], + ) + + f1edit = api.create_file(f1, editgroup_id=eg.editgroup_id) + api.accept_editgroup(eg.editgroup_id) + f2 = api.get_file(f1edit.ident) + + # check that fields match + assert f1.size == f2.size + assert f1.md5 == f2.md5 + assert f1.sha1 == f2.sha1 + assert f1.sha256 == f2.sha256 + assert f1.mimetype == f2.mimetype + assert f1.extra == f2.extra + assert f1.urls == f2.urls + assert f1.release_ids == f2.release_ids + + # expansion + # TODO: via release + # lookup + # TODO: via hashes; but need to generate random? + +def test_file_examples(api): + + api.lookup_file(sha256='ffc1005680cb620eec4c913437dfabbf311b535cfe16cbaeb2faec1f92afc362') + + f1 = api.get_file('aaaaaaaaaaaaamztaaaaaaaaam') diff --git a/python/tests/api_filesets.py b/python/tests/api_filesets.py index 58ee7b5c..966b85ca 100644 --- a/python/tests/api_filesets.py +++ b/python/tests/api_filesets.py @@ -14,30 +14,31 @@ def test_fileset(api): r1 = ReleaseEntity(title="test fileset release") r1edit = api.create_release(r1, editgroup_id=eg.editgroup_id) - fs1 = FilesetEntity() - fs1.manifest = [ - FilesetEntityManifest( - path="data/thing.tar.gz", - size=54321, - md5="540da3ea6e448d8dfb057c05225f853a", - sha1="1dab6a0e110f9b5d70b18db0abf051f7f93faf06", - sha256="c7b49f3e84cd1b7cb0b0e3e9f632b7be7e21b4dc229df23331f880a8a7dfa75a", - extra={"a": 1, "b": 3}, - ), - FilesetEntityManifest( - path="README.md", - size=54210, - md5="5f83592b5249671719bbed6ce91ecfa8", - sha1="455face3598611458efe1f072e58624790a67266", - sha256="429bcafa4d3d0072d5b2511e12c85c1aac1d304011d1c406da14707f7b9cd905", - extra={"x": 1, "y": "q"}, - ), - ] - fs1.urls = [ - FileEntityUrls(url="https://archive.org/download/fileset-123/", rel="repository"), - FileEntityUrls(url="https://humble-host.com/~user123/dataset/", rel="web"), - ] - fs1.release_ids = [r1edit.ident] + fs1 = FilesetEntity( + manifest = [ + FilesetEntityManifest( + path="data/thing.tar.gz", + size=54321, + md5="540da3ea6e448d8dfb057c05225f853a", + sha1="1dab6a0e110f9b5d70b18db0abf051f7f93faf06", + sha256="c7b49f3e84cd1b7cb0b0e3e9f632b7be7e21b4dc229df23331f880a8a7dfa75a", + extra={"a": 1, "b": 3}, + ), + FilesetEntityManifest( + path="README.md", + size=54210, + md5="5f83592b5249671719bbed6ce91ecfa8", + sha1="455face3598611458efe1f072e58624790a67266", + sha256="429bcafa4d3d0072d5b2511e12c85c1aac1d304011d1c406da14707f7b9cd905", + extra={"x": 1, "y": "q"}, + ), + ], + urls = [ + FileEntityUrls(url="https://archive.org/download/fileset-123/", rel="repository"), + FileEntityUrls(url="https://humble-host.com/~user123/dataset/", rel="web"), + ], + release_ids = [r1edit.ident], + ) fs1edit = api.create_fileset(fs1, editgroup_id=eg.editgroup_id) api.accept_editgroup(eg.editgroup_id) @@ -52,6 +53,13 @@ def test_fileset(api): r1 = api.get_release(r1edit.ident, expand="filesets") assert r1.filesets[0].manifest == fs1.manifest +def test_fileset_examples(api): + fs3 = api.get_fileset('aaaaaaaaaaaaaztgaaaaaaaaam') + + assert fs3.urls[0].url == 'http://other-personal-blog.name/dataset/' + assert fs3.urls[1].rel == 'archive' + assert fs3.manifest[1].md5 == 'f4de91152c7ab9fdc2a128f962faebff' + assert fs3.manifest[1].extra['mimetype'] == 'application/gzip' def test_bad_fileset(api): diff --git a/python/tests/api_misc.py b/python/tests/api_misc.py index 3510ea82..0a0f16da 100644 --- a/python/tests/api_misc.py +++ b/python/tests/api_misc.py @@ -8,14 +8,6 @@ from fatcat_client.rest import ApiException from fixtures import * -def test_lookups(api): - - api.lookup_creator(orcid='0000-0003-3118-6859') - api.lookup_container(issnl='1549-1277') - api.lookup_file(sha256='ffc1005680cb620eec4c913437dfabbf311b535cfe16cbaeb2faec1f92afc362') - api.lookup_release(pmid='54321') - api.lookup_release(isbn13='978-3-16-148410-0') - def test_lookup_hide_extend(api): r = api.lookup_release(doi='10.1371/journal.pmed.0020124') diff --git a/python/tests/api_releases.py b/python/tests/api_releases.py new file mode 100644 index 00000000..d5b31ad3 --- /dev/null +++ b/python/tests/api_releases.py @@ -0,0 +1,103 @@ + +import json +import pytest +import datetime +from copy import copy + +from fatcat_client import * +from fatcat_client.rest import ApiException +from fixtures import * + + +def test_release(api): + + eg = quick_eg(api) + + # all the fields! + r1 = ReleaseEntity( + title="some title", + original_title="оригинальное название", + release_type="post-weblog", + release_status="pre-print", + #release_date=datetime.datetime.utcnow(), + release_year=2015, + doi="10.5555/12345678", + pmid="12345", + pmcid="PMC4321", + wikidata_qid="Q1234", + isbn13="978-3-16-148410-0", + core_id="187348", + arxiv_id="aslkdjfh", + jstor_id="8328424", + volume="84", + issue="XII", + pages="4-99", + publisher="some publisher", + language="en", + license_slug="CC-0", + extra=dict(a=1, b=2), + contribs=[], + refs=[], + abstracts=[ + ReleaseEntityAbstracts( + content="this is some abstract", + mimetype="text/plain", + lang="en"), + ReleaseEntityAbstracts( + content="this is some other abstract", + mimetype="text/plain", + lang="de"), + ], + ) + + r1edit = api.create_release(r1, editgroup_id=eg.editgroup_id) + api.accept_editgroup(eg.editgroup_id) + r2 = api.get_release(r1edit.ident) + + # check that fields match + assert r1.title == r2.title + assert r1.original_title == r2.original_title + assert r1.release_type == r2.release_type + assert r1.release_date == r2.release_date + assert r1.release_year == r2.release_year + assert r1.doi == r2.doi + assert r1.pmid == r2.pmid + assert r1.pmcid == r2.pmcid + assert r1.wikidata_qid == r2.wikidata_qid + assert r1.isbn13 == r2.isbn13 + assert r1.core_id == r2.core_id + assert r1.arxiv_id == r2.arxiv_id + assert r1.jstor_id == r2.jstor_id + assert r1.volume == r2.volume + assert r1.issue == r2.issue + assert r1.pages == r2.pages + assert r1.publisher == r2.publisher + assert r1.language == r2.language + assert r1.license_slug == r2.license_slug + assert r1.extra == r2.extra + + for i in range(len(r1.abstracts)): + r1.abstracts[i].content == r2.abstracts[i].content + r1.abstracts[i].mimetype == r2.abstracts[i].mimetype + r1.abstracts[i].lang == r2.abstracts[i].lang + for i in range(len(r1.contribs)): + r1.contribs[i] == r2.contribs[i] + for i in range(len(r1.refs)): + r1.refs[i] == r2.refs[i] + + # expansion + # TODO: via work + # lookup + # TODO: via all; but need to generate random identifiers + +def test_release_examples(api): + + api.lookup_release(pmid='54321') + api.lookup_release(isbn13='978-3-16-148410-0') + + r1 = api.get_release('aaaaaaaaaaaaarceaaaaaaaaai') + assert r1.title == "bigger example" + assert len(r1.refs) == 5 + assert r1.contribs[0].role == "editor" + assert r1.abstracts[0].mimetype == "application/xml+jats" + diff --git a/python/tests/api_webcaptures.py b/python/tests/api_webcaptures.py index 6af32bc8..dc1754b3 100644 --- a/python/tests/api_webcaptures.py +++ b/python/tests/api_webcaptures.py @@ -19,33 +19,33 @@ def test_webcapture(api): original_url = "http://example.site", #timestamp = "2012-01-02T03:04:05Z", timestamp = datetime.datetime.now(datetime.timezone.utc), + cdx = [ + WebcaptureEntityCdx( + surt="site,example,)/data/thing.tar.gz", + #timestamp="2012-01-02T03:04:05Z", + timestamp=datetime.datetime.now(datetime.timezone.utc), + url="http://example.site/data/thing.tar.gz", + mimetype="application/gzip", + status_code=200, + sha1="455face3598611458efe1f072e58624790a67266", + sha256="c7b49f3e84cd1b7cb0b0e3e9f632b7be7e21b4dc229df23331f880a8a7dfa75a", + ), + WebcaptureEntityCdx( + surt="site,example,)/README.md", + #timestamp="2012-01-02T03:04:05Z", + timestamp=datetime.datetime.now(datetime.timezone.utc), + url="http://example.site/README.md", + mimetype="text/markdown", + status_code=200, + sha1="455face3598611458efe1f072e58624790a67266", + sha256="429bcafa4d3d0072d5b2511e12c85c1aac1d304011d1c406da14707f7b9cd905", + ), + ], + archive_urls = [ + FileEntityUrls(rel="wayback", url="https://web.archive.org/web/"), + ], + release_ids = [r1edit.ident], ) - wc1.cdx = [ - WebcaptureEntityCdx( - surt="site,example,)/data/thing.tar.gz", - #timestamp="2012-01-02T03:04:05Z", - timestamp=datetime.datetime.now(datetime.timezone.utc), - url="http://example.site/data/thing.tar.gz", - mimetype="application/gzip", - status_code=200, - sha1="455face3598611458efe1f072e58624790a67266", - sha256="c7b49f3e84cd1b7cb0b0e3e9f632b7be7e21b4dc229df23331f880a8a7dfa75a", - ), - WebcaptureEntityCdx( - surt="site,example,)/README.md", - #timestamp="2012-01-02T03:04:05Z", - timestamp=datetime.datetime.now(datetime.timezone.utc), - url="http://example.site/README.md", - mimetype="text/markdown", - status_code=200, - sha1="455face3598611458efe1f072e58624790a67266", - sha256="429bcafa4d3d0072d5b2511e12c85c1aac1d304011d1c406da14707f7b9cd905", - ), - ] - wc1.archive_urls = [ - FileEntityUrls(rel="wayback", url="https://web.archive.org/web/"), - ] - wc1.release_ids = [r1edit.ident] wc1edit = api.create_webcapture(wc1, editgroup_id=eg.editgroup_id) api.accept_editgroup(eg.editgroup_id) @@ -68,6 +68,13 @@ def test_webcapture(api): print(r1) assert r1.webcaptures[0].cdx == wc1.cdx +def test_webcapture_examples(api): + wc3 = api.get_webcapture('aaaaaaaaaaaaa53xaaaaaaaaam') + + assert wc3.cdx[0].surt == 'org,asheesh)/' + assert wc3.cdx[1].sha1 == 'a637f1d27d9bcb237310ed29f19c07e1c8cf0aa5' + assert wc3.archive_urls[1].rel == 'warc' + def test_bad_webcapture(api): -- cgit v1.2.3