34 lines
1.7 KiB
Python
34 lines
1.7 KiB
Python
import io
|
|
import json
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from paper_atlas.collectors.peerread import collect
|
|
from paper_atlas.ingestion.records import ingest_file
|
|
from paper_atlas.db.store import Store
|
|
|
|
|
|
class PeerReadTests(unittest.TestCase):
|
|
def test_explicit_rejection_and_no_review_body_storage(self):
|
|
tree={'sha':'a'*40,'tree':[{'path':'data/iclr_2017/test/reviews/123.json'}]}
|
|
paper={'conference':'ICLR 2017 conference submission','id':'123','title':'Public paper','abstract':'Abstract','authors':'Jane Doe, John Smith','accepted':False,'reviews':[{'text':'Do not persist this review body'}]}
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
root=Path(tmp)
|
|
with patch('paper_atlas.collectors.peerread.fetch',side_effect=[json.dumps({'sha':'a'*40}).encode(),json.dumps(tree).encode()]),patch('paper_atlas.collectors.peerread.urllib.request.urlopen',return_value=io.BytesIO(json.dumps(paper).encode())),patch('paper_atlas.collectors.peerread.time.sleep'):
|
|
collect(root/'cache',root/'out')
|
|
path=root/'out/peerread-iclr2017-main.jsonl'
|
|
record=json.loads(path.read_text())
|
|
self.assertEqual(record['status'],'rejected')
|
|
self.assertNotIn('Do not persist',path.read_text())
|
|
ingest_file(root/'db.sqlite',path)
|
|
store=Store(root/'db.sqlite')
|
|
self.addCleanup(store.conn.close)
|
|
self.assertEqual(store.conn.execute('SELECT status FROM decisions').fetchone()[0],'rejected')
|
|
self.assertEqual(store.conn.execute('SELECT status FROM edition_sources').fetchone()[0],'complete')
|
|
|
|
|
|
if __name__=='__main__':
|
|
unittest.main()
|