summaryrefslogtreecommitdiffstats
path: root/python/tests
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-05-16 18:34:19 -0700
committerBryan Newbold <bnewbold@robocracy.org>2018-05-16 18:34:19 -0700
commit4cf667c283d54f769e73d76bb23bbb68b4329cf8 (patch)
tree4bbeb1cdeb053c09e86e2cc41962382bcb837729 /python/tests
parentb2d5968e0a7ac5576782f54980c930345f4c5298 (diff)
downloadfatcat-4cf667c283d54f769e73d76bb23bbb68b4329cf8.tar.gz
fatcat-4cf667c283d54f769e73d76bb23bbb68b4329cf8.zip
move python code to subdirectory
Diffstat (limited to 'python/tests')
-rw-r--r--python/tests/api.py308
-rw-r--r--python/tests/api_client.py14
-rw-r--r--python/tests/entity_lifecycle.py80
-rw-r--r--python/tests/files/crossref-works.2018-01-21.badsample.json10
-rw-r--r--python/tests/fixtures.py169
-rw-r--r--python/tests/models.py87
-rw-r--r--python/tests/routes.py67
-rw-r--r--python/tests/test_fixtures.py29
8 files changed, 764 insertions, 0 deletions
diff --git a/python/tests/api.py b/python/tests/api.py
new file mode 100644
index 00000000..02875f64
--- /dev/null
+++ b/python/tests/api.py
@@ -0,0 +1,308 @@
+
+import json
+import unittest
+import tempfile
+import pytest
+import fatcat
+import fatcat.sql
+from fatcat.models import *
+from fixtures import *
+
+
+def test_health(app):
+ rv = app.get('/health')
+ obj = json.loads(rv.data.decode('utf-8'))
+ assert obj['ok']
+
+def test_api_work(app):
+ fatcat.dummy.insert_example_works()
+
+ # Invalid Id
+ rv = app.get('/v0/work/_')
+ assert rv.status_code == 404
+
+ # Random
+ rv = app.get('/v0/work/random')
+ rv = app.get(rv.location)
+ work = json.loads(rv.data.decode('utf-8'))
+ check_entity_fields(work)
+ print(work)
+ assert work['title']
+ assert work['work_type']
+
+ # Valid Id (from random above)
+ rv = app.get('/v0/work/{}'.format(work['id']))
+ assert rv.status_code == 200
+
+ # Missing Id
+ rv = app.get('/v0/work/r3zga5b9cd7ef8gh084714iljk')
+ assert rv.status_code == 404
+
+def test_api_work_create(app):
+ assert WorkIdent.query.count() == 0
+ assert WorkRev.query.count() == 0
+ assert WorkEdit.query.count() == 0
+ rv = app.post('/v0/work',
+ data=json.dumps(dict(title="dummy", work_type="thing", extra=dict(a=1, b="zing"))),
+ headers={"content-type": "application/json"})
+ print(rv)
+ assert rv.status_code == 200
+ assert WorkIdent.query.count() == 1
+ assert WorkRev.query.count() == 1
+ assert WorkEdit.query.count() == 1
+ # not alive yet
+ assert WorkIdent.query.filter(WorkIdent.is_live==True).count() == 0
+
+def test_api_rich_create(app):
+
+ # TODO: create user?
+
+ rv = app.post('/v0/editgroup',
+ data=json.dumps(dict(
+ extra=dict(q=1, u="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ editgroup_id = obj['id']
+
+ for cls in (WorkIdent, WorkRev, WorkEdit,
+ ContainerIdent, ContainerRev, ContainerEdit,
+ CreatorIdent, CreatorRev, CreatorEdit,
+ ReleaseIdent, ReleaseRev, ReleaseEdit,
+ FileIdent, FileRev, FileEdit,
+ ChangelogEntry):
+ assert cls.query.count() == 0
+
+ rv = app.post('/v0/container',
+ data=json.dumps(dict(
+ name="schmournal",
+ publisher="society of authors",
+ issn="2222-3333",
+ editgroup=editgroup_id,
+ extra=dict(a=2, i="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ container_id = obj['id']
+
+ rv = app.post('/v0/creator',
+ data=json.dumps(dict(
+ name="anon y. mouse",
+ orcid="0000-0002-1825-0097",
+ editgroup=editgroup_id,
+ extra=dict(w=1, q="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ creator_id = obj['id']
+
+ rv = app.post('/v0/work',
+ data=json.dumps(dict(
+ title="dummy work",
+ work_type="book",
+ editgroup=editgroup_id,
+ extra=dict(a=3, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ work_id = obj['id']
+
+ # this stub work will be referenced
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="derivative work",
+ work_type="journal-article",
+ work=work_id,
+ creators=[creator_id],
+ doi="10.1234/58",
+ editgroup=editgroup_id,
+ refs=[
+ dict(stub="some other journal article"),
+ ],
+ extra=dict(f=7, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ stub_release_id = obj['id']
+
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="dummy work",
+ work_type="book",
+ work=work_id,
+ container=container_id,
+ creators=[creator_id],
+ doi="10.1234/5678",
+ editgroup=editgroup_id,
+ refs=[
+ dict(stub="some book", target=stub_release_id),
+ ],
+ extra=dict(f=7, b="loopy"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ release_id = obj['id']
+
+ rv = app.post('/v0/file',
+ data=json.dumps(dict(
+ sha1="deadbeefdeadbeef",
+ size=1234,
+ releases=[release_id],
+ editgroup=editgroup_id,
+ extra=dict(f=4, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ file_id = obj['id']
+
+ for cls in (WorkIdent, WorkRev, WorkEdit,
+ ContainerIdent, ContainerRev, ContainerEdit,
+ CreatorIdent, CreatorRev, CreatorEdit,
+ FileIdent, FileRev, FileEdit):
+ assert cls.query.count() == 1
+ for cls in (ReleaseIdent, ReleaseRev, ReleaseEdit):
+ assert cls.query.count() == 2
+
+ for cls in (WorkIdent,
+ ContainerIdent,
+ CreatorIdent,
+ ReleaseIdent,
+ FileIdent):
+ assert cls.query.filter(cls.is_live==True).count() == 0
+
+ assert ChangelogEntry.query.count() == 0
+ rv = app.post('/v0/editgroup/{}/accept'.format(editgroup_id),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ assert ChangelogEntry.query.count() == 1
+
+ for cls in (WorkIdent, WorkRev, WorkEdit,
+ ContainerIdent, ContainerRev, ContainerEdit,
+ CreatorIdent, CreatorRev, CreatorEdit,
+ FileIdent, FileRev, FileEdit):
+ assert cls.query.count() == 1
+ for cls in (ReleaseIdent, ReleaseRev, ReleaseEdit):
+ assert cls.query.count() == 2
+
+ for cls in (WorkIdent,
+ ContainerIdent,
+ CreatorIdent,
+ FileIdent):
+ assert cls.query.filter(cls.is_live==True).count() == 1
+ assert ReleaseIdent.query.filter(ReleaseIdent.is_live==True).count() == 2
+
+ # Test that foreign key relations worked
+ release_rv = json.loads(app.get('/v0/release/{}'.format(release_id)).data.decode('utf-8'))
+ print(release_rv)
+ assert release_rv['creators'][0]['creator'] == creator_id
+ assert release_rv['container']['id'] == container_id
+ assert release_rv['work']['id'] == work_id
+ assert release_rv['refs'][0]['target'] == stub_release_id
+
+ file_rv = json.loads(app.get('/v0/file/{}'.format(file_id)).data.decode('utf-8'))
+ print(file_rv)
+ assert file_rv['releases'][0]['release'] == release_id
+
+ # test that editor's active edit group is now invalid
+ editor = Editor.query.first()
+ assert editor.active_editgroup is None
+
+def test_api_release_lookup(rich_app):
+ app = rich_app
+
+ rv = app.get('/v0/release/1',
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+
+ rv = app.get('/v0/release/lookup',
+ data=json.dumps(dict(doi="10.1234/5678")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ assert obj['doi'] == "10.1234/5678"
+ assert obj.get('id') != None
+
+ rv = app.get('/v0/release/lookup',
+ data=json.dumps(dict(doi="10.1234/5678_noexit")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 404
+
+ rv = app.get('/v0/release/lookup',
+ data=json.dumps(dict(doi="not_even_valid_doi")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 400
+
+def test_api_creator_lookup(rich_app):
+ app = rich_app
+
+ rv = app.get('/v0/creator/1',
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+
+ rv = app.get('/v0/creator/lookup',
+ data=json.dumps(dict(orcid="0000-0002-1825-0097")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ assert obj['orcid'] == "0000-0002-1825-0097"
+ assert obj.get('id') != None
+
+ rv = app.get('/v0/creator/lookup',
+ data=json.dumps(dict(orcid="0000-0002-1825-0098")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 404
+
+ rv = app.get('/v0/creator/lookup',
+ data=json.dumps(dict(orcid="not_even_valid_orcid")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 400
+
+
+def test_api_container_lookup(rich_app):
+ app = rich_app
+
+ rv = app.get('/v0/container/1',
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+
+ rv = app.get('/v0/container/lookup',
+ data=json.dumps(dict(issn="2222-3333")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ assert obj['issn'] == "2222-3333"
+ assert obj.get('id') != None
+
+ rv = app.get('/v0/container/lookup',
+ data=json.dumps(dict(issn="2222-3334")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 404
+
+ rv = app.get('/v0/container/lookup',
+ data=json.dumps(dict(issn="not_even_valid_issn")),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 400
+
+def test_api_editor_get(rich_app):
+ app = rich_app
+
+ rv = app.get('/v0/editor/admin',
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ print(obj)
+ assert obj['username'] == "admin"
+ assert obj['id'] == 1
+
+def test_api_editor_changelog(rich_app):
+ app = rich_app
+
+ rv = app.get('/v0/editor/admin/changelog',
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ print(obj)
+ assert len(obj) == 1
diff --git a/python/tests/api_client.py b/python/tests/api_client.py
new file mode 100644
index 00000000..37e3da56
--- /dev/null
+++ b/python/tests/api_client.py
@@ -0,0 +1,14 @@
+
+import pytest
+import fatcat.api_client
+from fixtures import *
+
+
+def test_client_health(api_client):
+ assert api_client.health() != None
+
+
+def test_import_crossref(api_client):
+ api_client.import_crossref_file('tests/files/crossref-works.2018-01-21.badsample.json')
+
+ # TODO: use API to check that entities actually created...
diff --git a/python/tests/entity_lifecycle.py b/python/tests/entity_lifecycle.py
new file mode 100644
index 00000000..4ac7ee68
--- /dev/null
+++ b/python/tests/entity_lifecycle.py
@@ -0,0 +1,80 @@
+
+import json
+import unittest
+import tempfile
+import pytest
+import fatcat
+import fatcat.sql
+from fatcat.models import *
+from fixtures import *
+
+
+def test_merge_works(app):
+
+ # two works, each with releases
+ rv = app.post('/v0/work',
+ data=json.dumps(dict()),
+ headers={"content-type": "application/json"})
+ workA_id = json.loads(rv.data.decode('utf-8'))['id']
+
+ rv = app.post('/v0/work',
+ data=json.dumps(dict()),
+ headers={"content-type": "application/json"})
+ workB_id = json.loads(rv.data.decode('utf-8'))['id']
+
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="some release",
+ work_type="journal-article",
+ work=workA_id,
+ doi="10.1234/A1")),
+ headers={"content-type": "application/json"})
+ releaseA1 = json.loads(rv.data.decode('utf-8'))['id']
+
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="some release",
+ work_type="journal-article",
+ work=workB_id,
+ doi="10.1234/B1")),
+ headers={"content-type": "application/json"})
+ releaseB1 = json.loads(rv.data.decode('utf-8'))['id']
+
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="some release",
+ work_type="journal-article",
+ work=workB_id,
+ doi="10.1234/A1")),
+ headers={"content-type": "application/json"})
+ releaseB2 = json.loads(rv.data.decode('utf-8'))['id']
+
+ # XXX: what if workB primary was set?
+
+ editgroup_id = 1
+ rv = app.post('/v0/editgroup/{}/accept'.format(editgroup_id),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ assert ChangelogEntry.query.count() == 1
+ assert WorkIdent.query.filter(WorkIdent.is_live==True).count() == 2
+ assert ReleaseIdent.query.filter(ReleaseIdent.is_live==True).count() == 3
+
+ # merge works
+ fatcat.sql.merge_works(workA_id, workB_id)
+ editgroup_id = 2
+ rv = app.post('/v0/editgroup/{}/accept'.format(editgroup_id),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+
+ # check results
+ assert ChangelogEntry.query.count() == 2
+ assert WorkIdent.query.filter(WorkIdent.is_live==True).count() == 2
+ assert ReleaseIdent.query.filter(ReleaseIdent.is_live==True).count() == 3
+
+ workA_json = json.loads(app.get('/v0/work/{}'.format(workA_id)).data.decode('utf-8'))
+ workB_json = json.loads(app.get('/v0/work/{}'.format(workB_id)).data.decode('utf-8'))
+ assert workA_json['rev'] == workB_json['rev']
+ print(workA_json)
+ print(workB_json)
+ assert workA_json['redirect_id'] == None
+ assert workB_json['redirect_id'] == workA_json['id']
diff --git a/python/tests/files/crossref-works.2018-01-21.badsample.json b/python/tests/files/crossref-works.2018-01-21.badsample.json
new file mode 100644
index 00000000..143adf3e
--- /dev/null
+++ b/python/tests/files/crossref-works.2018-01-21.badsample.json
@@ -0,0 +1,10 @@
+{ "_id" : { "$oid" : "5a55183088a035a45bd906de" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:35:29Z", "timestamp" : { "$numberLong" : "1508769329541" } }, "reference-count" : 7, "publisher" : "Elsevier BV", "issue" : "3", "license" : [ { "URL" : "http://www.elsevier.com/tdm/userlicense/1.0/", "start" : { "date-parts" : [ [ 2002, 3, 1 ] ], "date-time" : "2002-03-01T00:00:00Z", "timestamp" : { "$numberLong" : "1014940800000" } }, "delay-in-days" : 0, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Journal of the American Academy of Dermatology" ], "published-print" : { "date-parts" : [ [ 2002, 3 ] ] }, "DOI" : "10.1067/mjd.2002.110660", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 24 ] ], "date-time" : "2002-08-24T22:14:26Z", "timestamp" : { "$numberLong" : "1030227266000" } }, "page" : "434-436", "source" : "Crossref", "is-referenced-by-count" : 7, "title" : [ "Progressive generalized alopecia due to systemic amyloidosis" ], "prefix" : "10.1067", "volume" : "46", "author" : [ { "given" : "Michael E.", "family" : "Lutz", "affiliation" : [] }, { "given" : "Mark R.", "family" : "Pittelkow", "affiliation" : [] } ], "member" : "78", "container-title" : [ "Journal of the American Academy of Dermatology" ], "link" : [ { "URL" : "http://api.elsevier.com/content/article/PII:S0190962202365551?httpAccept=text/xml", "content-type" : "text/xml", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://api.elsevier.com/content/article/PII:S0190962202365551?httpAccept=text/plain", "content-type" : "text/plain", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 6, 14 ] ], "date-time" : "2017-06-14T16:37:31Z", "timestamp" : { "$numberLong" : "1497458251000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2002, 3 ] ] }, "references-count" : 7, "alternative-id" : [ "S0190962202365551" ], "URL" : "http://dx.doi.org/10.1067/mjd.2002.110660", "ISSN" : [ "0190-9622" ], "issn-type" : [ { "value" : "0190-9622", "type" : "print" } ], "subject" : [ "Dermatology" ] }
+{ "_id" : { "$oid" : "5a5513fb88a035a45bd63d2e" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:15:17Z", "timestamp" : { "$numberLong" : "1508768117199" } }, "reference-count" : 25, "publisher" : "Wiley-Blackwell", "issue" : "4", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 6452, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Int. J. Quant. Chem." ], "published-print" : { "date-parts" : [ [ 1998 ] ] }, "DOI" : "10.1002/(sici)1097-461x(1998)66:4<261::aid-qua1>3.0.co;2-t", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T21:09:51Z", "timestamp" : { "$numberLong" : "1030309791000" } }, "page" : "261-272", "source" : "Crossref", "is-referenced-by-count" : 5, "title" : [ "Renormalized perturbation theory by the moment method for degenerate states: Anharmonic oscillators" ], "prefix" : "10.1002", "volume" : "66", "author" : [ { "given" : "Marcelo D.", "family" : "Radicioni", "affiliation" : [] }, { "given" : "Carlos G.", "family" : "Diaz", "affiliation" : [] }, { "given" : "Francisco M.", "family" : "Fern�ndez", "affiliation" : [] } ], "member" : "311", "reference" : [ { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB1", "author" : "Swenson", "volume" : "57", "first-page" : "1734", "year" : "1972", "journal-title" : "J. Chem. Phys.", "DOI" : "10.1063/1.1678462", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB2", "author" : "Killingbeck", "volume" : "65", "first-page" : "87", "year" : "1978", "journal-title" : "Phys. Lett. A", "DOI" : "10.1016/0375-9601(78)90580-7", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB3", "author" : "Fernández", "volume" : "43", "year" : "1987", "unstructured" : "and Hypervirial Theorems, Lecture Notes in Chemistry, Vol. 43, (Springer, Berlin, 1987).", "volume-title" : "Hypervirial Theorems, Lecture Notes in Chemistry", "DOI" : "10.1007/978-3-642-93349-3", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB4", "author" : "Arteca", "volume" : "53", "year" : "1990", "unstructured" : "and Large Order Perturbation Theory and Summation Methods in Quantum Mechanics, Lecture Notes in Chemistry, Vol. 53, (Springer, Berlin, 1990).", "volume-title" : "Large Order Perturbation Theory and Summation Methods in Quantum Mechanics, Lecture Notes in Chemistry", "DOI" : "10.1007/978-3-642-93469-8", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB5", "author" : "Ader", "volume" : "97", "first-page" : "178", "year" : "1983", "journal-title" : "Phys. Lett. A", "DOI" : "10.1016/0375-9601(83)90352-3", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB6", "author" : "Blankenbecler", "volume" : "21", "first-page" : "1055", "year" : "1980", "journal-title" : "Phys. Rev. D", "DOI" : "10.1103/PhysRevD.21.1055", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB7", "author" : "Fernández", "volume" : "26", "first-page" : "497", "year" : "1984", "journal-title" : "Int. J. Quantum Chem.", "DOI" : "10.1002/qua.560260408", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB8", "author" : "Arteca", "volume" : "128", "first-page" : "253", "year" : "1984", "journal-title" : "Physica A", "DOI" : "10.1016/0378-4371(84)90090-6", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB9", "author" : "Fernández", "volume" : "28", "first-page" : "603", "year" : "1985", "journal-title" : "Int. J. Quantum Chem.", "DOI" : "10.1002/qua.560280507", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB10", "author" : "Fernández", "volume" : "20", "first-page" : "3777", "year" : "1987", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/20/12/027", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB11", "author" : "Austin", "volume" : "18", "first-page" : "449", "year" : "1984", "journal-title" : "Int. J. Quantum Chem. S", "DOI" : "10.1002/qua.560260841", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB12", "author" : "Killingbeck", "volume" : "18", "first-page" : "793", "year" : "1985", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/18/5/012", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB13", "author" : "Killingbeck", "volume" : "19", "first-page" : "705", "year" : "1986", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/19/5/023", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB14", "author" : "Witwit", "volume" : "24", "first-page" : "3053", "year" : "1991", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/24/13/020", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB15", "author" : "Witwit", "volume" : "24", "first-page" : "4535", "year" : "1991", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/24/19/017", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB16", "author" : "Witwit", "volume" : "33", "first-page" : "4196", "year" : "1992", "journal-title" : "J. Math. Phys.", "DOI" : "10.1063/1.529818", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB17", "author" : "Witwit", "volume" : "36", "first-page" : "187", "year" : "1995", "journal-title" : "J. Math. Phys.", "DOI" : "10.1063/1.531299", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB18", "author" : "Killingbeck", "volume" : "14", "first-page" : "1005", "year" : "1981", "journal-title" : "J. Phys. A", "DOI" : "10.1088/0305-4470/14/5/020", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB19", "author" : "Killingbeck", "volume" : "14", "first-page" : "l461", "year" : "1981", "journal-title" : "J. Phys. B", "DOI" : "10.1088/0022-3700/14/14/001", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB20", "author" : "Fernández", "volume" : "25", "first-page" : "492", "year" : "1992", "journal-title" : "J. Phys. A" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB21", "author" : "Fernández", "volume" : "165", "first-page" : "314", "year" : "1992", "journal-title" : "Phys. Lett. A", "DOI" : "10.1016/0375-9601(92)90500-L", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB22", "author" : "Fernández", "volume" : "178", "first-page" : "11", "year" : "1993", "journal-title" : "Phys. Lett. A", "DOI" : "10.1016/0375-9601(93)90719-G", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB23", "author" : "Simon", "volume" : "58", "first-page" : "76", "year" : "1970", "journal-title" : "Ann. Phys. (N.Y.)", "DOI" : "10.1016/0003-4916(70)90240-X", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB24", "author" : "Press", "year" : "1986", "unstructured" : "and Numerical Recipes, (Cambridge University Press, Cambridge, 1986).", "volume-title" : "Numerical Recipes" }, { "key" : "10.1002/(SICI)1097-461X(1998)66:4<261::AID-QUA1>3.0.CO;2-T-BIB25", "author" : "Spirko", "volume" : "102", "first-page" : "8916", "year" : "1995", "journal-title" : "J. Chem. Phys.", "DOI" : "10.1063/1.468945", "doi-asserted-by" : "crossref" } ], "container-title" : [ "International Journal of Quantum Chemistry" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F(SICI)1097-461X(1998)66:4%3C261::AID-QUA1%3E3.0.CO;2-T", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 23 ] ], "date-time" : "2017-07-23T04:32:16Z", "timestamp" : { "$numberLong" : "1500784336000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 1998 ] ] }, "references-count" : 25, "URL" : "http://dx.doi.org/10.1002/(sici)1097-461x(1998)66:4<261::aid-qua1>3.0.co;2-t", "relation" : { "cites" : [] }, "ISSN" : [ "0020-7608", "1097-461X" ], "issn-type" : [ { "value" : "0020-7608", "type" : "print" }, { "value" : "1097-461X", "type" : "electronic" } ], "subject" : [ "Physical and Theoretical Chemistry", "Atomic and Molecular Physics, and Optics", "Condensed Matter Physics" ] }
+{ "_id" : { "$oid" : "5a5515c788a035a45bd77a1b" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:24:07Z", "timestamp" : { "$numberLong" : "1508768647545" } }, "reference-count" : 10, "publisher" : "Wiley-Blackwell", "issue" : "3", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 4991, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Cell Biochem. Funct." ], "published-print" : { "date-parts" : [ [ 2002, 9 ] ] }, "DOI" : "10.1002/cbf.935", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 11 ] ], "date-time" : "2002-09-11T02:05:28Z", "timestamp" : { "$numberLong" : "1031709928000" } }, "page" : "191-194", "source" : "Crossref", "is-referenced-by-count" : 6, "title" : [ "Cytokine detection in HIV-1/HHV-8 co-infected subjects" ], "prefix" : "10.1002", "volume" : "20", "author" : [ { "given" : "Agostino", "family" : "Pugliese", "affiliation" : [] }, { "given" : "Donato", "family" : "Torre", "affiliation" : [] }, { "given" : "Andrea", "family" : "Saini", "affiliation" : [] }, { "given" : "Gloria", "family" : "Pagliano", "affiliation" : [] }, { "given" : "Gloria", "family" : "Gallo", "affiliation" : [] }, { "given" : "Pietro Giorgio", "family" : "Pistono", "affiliation" : [] }, { "given" : "Gian Carlo", "family" : "Paggi", "affiliation" : [] } ], "member" : "311", "published-online" : { "date-parts" : [ [ 2002 ] ] }, "reference" : [ { "key" : "10.1002/cbf.935-BIB1", "author" : "Chang", "volume" : "266", "first-page" : "1865", "year" : "1994", "journal-title" : "Science", "DOI" : "10.1126/science.7997879", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/cbf.935-BIB2", "author" : "Drago", "volume" : "135", "first-page" : "71", "year" : "1999", "journal-title" : "Arch. Dermatol" }, { "key" : "10.1002/cbf.935-BIB3", "author" : "Pugliese", "volume" : "24", "first-page" : "258", "year" : "2000", "journal-title" : "Cancer Detect Prevent" }, { "key" : "10.1002/cbf.935-BIB4", "author" : "Clerici", "volume" : "15", "first-page" : "575", "year" : "1994", "journal-title" : "Immunol Today", "DOI" : "10.1016/0167-5699(94)90220-8", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/cbf.935-BIB5", "author" : "Zhang", "volume" : "185", "first-page" : "837", "year" : "1997", "journal-title" : "J Exp Med" }, { "key" : "10.1002/cbf.935-BIB6", "author" : "Vincenzi", "volume" : "62", "first-page" : "34", "year" : "1997", "journal-title" : "J Leuk Biol" }, { "key" : "10.1002/cbf.935-BIB7", "author" : "Stoll", "volume" : "28", "first-page" : "3231", "year" : "1998", "journal-title" : "Eur J Immunol", "DOI" : "10.1002/(SICI)1521-4141(199810)28:10<3231::AID-IMMU3231>3.0.CO;2-Q", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/cbf.935-BIB8", "author" : "Fiorelli", "volume" : "91", "first-page" : "956", "year" : "1998", "journal-title" : "Blood" }, { "key" : "10.1002/cbf.935-BIB9", "author" : "Boshoff", "volume" : "75", "first-page" : "57", "year" : "1998", "journal-title" : "Adv Cancer Res.", "DOI" : "10.1016/S0065-230X(08)60739-3", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/cbf.935-BIB10", "author" : "Fakoya", "volume" : "11", "first-page" : "1445", "year" : "1997", "journal-title" : "AIDS", "DOI" : "10.1097/00002030-199712000-00008", "doi-asserted-by" : "crossref" } ], "container-title" : [ "Cell Biochemistry and Function" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2Fcbf.935", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 27 ] ], "date-time" : "2017-07-27T01:56:41Z", "timestamp" : { "$numberLong" : "1501120601000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2002 ] ] }, "references-count" : 10, "URL" : "http://dx.doi.org/10.1002/cbf.935", "relation" : { "cites" : [] }, "ISSN" : [ "0263-6484", "1099-0844" ], "issn-type" : [ { "value" : "0263-6484", "type" : "print" }, { "value" : "1099-0844", "type" : "electronic" } ], "subject" : [ "Clinical Biochemistry", "Cell Biology", "Biochemistry", "General Medicine" ] }
+{ "_id" : { "$oid" : "5a5515c788a035a45bd77a35" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:24:07Z", "timestamp" : { "$numberLong" : "1508768647674" } }, "reference-count" : 31, "publisher" : "Wiley-Blackwell", "issue" : "4", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 4946, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Angew. Chem. Int. Ed." ], "published-print" : { "date-parts" : [ [ 2002, 2, 15 ] ] }, "DOI" : "10.1002/1521-3773(20020215)41:4<583::aid-anie583>3.0.co;2-i", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T23:46:56Z", "timestamp" : { "$numberLong" : "1030319216000" } }, "page" : "583-585", "source" : "Crossref", "is-referenced-by-count" : 126, "title" : [ "Noninterpenetrating Square-Grid Coordination Polymers With Dimensions of 25×25 Å2 Prepared by UsingN,N′-Type Ligands: The First Chiral Square-Grid Coordination Polymer" ], "prefix" : "10.1002", "volume" : "41", "author" : [ { "given" : "Neil G.", "family" : "Pschirer", "affiliation" : [] }, { "given" : "Delia M.", "family" : "Ciurtin", "affiliation" : [] }, { "given" : "Mark D.", "family" : "Smith", "affiliation" : [] }, { "given" : "Uwe H. F.", "family" : "Bunz", "affiliation" : [] }, { "given" : "Hans-Conrad", "family" : "zur Loye", "affiliation" : [] } ], "member" : "311", "reference" : [ { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB1", "journal-title" : "Design of Solids From Molecular Building Blocks: Golden Opportunities for Solid State Chemistry" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB2.1", "author" : "Dong", "volume" : "112", "first-page" : "4441", "year" : "2000", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/1521-3757(20001201)112:23<4441::AID-ANGE4441>3.0.CO;2-B", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB2.2", "volume" : "39", "first-page" : "4271", "year" : "2000", "journal-title" : "Angew. Chem. Int. Ed.", "DOI" : "10.1002/1521-3773(20001201)39:23<4271::AID-ANIE4271>3.0.CO;2-1", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB3", "author" : "Kang", "volume" : "120", "first-page" : "3650", "year" : "1998", "journal-title" : "J. Am. Chem. Soc.", "DOI" : "10.1021/ja973898+", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB4", "author" : "Kang", "volume" : "120", "first-page" : "7389", "year" : "1998", "journal-title" : "J. Am. Chem. Soc.", "DOI" : "10.1021/ja980927n", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB5.1", "author" : "Yünlü", "volume" : "97", "first-page" : "863", "year" : "1985", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/ange.19850971016", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB5.2", "volume" : "24", "first-page" : "879", "year" : "1985", "journal-title" : "Angew. Chem. Int. Ed. Engl.", "DOI" : "10.1002/anie.198508791", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB6", "author" : "Chen", "volume" : "291", "first-page" : "1021", "year" : "2001", "journal-title" : "Science", "DOI" : "10.1126/science.1056598", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB7", "author" : "Dong", "volume" : "11", "first-page" : "1413", "year" : "1999", "journal-title" : "Chem. Mater.", "DOI" : "10.1021/cm990082u", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB8", "author" : "Dong", "volume" : "2", "first-page" : "861", "year" : "2000", "journal-title" : "Solid State Sci.", "DOI" : "10.1016/S1293-2558(00)01094-3", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB9A", "author" : "Biradha", "first-page" : "15", "year" : "2001", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/b007014i", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB9B", "unstructured" : "P. J. Stang, B. Olenyuk, Acc. Chem. Res., 1977, 30, 502;", "DOI" : "10.1021/ar9602011", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB9C", "unstructured" : "P. J. Stang, D. H. Cao, S. Saito, A. M. Arif, J. Am. Chem. Soc. 1995, 117, 6273.", "DOI" : "10.1021/ja00128a015", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB10", "author" : "Dong", "volume" : "12", "first-page" : "1156", "year" : "2000", "journal-title" : "Chem. Mater.", "DOI" : "10.1021/cm9907965", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB11", "author" : "Zaworotko", "first-page" : "1", "year" : "2001", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/b007127g", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB12.1", "author" : "Biradha", "volume" : "112", "first-page" : "4001", "year" : "2000", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/1521-3757(20001103)112:21<4001::AID-ANGE4001>3.0.CO;2-5", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB12.2", "volume" : "39", "first-page" : "3843", "year" : "2000", "journal-title" : "Angew. Chem. Int. Ed.", "DOI" : "10.1002/1521-3773(20001103)39:21<3843::AID-ANIE3843>3.0.CO;2-#", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB13.1", "author" : "Batten", "volume" : "110", "first-page" : "1558", "year" : "1998", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/(SICI)1521-3757(19980605)110:11<1558::AID-ANGE1558>3.0.CO;2-7", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB13.2", "volume" : "37", "first-page" : "1460", "year" : "1998", "journal-title" : "Angew. Chem. Int. Ed.", "DOI" : "10.1002/(SICI)1521-3773(19980619)37:11<1460::AID-ANIE1460>3.0.CO;2-Z", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB14", "unstructured" : "U. Bunz, H.-C. zur Loye, unpublished results, 2001." }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB17", "unstructured" : "A. M. C. T. PLATON, Utrecht University, Utrecht, The Netherlands, Spek, A.L. 1998." }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB18", "author" : "Ezuhara", "volume" : "121", "first-page" : "3279", "year" : "1999", "journal-title" : "J. Am. Chem. Soc.", "DOI" : "10.1021/ja9819918", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB19.1", "author" : "Biradha", "volume" : "111", "first-page" : "584", "year" : "1999", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/(SICI)1521-3757(19990215)111:4<584::AID-ANGE584>3.0.CO;2-Z", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB19.2", "volume" : "38", "first-page" : "492", "year" : "1999", "journal-title" : "Angew. Chem. Int. Ed.", "DOI" : "10.1002/(SICI)1521-3773(19990215)38:4<492::AID-ANIE492>3.0.CO;2-#", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB20", "author" : "Chen", "first-page" : "4010", "year" : "2000", "journal-title" : "J. Chem. Soc. Dalton Trans.", "DOI" : "10.1039/b007004l", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB21", "author" : "Fragoso", "first-page" : "1547", "year" : "2000", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/b002360o", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB22", "author" : "Carlucci", "first-page" : "1319", "year" : "2000", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/b002021o", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB23", "author" : "Blake", "first-page" : "665", "year" : "2000", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/a909868b", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB24", "author" : "Carlucci", "first-page" : "1837", "year" : "1998", "journal-title" : "Chem. Commun.", "DOI" : "10.1039/a803662d", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB25.1", "author" : "Mamula", "volume" : "111", "first-page" : "3129", "year" : "1999", "journal-title" : "Angew. Chem.", "DOI" : "10.1002/(SICI)1521-3757(19991004)111:19<3129::AID-ANGE3129>3.0.CO;2-X", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1521-3773(20020215)41:4<583::AID-ANIE583>3.0.CO;2-I-BIB25.2", "volume" : "38", "first-page" : "2945", "year" : "1999", "journal-title" : "Angew. Chem. Int. Ed.", "DOI" : "10.1002/(SICI)1521-3773(19991004)38:19<2945::AID-ANIE2945>3.0.CO;2-D", "doi-asserted-by" : "crossref" } ], "container-title" : [ "Angewandte Chemie International Edition" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F1521-3773(20020215)41:4%3C583::AID-ANIE583%3E3.0.CO;2-I", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 27 ] ], "date-time" : "2017-07-27T01:55:53Z", "timestamp" : { "$numberLong" : "1501120553000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2002, 2, 15 ] ] }, "references-count" : 31, "URL" : "http://dx.doi.org/10.1002/1521-3773(20020215)41:4<583::aid-anie583>3.0.co;2-i", "relation" : { "cites" : [] }, "ISSN" : [ "1433-7851", "1521-3773" ], "issn-type" : [ { "value" : "1433-7851", "type" : "print" }, { "value" : "1521-3773", "type" : "electronic" } ], "subject" : [ "General Chemistry", "Catalysis" ] }
+{ "_id" : { "$oid" : "5a5513f388a035a45bd63593" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:15:01Z", "timestamp" : { "$numberLong" : "1508768101957" } }, "reference-count" : 8, "publisher" : "Wiley-Blackwell", "issue" : "5", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 6332, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Med. Pediatr. Oncol." ], "published-print" : { "date-parts" : [ [ 1998, 5 ] ] }, "DOI" : "10.1002/(sici)1096-911x(199805)30:5<297::aid-mpo7>3.0.co;2-a", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T20:05:22Z", "timestamp" : { "$numberLong" : "1030305922000" } }, "page" : "297-300", "source" : "Crossref", "is-referenced-by-count" : 5, "title" : [ "Thallium-201 uptake in rebound thymic hyperplasia" ], "prefix" : "10.1002", "volume" : "30", "author" : [ { "given" : "Derek J.", "family" : "Roebuck", "affiliation" : [] }, { "given" : "Wayne D.", "family" : "Nicholls", "affiliation" : [] }, { "given" : "Elizabeth J.", "family" : "Bernard", "affiliation" : [] }, { "given" : "Stewart J.", "family" : "Kellie", "affiliation" : [] }, { "given" : "Robert", "family" : "Howman-Giles", "affiliation" : [] } ], "member" : "311", "reference" : [ { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB1", "author" : "Choyke", "volume" : "149", "first-page" : "269", "year" : "1987", "journal-title" : "AJR", "DOI" : "10.2214/ajr.149.2.269", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB2", "author" : "Cohen", "volume" : "135", "first-page" : "151", "year" : "1980", "journal-title" : "AJR", "DOI" : "10.2214/ajr.135.1.151", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB3", "author" : "Nadel", "volume" : "23", "first-page" : "243", "year" : "1993", "journal-title" : "Semin Nucl Med", "DOI" : "10.1016/S0001-2998(05)80105-9", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB4", "author" : "Howman-Giles", "volume" : "36", "first-page" : "1372", "year" : "1995", "journal-title" : "J Nucl Med" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB5", "author" : "Harris", "volume" : "34", "first-page" : "1326", "year" : "1993", "journal-title" : "J Nucl Med" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB6", "author" : "Fletcher", "volume" : "196", "first-page" : "851", "year" : "1995", "journal-title" : "Radiology", "DOI" : "10.1148/radiology.196.3.7644655", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB7", "author" : "Peylan-Ramu", "volume" : "7", "first-page" : "1800", "year" : "1989", "journal-title" : "J Clin Oncol", "DOI" : "10.1200/JCO.1989.7.12.1800", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/(SICI)1096-911X(199805)30:5<297::AID-MPO7>3.0.CO;2-A-BIB8", "author" : "Israel", "volume" : "34", "first-page" : "1330", "year" : "1993", "journal-title" : "J Nucl Med" } ], "container-title" : [ "Medical and Pediatric Oncology" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F(SICI)1096-911X(199805)30:5%3C297::AID-MPO7%3E3.0.CO;2-A", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 23 ] ], "date-time" : "2017-07-23T03:41:41Z", "timestamp" : { "$numberLong" : "1500781301000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 1998, 5 ] ] }, "references-count" : 8, "URL" : "http://dx.doi.org/10.1002/(sici)1096-911x(199805)30:5<297::aid-mpo7>3.0.co;2-a", "relation" : { "cites" : [] }, "ISSN" : [ "0098-1532", "1096-911X" ], "issn-type" : [ { "value" : "0098-1532", "type" : "print" }, { "value" : "1096-911X", "type" : "electronic" } ], "subject" : [ "Pediatrics, Perinatology, and Child Health", "Cancer Research", "Oncology" ] }
+{ "_id" : { "$oid" : "5a55181488a035a45bd8f11c" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:34:55Z", "timestamp" : { "$numberLong" : "1508769295121" } }, "reference-count" : 6, "publisher" : "Wiley-Blackwell", "issue" : "1", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 5722, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Int. J. Network Mgmt." ], "published-print" : { "date-parts" : [ [ 2000, 1 ] ] }, "DOI" : "10.1002/(sici)1099-1190(200001/02)10:1<51::aid-nem357>3.0.co;2-g", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T19:50:10Z", "timestamp" : { "$numberLong" : "1030305010000" } }, "page" : "51-55", "source" : "Crossref", "is-referenced-by-count" : 0, "title" : [ "Computer speech: streaming technology" ], "prefix" : "10.1002", "volume" : "10", "author" : [ { "given" : "Judith M.", "family" : "Myerson", "affiliation" : [] } ], "member" : "311", "reference" : [ { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB1", "author" : "Myerson", "year" : "1999", "unstructured" : "Text-to-Speech Server Overview. Clientbreak Server Technology Handbook. NY: CRC Press (Auerbach Publishers) 1999.", "volume-title" : "Clientbreak Server Technology Handbook" }, { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB2", "volume" : "5", "first-page" : "64", "journal-title" : "Building WebSites" }, { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB3", "author" : "Muller", "year" : "1998", "unstructured" : "Switched Token-Ring Networks. DataPro, 1998.", "volume-title" : "DataPro" }, { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB4", "author" : "Swoyer", "year" : "1998", "unstructured" : "Navy Warns of New Hacking Technique, ent, vol. 3, 1998.", "series-title" : "ent" }, { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB5", "author" : "Witherspoon", "year" : "1995", "unstructured" : "Optimizing Client/Server Networks. Chicago, Ill: IDG Books (Compaq Press), 1995.", "volume-title" : "Optimizing Client/Server Networks" }, { "key" : "10.1002/(SICI)1099-1190(200001/02)10:1<51::AID-NEM357>3.0.CO;2-G-BIB6", "author" : "Giles", "first-page" : "63", "unstructured" : "How to Add Audio and Video Files. Building WEBSITES, vol. 5, 63.", "series-title" : "Building WEBS" } ], "container-title" : [ "International Journal of Network Management" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F(SICI)1099-1190(200001%2F02)10:1%3C51::AID-NEM357%3E3.0.CO;2-G", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 4, 4 ] ], "date-time" : "2017-04-04T12:43:11Z", "timestamp" : { "$numberLong" : "1491309791000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2000, 1 ] ] }, "references-count" : 6, "URL" : "http://dx.doi.org/10.1002/(sici)1099-1190(200001/02)10:1<51::aid-nem357>3.0.co;2-g", "relation" : { "cites" : [] }, "ISSN" : [ "1055-7148", "1099-1190" ], "issn-type" : [ { "value" : "1055-7148", "type" : "print" }, { "value" : "1099-1190", "type" : "electronic" } ], "subject" : [ "Computer Networks and Communications", "Computer Science Applications" ] }
+{ "_id" : { "$oid" : "5a55196d88a035a45bda113b" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:41:55Z", "timestamp" : { "$numberLong" : "1508769715884" } }, "reference-count" : 35, "publisher" : "Elsevier BV", "issue" : "4", "license" : [ { "URL" : "http://www.elsevier.com/tdm/userlicense/1.0/", "start" : { "date-parts" : [ [ 2001, 10, 1 ] ], "date-time" : "2001-10-01T00:00:00Z", "timestamp" : { "$numberLong" : "1001894400000" } }, "delay-in-days" : 0, "content-version" : "tdm" }, { "URL" : "http://creativecommons.org/licenses/by-nc-nd/4.0/", "start" : { "date-parts" : [ [ 2016, 10, 7 ] ], "date-time" : "2016-10-07T00:00:00Z", "timestamp" : { "$numberLong" : "1475798400000" } }, "delay-in-days" : 5485, "content-version" : "vor" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Molecular Therapy" ], "published-print" : { "date-parts" : [ [ 2001, 10 ] ] }, "DOI" : "10.1006/mthe.2001.0464", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 18 ] ], "date-time" : "2002-09-18T19:46:30Z", "timestamp" : { "$numberLong" : "1032378390000" } }, "page" : "356-364", "source" : "Crossref", "is-referenced-by-count" : 31, "title" : [ "Human and Mouse IFN-β Gene Therapy Exhibits Different Anti-tumor Mechanisms in Mouse Models" ], "prefix" : "10.1016", "volume" : "4", "author" : [ { "given" : "Xiao-Qiang", "family" : "Qin", "affiliation" : [] }, { "given" : "Carla", "family" : "Beckham", "affiliation" : [] }, { "given" : "Jennifer L.", "family" : "Brown", "affiliation" : [] }, { "given" : "Matvey", "family" : "Lukashev", "affiliation" : [] }, { "given" : "James", "family" : "Barsoum", "affiliation" : [] } ], "member" : "78", "container-title" : [ "Molecular Therapy" ], "link" : [ { "URL" : "http://api.elsevier.com/content/article/PII:S1525001601904642?httpAccept=text/xml", "content-type" : "text/xml", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://api.elsevier.com/content/article/PII:S1525001601904642?httpAccept=text/plain", "content-type" : "text/plain", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 6, 14 ] ], "date-time" : "2017-06-14T16:51:52Z", "timestamp" : { "$numberLong" : "1497459112000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2001, 10 ] ] }, "references-count" : 35, "alternative-id" : [ "S1525001601904642" ], "URL" : "http://dx.doi.org/10.1006/mthe.2001.0464", "ISSN" : [ "1525-0016" ], "issn-type" : [ { "value" : "1525-0016", "type" : "print" } ], "subject" : [ "Molecular Medicine", "Genetics", "Molecular Biology", "Pharmacology", "Drug Discovery" ] }
+{ "_id" : { "$oid" : "5a55165c88a035a45bd7e535" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:27:04Z", "timestamp" : { "$numberLong" : "1508768824539" } }, "reference-count" : 6, "publisher" : "Wiley-Blackwell", "issue" : "24", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 5722, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Rapid Commun. Mass Spectrom." ], "published-print" : { "date-parts" : [ [ 2000, 12, 30 ] ] }, "DOI" : "10.1002/1097-0231(20001230)14:24<2357::aid-rcm168>3.0.co;2-2", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 11 ] ], "date-time" : "2002-09-11T00:24:57Z", "timestamp" : { "$numberLong" : "1031703897000" } }, "page" : "2357-2361", "source" : "Crossref", "is-referenced-by-count" : 2, "title" : [ "Electron impact fragmentation mechanisms of some cyclic esters with helical structures" ], "prefix" : "10.1002", "volume" : "14", "author" : [ { "given" : "Jiangtao", "family" : "He", "affiliation" : [] }, { "given" : "Aihua", "family" : "Nie", "affiliation" : [] }, { "given" : "Meiyu", "family" : "He", "affiliation" : [] }, { "given" : "Xiaoran", "family" : "He", "affiliation" : [] }, { "given" : "Zhenpei", "family" : "Yu", "affiliation" : [] }, { "given" : "Xiulin", "family" : "Ye", "affiliation" : [] }, { "given" : "Qiyi", "family" : "Xing", "affiliation" : [] } ], "member" : "311", "published-online" : { "date-parts" : [ [ 2000 ] ] }, "reference" : [ { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB1", "author" : "Nie", "volume" : "8", "first-page" : "141", "year" : "1997", "journal-title" : "Chinese Chem. Lett." }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB2", "author" : "Chenevert", "first-page" : "782", "year" : "1982", "journal-title" : "Synthesis", "DOI" : "10.1055/s-1982-29945", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB3", "author" : "Porter", "first-page" : "296", "year" : "1985", "unstructured" : "Mass Spectrometry of Heterocyclic Compounds (2nd edn). John Wiley & Sons: New York, 1985; 296.", "volume-title" : "Mass Spectrometry of Heterocyclic Compounds" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB4", "author" : "Ková??ik", "volume" : "34", "first-page" : "1322", "year" : "1999", "journal-title" : "J. Mass Spectrom.", "DOI" : "10.1002/(SICI)1096-9888(199912)34:12<1322::AID-JMS888>3.0.CO;2-#", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB5", "author" : "Mclafferty", "year" : "1993", "unstructured" : "Interpretation of Mass Spectra (4th edn). University Science Books: Sansalito, CA, 1993.", "volume-title" : "Interpretation of Mass Spectra" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB6", "author" : "Williams", "year" : "1996", "unstructured" : "Spectroscopic Methods in Organic Chemistry (5th edn). McGraw-Hill: London, 1996.", "volume-title" : "Spectroscopic Methods in Organic Chemistry" } ], "container-title" : [ "Rapid Communications in Mass Spectrometry" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F1097-0231(20001230)14:24%3C2357::AID-RCM168%3E3.0.CO;2-2", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 31 ] ], "date-time" : "2017-07-31T21:16:20Z", "timestamp" : { "$numberLong" : "1501535780000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2000 ] ] }, "references-count" : 6, "URL" : "http://dx.doi.org/10.1002/1097-0231(20001230)14:24<2357::aid-rcm168>3.0.co;2-2", "relation" : { "cites" : [] }, "ISSN" : [ "0951-4198", "1097-0231" ], "issn-type" : [ { "value" : "0951-4198", "type" : "print" }, { "value" : "1097-0231", "type" : "electronic" } ], "subject" : [ "Organic Chemistry", "Analytical Chemistry", "Spectroscopy" ] }
+{ "_id" : { "$oid" : "5a55196988a035a45bda0cb1" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:41:48Z", "timestamp" : { "$numberLong" : "1508769708308" } }, "reference-count" : 44, "publisher" : "Elsevier BV", "issue" : "1", "license" : [ { "URL" : "http://www.elsevier.com/tdm/userlicense/1.0/", "start" : { "date-parts" : [ [ 1998, 11, 1 ] ], "date-time" : "1998-11-01T00:00:00Z", "timestamp" : { "$numberLong" : "909878400000" } }, "delay-in-days" : 0, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Toxicology and Applied Pharmacology" ], "published-print" : { "date-parts" : [ [ 1998, 11 ] ] }, "DOI" : "10.1006/taap.1998.8543", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 18 ] ], "date-time" : "2002-09-18T22:01:25Z", "timestamp" : { "$numberLong" : "1032386485000" } }, "page" : "102-108", "source" : "Crossref", "is-referenced-by-count" : 44, "title" : [ "Role of CYP1A2 in the Hepatotoxicity of Acetaminophen: Investigations UsingCyp1a2Null Mice" ], "prefix" : "10.1006", "volume" : "153", "author" : [ { "given" : "Robert P.", "family" : "Tonge", "affiliation" : [] }, { "given" : "Edward J.", "family" : "Kelly", "affiliation" : [] }, { "given" : "Sam A.", "family" : "Bruschi", "affiliation" : [] }, { "given" : "Tom", "family" : "Kalhorn", "affiliation" : [] }, { "given" : "David L.", "family" : "Eaton", "affiliation" : [] }, { "given" : "Daniel W.", "family" : "Nebert", "affiliation" : [] }, { "given" : "Sidney D.", "family" : "Nelson", "affiliation" : [] } ], "member" : "78", "container-title" : [ "Toxicology and Applied Pharmacology" ], "link" : [ { "URL" : "http://api.elsevier.com/content/article/PII:S0041008X9898543X?httpAccept=text/xml", "content-type" : "text/xml", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://api.elsevier.com/content/article/PII:S0041008X9898543X?httpAccept=text/plain", "content-type" : "text/plain", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 6, 14 ] ], "date-time" : "2017-06-14T16:51:33Z", "timestamp" : { "$numberLong" : "1497459093000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 1998, 11 ] ] }, "references-count" : 44, "alternative-id" : [ "S0041008X9898543X" ], "URL" : "http://dx.doi.org/10.1006/taap.1998.8543", "ISSN" : [ "0041-008X" ], "issn-type" : [ { "value" : "0041-008X", "type" : "print" } ], "subject" : [ "Toxicology", "Pharmacology" ] }
+{ "_id" : { "$oid" : "5a55170088a035a45bd8490d" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:30:12Z", "timestamp" : { "$numberLong" : "1508769012416" } }, "reference-count" : 37, "publisher" : "Wiley-Blackwell", "issue" : "2", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 5356, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Am. J. Ind. Med." ], "published-print" : { "date-parts" : [ [ 2001, 2 ] ] }, "DOI" : "10.1002/1097-0274(200102)39:2<218::aid-ajim1009>3.0.co;2-4", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T20:41:50Z", "timestamp" : { "$numberLong" : "1030308110000" } }, "page" : "218-226", "source" : "Crossref", "is-referenced-by-count" : 10, "title" : [ "The work environment impact assessment: A methodologic framework for evaluating health-based interventions" ], "prefix" : "10.1002", "volume" : "39", "author" : [ { "given" : "Beth J.", "family" : "Rosenberg", "affiliation" : [] }, { "given" : "Elizabeth M.", "family" : "Barbeau", "affiliation" : [] }, { "given" : "Rafael", "family" : "Moure-Eraso", "affiliation" : [] }, { "given" : "Charles", "family" : "Levenstein", "affiliation" : [] } ], "member" : "311", "published-online" : { "date-parts" : [ [ 2001 ] ] }, "reference" : [ { "key" : "BIB1", "author" : "Barbeau", "year" : "1998", "unstructured" : "1998. Displaced tobacco workers, public health, and tobacco policy: moving beyond jobs versus health. Doctoral thesis, Department of Work Environment, University of Massachusetts, Lowell." }, { "key" : "BIB2", "author" : "Berberian", "volume" : "37", "first-page" : "126", "year" : "1987", "journal-title" : "J Occup Environ Med" }, { "key" : "BIB3", "author" : "Bignami", "volume" : "80", "first-page" : "265", "year" : "1981", "journal-title" : "Mutat Res", "DOI" : "10.1016/0027-5107(81)90099-3", "doi-asserted-by" : "crossref" }, { "key" : "BIB4", "author" : "Britton", "year" : "1989", "unstructured" : "1989. The post-Alar era dawns chilly for apple growers. Boston Globe. Oct. 25, p. 34." }, { "key" : "BIB5", "author" : "Brusick", "year" : "1976", "unstructured" : "1976. Mutagen and oncogen Study on 1,1-dimethylhydrazine. Prepared for the Aerospace Med. Res. Lab., Aeropsace Med. Div. Airforce Systems Command, Wright- Patterson A.F.B., Dayton OH Litton Bionetics, Inc., Kensington, MD. NTIS AD-A035475." }, { "key" : "BIB6", "author" : "Chemical Marketing Reporter", "year" : "1984", "unstructured" : "Chemical Marketing Reporter. 1984. Uniroyal pesticide to be reviewed by EPA: regulatory action prompted by its toxicity. July 23." }, { "key" : "BIB7", "author" : "Chemical Marketing Reporter", "year" : "1989", "unstructured" : "Chemical Marketing Reporter. 1989. Uniroyal pulls apple pesticide from market, citing controversy. June 5." }, { "key" : "BIB8", "year" : "1990", "unstructured" : "Du Pont Chemical Company. 1990. MSDS No. M0000057, p. 2." }, { "key" : "BIB9", "year" : "1993", "unstructured" : "Farm Chemicals Handbook '93. 1993. Willoughby, OH: Meister.", "volume-title" : "Farm Chemicals Handbook '93" }, { "key" : "BIB10", "year" : "1985", "unstructured" : "Farm Chemicals Handbook '85. 1985. Willoughby, OH: Meister.", "volume-title" : "Farm Chemicals Handbook '85" }, { "key" : "BIB11", "author" : "Federal Register", "year" : "1989", "unstructured" : "Federal Register. 1989. Daminozide: termination of special review of food uses. Vol. 54, No. 216, p. 47482, November 14." }, { "key" : "BIB12", "author" : "Fenske", "first-page" : "729", "year" : "2000", "unstructured" : "2000. Agricultural workers. In: editors. Occupational health: recognizing and preventing work-related disease and injury. 4th ed. Philadelphia: Lippincott Williams and Wilkins, p. 729-748.", "volume-title" : "Occupational health: recognizing and preventing work-related disease and injury" }, { "key" : "BIB13", "author" : "Gibson", "volume" : "5", "first-page" : "24", "year" : "1994", "journal-title" : "New Solutions", "DOI" : "10.2190/NS5.1.g", "doi-asserted-by" : "crossref" }, { "key" : "BIB14", "author" : "Goldenhar", "volume" : "29", "first-page" : "289", "year" : "1996", "journal-title" : "Am J Ind Med", "DOI" : "10.1002/(SICI)1097-0274(199604)29:4<289::AID-AJIM2>3.0.CO;2-K", "doi-asserted-by" : "crossref" }, { "key" : "BIB15", "author" : "Haun", "year" : "1984", "unstructured" : "1984. Inhalation studies of UDMH. Air Force Aerospace Medical Res Lab, TR-85-020." }, { "key" : "BIB16", "author" : "International Agency for Research on Cancer (IARC)", "year" : "1997", "unstructured" : "International Agency for Research on Cancer (IARC). 1997. Evaluation of carcinogen risks to humans: man-made mineral fibres and radon. Lyons, France." }, { "key" : "BIB17", "author" : "Lord", "year" : "1969", "unstructured" : "1969 (May-June). Thoughts on the apple harvest problem. Fruit Notes. U. S. Department of Agriculture, Massachusetts Extension Service." }, { "key" : "BIB18", "author" : "Manning", "first-page" : "34", "year" : "1989", "unstructured" : "Sales Agent for J. P. Sullivan and Co., of Ayer, MA, an apple commission house. In 1989. The post-Alar era dawns chilly for apple growers. Boston Globe Oct. 25 p. 34.", "volume-title" : "The post-Alar era dawns chilly for apple growers" }, { "key" : "BIB19", "author" : "National Cancer Institute", "year" : "1978", "unstructured" : "National Cancer Institute. 1978. Bioassay of daminozide for possible carcinogenicity. Washington, D.C., United State Department of Health, Education and Welfare, Public Health Service (NIC Carcinogenesis Technical Report Series No. 83; DHEW Publication No (NIH 78-1333)." }, { "key" : "BIB20", "author" : "Rogers", "volume" : "89", "first-page" : "321", "year" : "1981", "journal-title" : "Mutat Res", "DOI" : "10.1016/0165-1218(81)90113-0", "doi-asserted-by" : "crossref" }, { "key" : "BIB21", "author" : "Rosenberg", "year" : "1995", "unstructured" : "1995. The best laid bans: the impact of pesticide bans on workers. Doctoral thesis, Department of Work Environment, University of Massachusetts Lowell." }, { "key" : "BIB22", "author" : "Rosenberg", "volume" : "6", "first-page" : "34", "year" : "1996", "journal-title" : "New Solutions: A Journal of Environmental and Occupational Health Policy", "DOI" : "10.2190/NS6.2.d", "doi-asserted-by" : "crossref" }, { "key" : "BIB23", "author" : "Rosenberg", "volume" : "8", "first-page" : "365", "year" : "1998", "journal-title" : "New Solutions Environmental Health Policy", "DOI" : "10.2190/A2A1-CT1X-RY6D-RR3M", "doi-asserted-by" : "crossref" }, { "key" : "BIB24", "author" : "Saunders", "volume" : "29", "first-page" : "409", "year" : "1987", "journal-title" : "J Occup Environ Med" }, { "key" : "BIB25", "author" : "Toth", "volume" : "50", "first-page" : "181", "year" : "1973", "journal-title" : "J Natl Cancer Inst", "DOI" : "10.1093/jnci/50.1.181", "doi-asserted-by" : "crossref" }, { "key" : "BIB26", "author" : "Toth", "volume" : "40", "first-page" : "2427", "year" : "1977a", "journal-title" : "Cancer", "DOI" : "10.1002/1097-0142(197711)40:5+<2427::AID-CNCR2820400906>3.0.CO;2-Y", "doi-asserted-by" : "crossref" }, { "key" : "BIB27", "author" : "Toth", "volume" : "37", "first-page" : "3497", "year" : "1977b", "journal-title" : "Cancer Res" }, { "key" : "BIB28", "author" : "U.S. Environmental Protection Agency", "year" : "1986", "unstructured" : "U.S. Environmental Protection Agency. 1986. Integrated Risk Information System (IRIS). Oxamyl. December 9." }, { "key" : "BIB29", "author" : "U.S. Environmental Protection Agency", "year" : "1986", "unstructured" : "U.S. Environmental Protection Agency. 1986. Chemical Fact Sheet Number 26: Daminozide. Office of Pesticides and Toxic Substances, Washington, DC. 10-169." }, { "key" : "BIB30", "author" : "U.S. Environmental Protection Agency", "year" : "1989", "unstructured" : "U.S. Environmental Protection Agency, Office of Pesticide Programs, Office of Pesticides and Toxic Substances. 1989. Daminozide special review technical support document: Preliminary determination to cancel the food uses of Daminozide. Washington, DC: May." }, { "key" : "BIB31", "author" : "U.S. Environmental Protection Agency", "volume" : "54", "first-page" : "10", "year" : "1989", "journal-title" : "Fed Regist." }, { "key" : "BIB32", "author" : "U.S. Environmental Protection Agency", "year" : "1990", "unstructured" : "U.S. Environmental Protection Agency. 1990. Integrated Risk Information System (IRIS). Propargite. May 1." }, { "key" : "BIB33", "author" : "U.S. Environmental Protection Agency", "volume" : "57", "first-page" : "10", "year" : "1992", "journal-title" : "Fed. Regist." }, { "key" : "BIB34", "author" : "U.S. Environmental Protection Agency", "year" : "1993", "unstructured" : "U.S. Environmental Protection Agency, Office of Prevention, Pesticides and Toxic Substances. 1993. R.E.D. Facts, Document number EPA-738-F-93-007. September." }, { "key" : "BIB35", "author" : "U.S. Department of Agriculture", "year" : "1993", "journal-title" : "New England Agricultural Statistics" }, { "key" : "BIB36", "author" : "Warren", "year" : "1992", "unstructured" : "1992. Unanticipated consequences of banning a chemical: the case of Alar. Unpublished manuscript, Department of Work Environment, University of Massachusetts Lowell." }, { "key" : "BIB37", "author" : "Wood", "year" : "1990", "unstructured" : "1990. Memo to Poverty Lane, West Lebanon, New Hampshire, to members of the Risk Assessment/Risk Management Work Group, Keystone National Policy Dialogue on Food Safety, Oct. 26, 1990, cited in Rosenberg, B. 1996." } ], "container-title" : [ "American Journal of Industrial Medicine" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F1097-0274(200102)39:2%3C218::AID-AJIM1009%3E3.0.CO;2-4", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 8, 4 ] ], "date-time" : "2017-08-04T20:22:16Z", "timestamp" : { "$numberLong" : "1501878136000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2001 ] ] }, "references-count" : 37, "URL" : "http://dx.doi.org/10.1002/1097-0274(200102)39:2<218::aid-ajim1009>3.0.co;2-4", "relation" : { "cites" : [] }, "ISSN" : [ "0271-3586", "1097-0274" ], "issn-type" : [ { "value" : "0271-3586", "type" : "print" }, { "value" : "1097-0274", "type" : "electronic" } ], "subject" : [ "Public Health, Environmental and Occupational Health" ] }
diff --git a/python/tests/fixtures.py b/python/tests/fixtures.py
new file mode 100644
index 00000000..d3d8c24b
--- /dev/null
+++ b/python/tests/fixtures.py
@@ -0,0 +1,169 @@
+
+import os
+import time
+import json
+import signal
+import pytest
+import fatcat
+import fatcat.sql
+from fatcat.models import *
+
+
+@pytest.fixture
+def full_app():
+ fatcat.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
+ fatcat.app.testing = True
+ fatcat.app.debug = False
+ fatcat.db.session.remove()
+ fatcat.db.drop_all()
+ fatcat.db.create_all()
+ fatcat.sql.populate_db()
+ return fatcat.app
+
+@pytest.fixture
+def app(full_app):
+ return full_app.test_client()
+
+@pytest.fixture
+def rich_app(app):
+ enrichen_test_app(app)
+ return app
+
+
+@pytest.fixture(scope="function")
+def api_client(full_app):
+
+ pid = os.fork()
+ if pid == 0:
+ full_app.testing = False
+ full_app.run(host="localhost", port=8444, debug=False)
+ os._exit(0)
+
+ time.sleep(0.2)
+ yield fatcat.api_client.FatCatApiClient("http://localhost:8444")
+ os.kill(pid, signal.SIGKILL)
+
+
+## Helpers ##################################################################
+
+def enrichen_test_app(app):
+
+ rv = app.post('/v0/editgroup',
+ data=json.dumps(dict(
+ extra=dict(q=1, u="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ editgroup_id = obj['id']
+
+ rv = app.post('/v0/container',
+ data=json.dumps(dict(
+ name="schmournal",
+ publisher="society of authors",
+ issn="2222-3333",
+ editgroup=editgroup_id,
+ extra=dict(a=2, i="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ container_id = obj['id']
+
+ rv = app.post('/v0/creator',
+ data=json.dumps(dict(
+ name="anon y. mouse",
+ orcid="0000-0002-1825-0097",
+ editgroup=editgroup_id,
+ extra=dict(w=1, q="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ creator_id = obj['id']
+
+ rv = app.post('/v0/work',
+ data=json.dumps(dict(
+ title="dummy work",
+ work_type="book",
+ editgroup=editgroup_id,
+ extra=dict(a=3, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ work_id = obj['id']
+
+ # this stub work will be referenced
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="derivative work",
+ work_type="journal-article",
+ work=work_id,
+ creators=[creator_id],
+ doi="10.1234/58",
+ editgroup=editgroup_id,
+ refs=[
+ dict(stub="some other journal article"),
+ ],
+ extra=dict(f=7, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ stub_release_id = obj['id']
+
+ rv = app.post('/v0/release',
+ data=json.dumps(dict(
+ title="dummy work",
+ work_type="book",
+ work=work_id,
+ container=container_id,
+ creators=[creator_id],
+ doi="10.1234/5678",
+ editgroup=editgroup_id,
+ refs=[
+ dict(stub="some book", target=stub_release_id),
+ ],
+ extra=dict(f=7, b="loopy"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ release_id = obj['id']
+
+ rv = app.post('/v0/file',
+ data=json.dumps(dict(
+ sha1="deadbeefdeadbeef",
+ size=1234,
+ releases=[release_id],
+ editgroup=editgroup_id,
+ extra=dict(f=4, b="zing"))),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ file_id = obj['id']
+
+ rv = app.post('/v0/editgroup/{}/accept'.format(editgroup_id),
+ headers={"content-type": "application/json"})
+ assert rv.status_code == 200
+
+def check_entity_fields(e):
+ for key in ('rev', 'is_live', 'redirect_id'):
+ assert key in e
+ for key in ('id',):
+ assert e[key] is not None
+
+def check_release(e):
+ for key in ('work', 'release_type'):
+ assert key in e
+ for key in ('title', ):
+ assert e[key] is not None
+ for key in ('refs', 'creators'):
+ assert type(e[key]) == list
+
+def check_creator(e):
+ for key in ('name',):
+ assert e[key] is not None
+
+def check_container(e):
+ for key in ('name',):
+ assert e[key] is not None
+
+def check_file(e):
+ for key in ('size', 'sha1'):
+ assert e[key] is not None
diff --git a/python/tests/models.py b/python/tests/models.py
new file mode 100644
index 00000000..98bb6bc7
--- /dev/null
+++ b/python/tests/models.py
@@ -0,0 +1,87 @@
+
+import json
+import unittest
+import tempfile
+import pytest
+import fatcat
+import fatcat.sql
+from fatcat.models import *
+from fixtures import *
+
+
+def test_example_works(app):
+ fatcat.dummy.insert_example_works()
+
+def test_random_works(app):
+ fatcat.dummy.insert_random_works()
+
+def test_load_crossref(app):
+ with open('./tests/files/crossref-works.2018-01-21.badsample.json', 'r') as f:
+ raw = [json.loads(l) for l in f.readlines() if len(l) > 3]
+ for obj in raw:
+ fatcat.sql.add_crossref_via_model(obj)
+
+def test_schema_release_rev(app):
+ assert ReleaseRev.query.count() == 0
+ e = {
+ "title": "Bogus title",
+ "release_type": "book",
+ "creators": [],
+ "refs": [],
+ }
+ model = release_rev_schema.load(e)
+ fatcat.db.session.add(model.data)
+ fatcat.db.session.commit()
+ assert ReleaseRev.query.count() == 1
+ model_after = ReleaseRev.query.first()
+ serial = release_rev_schema.dump(model_after).data
+ #check_release(serial)
+ for k in e:
+ assert e[k] == serial[k]
+
+def test_schema_creator_rev(app):
+ assert ReleaseRev.query.count() == 0
+ e = {
+ "name": "Robin (Batman)",
+ }
+ model = creator_rev_schema.load(e)
+ fatcat.db.session.add(model.data)
+ fatcat.db.session.commit()
+ assert CreatorRev.query.count() == 1
+ model_after = CreatorRev.query.first()
+ serial = creator_rev_schema.dump(model_after).data
+ check_creator(serial)
+ for k in e.keys():
+ assert e[k] == serial[k]
+
+def test_schema_container_rev(app):
+ assert ReleaseRev.query.count() == 0
+ e = {
+ "name": "Papers Monthly",
+ }
+ model = container_rev_schema.load(e)
+ fatcat.db.session.add(model.data)
+ fatcat.db.session.commit()
+ assert ContainerRev.query.count() == 1
+ model_after = ContainerRev.query.first()
+ serial = container_rev_schema.dump(model_after).data
+ check_container(serial)
+ for k in e.keys():
+ assert e[k] == serial[k]
+
+def test_schema_file_rev(app):
+ assert ReleaseRev.query.count() == 0
+ e = {
+ "sha1": "asdf",
+ "size": 6,
+ }
+ model = file_rev_schema.load(e)
+ print(model)
+ fatcat.db.session.add(model.data)
+ fatcat.db.session.commit()
+ assert FileRev.query.count() == 1
+ model_after = FileRev.query.first()
+ serial = file_rev_schema.dump(model_after).data
+ check_file(serial)
+ for k in e.keys():
+ assert e[k] == serial[k]
diff --git a/python/tests/routes.py b/python/tests/routes.py
new file mode 100644
index 00000000..79d97fe4
--- /dev/null
+++ b/python/tests/routes.py
@@ -0,0 +1,67 @@
+
+import json
+import tempfile
+import pytest
+import fatcat
+import fatcat.sql
+from fatcat.models import *
+from fixtures import *
+
+
+def test_static_routes(rich_app):
+ app = rich_app
+
+ for route in ('/health', '/robots.txt', '/', '/about'):
+ rv = app.get(route)
+ assert rv.status_code == 200
+
+ assert app.get("/static/bogus/route").status_code == 404
+
+
+def test_all_views(rich_app):
+ app = rich_app
+
+ for route in ('work', 'release', 'creator', 'container', 'file'):
+ print(route)
+ rv = app.get('/{}/1'.format(route))
+ assert rv.status_code == 200
+
+ rv = app.get('/{}/999999999999'.format(route))
+ assert rv.status_code == 404
+
+ rv = app.get('/work/random')
+ rv = app.get(rv.location)
+ assert rv.status_code == 200
+
+ rv = app.get('/work/random')
+ assert rv.status_code == 302
+
+ rv = app.get('/work/create')
+ assert rv.status_code == 200
+
+ rv = app.get('/release/random')
+ assert rv.status_code == 302
+
+ rv = app.get('/release/1/changelog')
+ assert rv.status_code == 200
+
+ rv = app.get('/editgroup/1')
+ assert rv.status_code == 200
+
+ rv = app.get('/editgroup/99999999')
+ assert rv.status_code == 404
+
+ rv = app.get('/editgroup/current')
+ assert rv.status_code == 302
+
+ rv = app.get('/editor/admin')
+ assert rv.status_code == 200
+
+ rv = app.get('/editor/bizzaro')
+ assert rv.status_code == 404
+
+ rv = app.get('/editor/admin/changelog')
+ assert rv.status_code == 200
+
+ rv = app.get('/editor/bizarro/changelog')
+ assert rv.status_code == 404
diff --git a/python/tests/test_fixtures.py b/python/tests/test_fixtures.py
new file mode 100644
index 00000000..0a0d3176
--- /dev/null
+++ b/python/tests/test_fixtures.py
@@ -0,0 +1,29 @@
+
+import pytest
+import fatcat.api_client
+from fixtures import *
+
+
+def test_rich_app_fixture(rich_app):
+ app = rich_app
+
+ assert ChangelogEntry.query.count() == 1
+
+ for cls in (WorkIdent, WorkRev, WorkEdit,
+ ContainerIdent, ContainerRev, ContainerEdit,
+ CreatorIdent, CreatorRev, CreatorEdit,
+ FileIdent, FileRev, FileEdit):
+ assert cls.query.count() == 1
+ for cls in (ReleaseIdent, ReleaseRev, ReleaseEdit):
+ assert cls.query.count() == 2
+
+ for cls in (WorkIdent,
+ ContainerIdent,
+ CreatorIdent,
+ FileIdent):
+ assert cls.query.filter(cls.is_live==True).count() == 1
+ assert ReleaseIdent.query.filter(ReleaseIdent.is_live==True).count() == 2
+
+ # test that editor's active edit group is now invalid
+ editor = Editor.query.first()
+ assert editor.active_editgroup == None