36 lines
2.2 KiB
Python
36 lines
2.2 KiB
Python
import json
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
|
|
from paper_atlas.audits.coverage import report
|
|
from paper_atlas.db.store import Store
|
|
|
|
|
|
class CoverageTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.tmp=tempfile.TemporaryDirectory();self.addCleanup(self.tmp.cleanup)
|
|
self.root=Path(self.tmp.name);self.db=self.root/'papers.sqlite';self.store=Store(self.db);self.addCleanup(self.store.conn.close)
|
|
self.registry=self.root/'venues.json';self.registry.write_text(json.dumps({'scope_note':'Candidate scope','venues':[{'acronym':'COLING','field':'language'},{'acronym':'AAAI','field':'general_ai'}]}))
|
|
|
|
def test_zero_coverage_targets_are_listed_and_joint_alias_is_counted_once(self):
|
|
paper,record=self.store.record('acl_anthology','joint-paper','https://example.org','Joint paper','Abstract',['Jane Doe'])
|
|
edition=self.store.decision(paper,record,'COLING+LREC',2024,'main','joint-paper','https://example.org','accepted','Accepted',aliases=['COLING','LREC'])
|
|
self.store.decision(paper,record,'COLING+LREC',2024,'main','joint-paper','https://example.org/another-observation','accepted','Accepted',aliases=['COLING'])
|
|
self.store.conn.commit();result=report(self.db,self.registry)
|
|
self.assertEqual(result['target_venue_count'],2);self.assertEqual(result['venues_with_imported_records'],1)
|
|
coling,aaai=result['venues'];self.assertEqual(coling['imported_submissions'],1)
|
|
self.assertEqual(coling['editions'][0]['canonical_venue'],'COLING+LREC')
|
|
self.assertEqual(aaai['history_status'],'no_imported_records');self.assertEqual(aaai['editions'],[])
|
|
self.assertNotEqual(coling['history_status'],'complete')
|
|
|
|
def test_same_paper_across_years_is_not_two_distinct_papers(self):
|
|
paper,record=self.store.record('source','one','https://example.org','A paper','Abstract',[])
|
|
for year in (2024,2025):
|
|
self.store.decision(paper,record,'COLING',year,'main',str(year),'https://example.org','accepted','Accepted')
|
|
self.store.conn.commit();coling=report(self.db,self.registry)['venues'][0]
|
|
self.assertEqual(coling['imported_submissions'],2);self.assertEqual(coling['distinct_papers'],1)
|
|
|
|
|
|
if __name__=='__main__':unittest.main()
|