from datetime import datetime,timezone from paper_monitor.models import Paper from paper_monitor.util import normalize_doi,paper_key from paper_monitor.scoring import classify_and_score from paper_monitor.render import render_markdown def test_doi_normalization(): assert normalize_doi('https://doi.org/10.1109/ABC.123.')=='10.1109/abc.123' def test_key_prefers_doi(): assert paper_key('10.1109/X.1','A title')=='doi:10.1109/x.1' def test_scoring(): p=Paper(title='Automotive Imaging Radar MIMO Antenna'); cfg={'categories':{'Antenna':['antenna'],'MIMO':['mimo']},'relevance_terms':{'automotive radar':3,'MIMO':2,'antenna':1}} p=classify_and_score(p,cfg); assert 'Antenna' in p.categories; assert p.relevance>=3 def test_render(): md=render_markdown([Paper(title='Test | Paper',relevance=4,categories=['DOA'],url='https://example.com')],'Report',datetime.now(timezone.utc)); assert 'Test \\| Paper' in md; assert '★★★★' in md