@@ -36,4 +36,46 @@ def aspace_records
3636 assert_match 'The Paul Earls archives contains a large number of music manuscript' ,
3737 aspace_records [ 'results' ] [ 0 ] . blurb
3838 end
39+
40+ # Some ASpace records have a publication date range rather than a creation date range. The following regression test
41+ # ensures that the NormalizeTimdex model does not error for such records.
42+ test 'records with no creation date do not error' do
43+ VCR . use_cassette ( 'aspace publication date' ,
44+ allow_playback_repeats : true ) do
45+ raw_query = SearchTimdex . new . search ( 'SOVEREIGN INTIMACY: PRIVATE MEDIA AND THE TRACES OF COLONIAL VIOLENCE' )
46+ assert_not raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'kind' ] == 'creation'
47+ assert_nothing_raised do
48+ NormalizeTimdex . new . to_result ( raw_query , 'SOVEREIGN INTIMACY: PRIVATE MEDIA AND THE TRACES OF COLONIAL VIOLENCE' )
49+ end
50+ end
51+ end
52+
53+ # This is another regression test. Now that we know that records with no creation date will not error, we also want
54+ # to ensure that records with a publication date will be normalized accordingly.
55+ test 'publication dates are normalized' do
56+ VCR . use_cassette ( 'aspace publication date' ,
57+ allow_playback_repeats : true ) do
58+ raw_query = SearchTimdex . new . search ( 'SOVEREIGN INTIMACY: PRIVATE MEDIA AND THE TRACES OF COLONIAL VIOLENCE' )
59+ normalized = NormalizeTimdex . new . to_result ( raw_query , 'SOVEREIGN INTIMACY: PRIVATE MEDIA AND THE TRACES OF COLONIAL VIOLENCE' )
60+
61+ assert_equal 'publication' , raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'kind' ]
62+ assert_equal '1940' , raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'range' ] [ 'gte' ]
63+ assert_equal '1983' , raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'range' ] [ 'lte' ]
64+ assert_equal '1940-1983' , normalized [ 'results' ] [ 0 ] . year
65+ end
66+ end
67+
68+ test 'normalizer selects the first of two relevant dates' do
69+ VCR . use_cassette ( 'aspace multiple creation dates' ) do
70+ raw_query = SearchTimdex . new . search ( 'Timurid Architecture Research Archive' )
71+ assert raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . count > 1
72+ assert_not_equal raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first ,
73+ raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . second
74+
75+ start_date = raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'range' ] [ 'gte' ]
76+ end_date = raw_query [ 'data' ] [ 'search' ] [ 'records' ] . first [ 'dates' ] . first [ 'range' ] [ 'lte' ]
77+ normalized = NormalizeTimdex . new . to_result ( raw_query , 'Timurid Architecture Research Archive' )
78+ assert_equal "#{ start_date } -#{ end_date } " , normalized [ 'results' ] [ 0 ] . year
79+ end
80+ end
3981end
0 commit comments