import json import pytest from fixtures import * def test_release_bibtex(app, api): # "realistic" demo entity rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaam') assert rv.status_code == 200 assert b'BibTeX' in rv.data rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaam.bib') assert rv.status_code == 200 assert b'@article{' in rv.data rv = app.get('/release/ccccccccccccccccccccccccca.bib') assert rv.status_code == 404 rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaam/citeproc?style=bibtex') assert rv.status_code == 200 rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaam/citeproc?style=csl-json') assert rv.status_code == 200 # could also rv.get_json() here json.loads(rv.data.decode('utf-8')) rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaam/citeproc?style=modern-language-association') assert rv.status_code == 200 assert rv.data.decode('utf-8').startswith('Ioannidis, J.. Why Most Published Research Findings Are False') # "dummy" demo entity; very minimal metadata rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaai') assert rv.status_code == 200 assert b'BibTeX' in rv.data rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaai.bib') assert rv.status_code == 200 rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaai/citeproc?style=modern-language-association') assert rv.status_code == 200 rv = app.get('/release/aaaaaaaaaaaaarceaaaaaaaaai/citeproc?style=csl-json') assert rv.status_code == 200 # create release which can not have citeproc run on it (no authors) eg = quick_eg(api) r1 = ReleaseEntity( title="some title", ext_ids=ReleaseExtIds(), ) r1edit = api.create_release(eg.editgroup_id, r1) api.accept_editgroup(eg.editgroup_id) rv = app.get('/release/{}'.format(r1edit.ident)) assert rv.status_code == 200 assert not b'BibTeX' in rv.data with pytest.raises(ValueError): rv = app.get('/release/{}.bib'.format(r1edit.ident)) # create release can have citeproc run on it (no authors) eg = quick_eg(api) r2 = ReleaseEntity( title="some title again", contribs=[ ReleaseContrib( given_name="Paul", surname="Otlet"), ], ext_ids=ReleaseExtIds(), ) r2edit = api.create_release(eg.editgroup_id, r2) api.accept_editgroup(eg.editgroup_id) rv = app.get('/release/{}'.format(r2edit.ident)) assert rv.status_code == 200 assert b'BibTeX' in rv.data rv = app.get('/release/{}.bib'.format(r2edit.ident)) assert rv.status_code == 200