@@ -16,28 +16,55 @@ def test_arxiv_returns_result(self):
1616 result = ADS .extract (Statement (Snak ('P818' , ('1212.1162' ,))))
1717 self .assertTrue (result .patch )
1818
19- def test_nonexistent_bibcode_sets_prior_ident (self ):
20- result = ADS .extract (Statement (Snak ('P819' , ('X' ,))))
21- self .assertIsNotNone (result .prior_ident )
22- self .assertIsNone (result .patch )
23- self .assertIsNone (result .new_ident )
19+ def test_nonexistent_bibcode_sets_deprecated_patch (self ):
20+ ident = Statement (Snak ('P819' , ('X' ,)))
21+ result = ADS .extract (ident )
22+ self .assertIsNotNone (result .patch )
23+ deprecated = [s for s in result .patch if s .rank == 'deprecated' ]
24+ self .assertTrue (deprecated )
25+ self .assertIs (deprecated [0 ].mainsnak , ident .mainsnak )
26+ self .assertFalse (hasattr (result , 'prior_ident' ))
2427
2528 def test_nonexistent_doi_returns_empty (self ):
2629 result = ADS .extract (Statement (Snak ('P356' , ('X' ,))))
27- self .assertIsNone (result .prior_ident )
2830 self .assertIsNone (result .patch )
29- self .assertIsNone (result .new_ident )
3031
3132 def test_nonexistent_arxiv_returns_empty (self ):
3233 result = ADS .extract (Statement (Snak ('P818' , ('X' ,))))
33- self .assertIsNone (result .prior_ident )
3434 self .assertIsNone (result .patch )
35- self .assertIsNone (result .new_ident )
3635
3736 def test_bibcode_redirect (self ):
38- ident = Statement (Snak ('P819' , ('2023arXiv230313424H' ,)))
39- result = ADS .extract (ident )
40- self .assertIs (result .prior_ident , ident )
41- self .assertEqual (result .new_ident .mainsnak .property , 'P819' )
42- self .assertEqual (result .new_ident .mainsnak .value , ('2023A&A...673A.114H' ,))
43- self .assertTrue (result .patch )
37+ expected = {
38+ '2023A&A...673A.114H' : ('P819' , False ),
39+ '2023arXiv230313424H' : ('P819' , True ),
40+ '2303.13424' : ('P818' , False ),
41+ '10.1051/0004-6361/202346285' : ('P356' , False ),
42+ '10.48550/arXiv.2303.13424' : ('P356' , True ),
43+ }
44+ result = ADS .extract (Statement (Snak ('P819' , ('2023arXiv230313424H' ,))))
45+ for s in (result .patch or []):
46+ if Snak .type_of (s .mainsnak .property ) != 'external-id' :
47+ continue
48+ value = (s .mainsnak .value or (None ,))[0 ]
49+ self .assertIn (value , expected )
50+ prop , deprecated = expected .pop (value )
51+ self .assertEqual (s .mainsnak .property , prop , value )
52+ self .assertEqual (s .rank , 'deprecated' if deprecated else None , value )
53+ self .assertFalse (expected , f'Missing from patch: { list (expected )} ' )
54+
55+ def test_arxiv_only_bibcode (self ):
56+ expected = {
57+ '2008arXiv0812.5116B' : ('P819' , False ),
58+ '0812.5116' : ('P818' , False ),
59+ '10.48550/arXiv.0812.5116' : ('P356' , False ),
60+ }
61+ result = ADS .extract (Statement (Snak ('P819' , ('2008arXiv0812.5116B' ,))))
62+ for s in (result .patch or []):
63+ if Snak .type_of (s .mainsnak .property ) != 'external-id' :
64+ continue
65+ value = (s .mainsnak .value or (None ,))[0 ]
66+ self .assertIn (value , expected )
67+ prop , deprecated = expected .pop (value )
68+ self .assertEqual (s .mainsnak .property , prop , value )
69+ self .assertEqual (s .rank , 'deprecated' if deprecated else None , value )
70+ self .assertFalse (expected , f'Missing from patch: { list (expected )} ' )
0 commit comments