Files
codex-bot 1c18cbe03a
Metadata integrity checks / metadata (push) Successful in 1m12s
Package Paper Atlas with organized modules and a unified CLI
2026-11-06 17:32:24 +08:00

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()