stanford-mods 2.6.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/workflows/ruby.yml +24 -0
 - data/lib/stanford-mods/{geo_spatial.rb → concerns/geo_spatial.rb} +3 -5
 - data/lib/stanford-mods/concerns/name.rb +57 -0
 - data/lib/stanford-mods/concerns/origin_info.rb +113 -0
 - data/lib/stanford-mods/{physical_location.rb → concerns/physical_location.rb} +2 -2
 - data/lib/stanford-mods/concerns/searchworks.rb +125 -0
 - data/lib/stanford-mods/concerns/searchworks_subjects.rb +126 -0
 - data/lib/stanford-mods/concerns/title.rb +87 -0
 - data/lib/stanford-mods/coordinate.rb +21 -3
 - data/lib/stanford-mods/date_parsing.rb +32 -288
 - data/lib/stanford-mods/imprint.rb +149 -325
 - data/lib/stanford-mods/record.rb +20 -0
 - data/lib/stanford-mods/version.rb +1 -1
 - data/lib/stanford-mods/{searchworks_languages.rb → vocabularies/searchworks_languages.rb} +2 -0
 - data/lib/stanford-mods.rb +13 -11
 - data/spec/fixtures/searchworks_imprint_data.rb +38 -39
 - data/spec/fixtures/searchworks_pub_date_data.rb +7 -7
 - data/spec/fixtures/spotlight_pub_date_data.rb +7 -7
 - data/spec/geo_spatial_spec.rb +1 -6
 - data/spec/imprint_spec.rb +238 -207
 - data/spec/name_spec.rb +28 -232
 - data/spec/origin_info_spec.rb +34 -300
 - data/spec/searchworks_basic_spec.rb +1 -3
 - data/spec/searchworks_pub_dates_spec.rb +0 -215
 - data/spec/searchworks_spec.rb +0 -21
 - data/spec/searchworks_subject_raw_spec.rb +106 -105
 - data/spec/searchworks_subject_spec.rb +19 -55
 - data/spec/searchworks_title_spec.rb +5 -5
 - data/stanford-mods.gemspec +1 -1
 - metadata +24 -20
 - data/.travis.yml +0 -17
 - data/lib/marc_countries.rb +0 -387
 - data/lib/stanford-mods/geo_utils.rb +0 -28
 - data/lib/stanford-mods/name.rb +0 -80
 - data/lib/stanford-mods/origin_info.rb +0 -489
 - data/lib/stanford-mods/searchworks.rb +0 -333
 - data/lib/stanford-mods/searchworks_subjects.rb +0 -196
 - data/spec/date_parsing_spec.rb +0 -905
 
    
        data/spec/origin_info_spec.rb
    CHANGED
    
    | 
         @@ -31,8 +31,8 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       31 
31 
     | 
    
         
             
                    '<dateCreated point="end">1599</dateCreated>' +
         
     | 
| 
       32 
32 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       33 
33 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       34 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, true)).to eq method_sym.to_s =~ /int/ ? 1599 : '1599'
         
     | 
| 
       35 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
      
 34 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: true)).to eq method_sym.to_s =~ /int/ ? 1599 : '1599'
         
     | 
| 
      
 35 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         
             
                it 'nil if ignore_approximate and all dates are approximate' do
         
     | 
| 
       38 
38 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
         @@ -40,8 +40,8 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    '<dateCreated point="end" qualifier="questionable">1599</dateCreated>' +
         
     | 
| 
       41 
41 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       42 
42 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       43 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, true)).to eq nil
         
     | 
| 
       44 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: true)).to eq nil
         
     | 
| 
      
 44 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
       45 
45 
     | 
    
         
             
                end
         
     | 
| 
       46 
46 
     | 
    
         
             
                it 'respects ignore_approximate even for keyDate' do
         
     | 
| 
       47 
47 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
         @@ -49,14 +49,14 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       49 
49 
     | 
    
         
             
                    '<dateCreated point="end">1599</dateCreated>' +
         
     | 
| 
       50 
50 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       51 
51 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       52 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, true)).to eq method_sym.to_s =~ /int/ ? 1599 : '1599'
         
     | 
| 
       53 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
      
 52 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: true)).to eq method_sym.to_s =~ /int/ ? 1599 : '1599'
         
     | 
| 
      
 53 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, ignore_approximate: false)).to eq method_sym.to_s =~ /int/ ? 1000 : '1000'
         
     | 
| 
       54 
54 
     | 
    
         
             
                end
         
     | 
| 
       55 
55 
     | 
    
         
             
                it 'uses dateCaptured if no dateIssued or dateCreated' do
         
     | 
| 
       56 
56 
     | 
    
         
             
                  # for web archive seed files
         
     | 
| 
       57 
57 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       58 
     | 
    
         
            -
                    '<dateCaptured encoding=" 
     | 
| 
       59 
     | 
    
         
            -
                    '<dateCaptured encoding=" 
     | 
| 
      
 58 
     | 
    
         
            +
                    '<dateCaptured encoding="iso8601" point="start" keyDate="yes">20151215121212</dateCaptured>' +
         
     | 
| 
      
 59 
     | 
    
         
            +
                    '<dateCaptured encoding="iso8601" point="end">20151218111111</dateCaptured>' +
         
     | 
| 
       60 
60 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       61 
61 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       62 
62 
     | 
    
         
             
                  expect(smods_rec.send(method_sym)).to eq method_sym.to_s =~ /int/ ? 2015 : '2015'
         
     | 
| 
         @@ -92,24 +92,24 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       92 
92 
     | 
    
         
             
                it '-200 for 200 B.C.' do
         
     | 
| 
       93 
93 
     | 
    
         
             
                  # hd778hw9236
         
     | 
| 
       94 
94 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       95 
     | 
    
         
            -
                    '<dateCreated  
     | 
| 
       96 
     | 
    
         
            -
                    '<dateCreated  
     | 
| 
      
 95 
     | 
    
         
            +
                    '<dateCreated keyDate="yes" point="start" qualifier="approximate">200 B.C.</dateCreated>' +
         
     | 
| 
      
 96 
     | 
    
         
            +
                    '<dateCreated keyDate="yes" point="end" qualifier="approximate">180 B.C.</dateCreated>' +
         
     | 
| 
       97 
97 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       98 
98 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       99 
     | 
    
         
            -
                  expect(smods_rec.pub_year_int).to eq(- 
     | 
| 
      
 99 
     | 
    
         
            +
                  expect(smods_rec.pub_year_int).to eq(-199)
         
     | 
| 
       100 
100 
     | 
    
         
             
                end
         
     | 
| 
       101 
101 
     | 
    
         
             
                it '-211 for 211 B.C.' do
         
     | 
| 
       102 
102 
     | 
    
         
             
                  # ww728rz0477
         
     | 
| 
       103 
103 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       104 
     | 
    
         
            -
                    '<dateCreated  
     | 
| 
       105 
     | 
    
         
            -
                    '<dateCreated  
     | 
| 
      
 104 
     | 
    
         
            +
                    '<dateCreated keyDate="yes" point="start" qualifier="approximate">211 B.C.</dateCreated>' +
         
     | 
| 
      
 105 
     | 
    
         
            +
                    '<dateCreated keyDate="yes" point="end" qualifier="approximate">150 B.C.</dateCreated>' +
         
     | 
| 
       106 
106 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       107 
107 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       108 
     | 
    
         
            -
                  expect(smods_rec.pub_year_int).to eq(- 
     | 
| 
      
 108 
     | 
    
         
            +
                  expect(smods_rec.pub_year_int).to eq(-210)
         
     | 
| 
       109 
109 
     | 
    
         
             
                end
         
     | 
| 
       110 
110 
     | 
    
         
             
              end
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
              context '* 
     | 
| 
      
 112 
     | 
    
         
            +
              context '*best_or_earliest_year' do
         
     | 
| 
       113 
113 
     | 
    
         
             
                it 'selects earliest (valid) parseable date from multiple options' do
         
     | 
| 
       114 
114 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       115 
115 
     | 
    
         
             
                    '<dateIssued point="start" qualifier="questionable">1758</dateIssued>' +
         
     | 
| 
         @@ -117,7 +117,7 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       117 
117 
     | 
    
         
             
                    '<dateIssued>1753]</dateIssued>' +
         
     | 
| 
       118 
118 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       119 
119 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       120 
     | 
    
         
            -
                  expect(Stanford::Mods:: 
     | 
| 
      
 120 
     | 
    
         
            +
                  expect(Stanford::Mods::OriginInfo.best_or_earliest_year(smods_rec.origin_info.dateIssued).xml.text).to eq '1753]'
         
     | 
| 
       121 
121 
     | 
    
         
             
                end
         
     | 
| 
       122 
122 
     | 
    
         
             
                it 'ignores encoding' do
         
     | 
| 
       123 
123 
     | 
    
         
             
                  # encoding matters for choosing display, not for parsing year
         
     | 
| 
         @@ -127,31 +127,21 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       127 
127 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf">1300</dateIssued>' +
         
     | 
| 
       128 
128 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       129 
129 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       130 
     | 
    
         
            -
                  expect(Stanford::Mods:: 
     | 
| 
      
 130 
     | 
    
         
            +
                  expect(Stanford::Mods::OriginInfo.best_or_earliest_year(smods_rec.origin_info.dateIssued).xml.text).to eq '1100'
         
     | 
| 
       131 
131 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       132 
132 
     | 
    
         
             
                    '<dateIssued>1200</dateIssued>' +
         
     | 
| 
       133 
133 
     | 
    
         
             
                    '<dateIssued encoding="marc">1300</dateIssued>' +
         
     | 
| 
       134 
134 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf">1100</dateIssued>' +
         
     | 
| 
       135 
135 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       136 
136 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       137 
     | 
    
         
            -
                  expect(Stanford::Mods:: 
     | 
| 
      
 137 
     | 
    
         
            +
                  expect(Stanford::Mods::OriginInfo.best_or_earliest_year(smods_rec.origin_info.dateIssued).xml.text).to eq '1100'
         
     | 
| 
       138 
138 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       139 
139 
     | 
    
         
             
                    '<dateIssued>1300</dateIssued>' +
         
     | 
| 
       140 
140 
     | 
    
         
             
                    '<dateIssued encoding="marc">1100</dateIssued>' +
         
     | 
| 
       141 
141 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf">1200</dateIssued>' +
         
     | 
| 
       142 
142 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       143 
143 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       144 
     | 
    
         
            -
                  expect(Stanford::Mods:: 
     | 
| 
       145 
     | 
    
         
            -
                end
         
     | 
| 
       146 
     | 
    
         
            -
                it 'calls DateParsing.sortable_year_string_from_date_str for each element value' do
         
     | 
| 
       147 
     | 
    
         
            -
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       148 
     | 
    
         
            -
                    '<dateIssued>1100</dateIssued>' +
         
     | 
| 
       149 
     | 
    
         
            -
                    '<dateIssued encoding="marc">1200</dateIssued>' +
         
     | 
| 
       150 
     | 
    
         
            -
                    '<dateIssued encoding="w3cdtf">1300</dateIssued>' +
         
     | 
| 
       151 
     | 
    
         
            -
                    mods_origin_info_end_str
         
     | 
| 
       152 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       153 
     | 
    
         
            -
                  expect(Stanford::Mods::DateParsing).to receive(:sortable_year_string_from_date_str).exactly(3).times
         
     | 
| 
       154 
     | 
    
         
            -
                  Stanford::Mods::Record.earliest_year_str(smods_rec.date_issued_elements)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  expect(Stanford::Mods::OriginInfo.best_or_earliest_year(smods_rec.origin_info.dateIssued).xml.text).to eq '1100'
         
     | 
| 
       155 
145 
     | 
    
         
             
                end
         
     | 
| 
       156 
146 
     | 
    
         
             
              end
         
     | 
| 
       157 
147 
     | 
    
         | 
| 
         @@ -162,7 +152,7 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       162 
152 
     | 
    
         
             
                    '<dateIssued keyDate="yes">2014</dateIssued>' +
         
     | 
| 
       163 
153 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       164 
154 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       165 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec. 
     | 
| 
      
 155 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)).to eq method_sym.to_s =~ /int/ ? 2014 : '2014'
         
     | 
| 
       166 
156 
     | 
    
         
             
                end
         
     | 
| 
       167 
157 
     | 
    
         
             
                it 'ignores invalid keyDate value' do
         
     | 
| 
       168 
158 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
         @@ -170,22 +160,18 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       170 
160 
     | 
    
         
             
                    '<dateIssued>1499</dateIssued>' +
         
     | 
| 
       171 
161 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       172 
162 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       173 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec. 
     | 
| 
      
 163 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)).to eq method_sym.to_s =~ /int/ ? 1499 : '1499'
         
     | 
| 
       174 
164 
     | 
    
         
             
                end
         
     | 
| 
       175 
     | 
    
         
            -
                it 'calls  
     | 
| 
      
 165 
     | 
    
         
            +
                it 'calls earliest_year if multiple keyDates present' do
         
     | 
| 
       176 
166 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       177 
167 
     | 
    
         
             
                    '<dateCreated keyDate="yes">2003</dateCreated>' +
         
     | 
| 
       178 
168 
     | 
    
         
             
                    '<dateCreated keyDate="yes">2001</dateCreated>' +
         
     | 
| 
       179 
169 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       180 
170 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
       183 
     | 
    
         
            -
                  else
         
     | 
| 
       184 
     | 
    
         
            -
                    expect(Stanford::Mods::Record).to receive(:earliest_year_str).with(smods_rec.date_created_elements)
         
     | 
| 
       185 
     | 
    
         
            -
                  end
         
     | 
| 
       186 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec.date_created_elements))
         
     | 
| 
      
 171 
     | 
    
         
            +
                    expect(Stanford::Mods::OriginInfo).to receive(:best_or_earliest_year).with(smods_rec.origin_info.dateCreated)
         
     | 
| 
      
 172 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateCreated))
         
     | 
| 
       187 
173 
     | 
    
         
             
                end
         
     | 
| 
       188 
     | 
    
         
            -
                it 'calls  
     | 
| 
      
 174 
     | 
    
         
            +
                it 'calls earliest_year if no keyDate' do
         
     | 
| 
       189 
175 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       190 
176 
     | 
    
         
             
                    '<dateIssued>1753]</dateIssued>' +
         
     | 
| 
       191 
177 
     | 
    
         
             
                    '<dateIssued point="start" qualifier="questionable">1758</dateIssued>' +
         
     | 
| 
         @@ -193,11 +179,11 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       193 
179 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       194 
180 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       195 
181 
     | 
    
         
             
                  if method_sym.to_s =~ /int/
         
     | 
| 
       196 
     | 
    
         
            -
                    expect(Stanford::Mods:: 
     | 
| 
      
 182 
     | 
    
         
            +
                    expect(Stanford::Mods::OriginInfo).to receive(:best_or_earliest_year).with(smods_rec.origin_info.dateIssued)
         
     | 
| 
       197 
183 
     | 
    
         
             
                  else
         
     | 
| 
       198 
     | 
    
         
            -
                    expect(Stanford::Mods:: 
     | 
| 
      
 184 
     | 
    
         
            +
                    expect(Stanford::Mods::OriginInfo).to receive(:best_or_earliest_year).with(smods_rec.origin_info.dateIssued)
         
     | 
| 
       199 
185 
     | 
    
         
             
                  end
         
     | 
| 
       200 
     | 
    
         
            -
                  smods_rec.send(method_sym, smods_rec. 
     | 
| 
      
 186 
     | 
    
         
            +
                  smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)
         
     | 
| 
       201 
187 
     | 
    
         
             
                end
         
     | 
| 
       202 
188 
     | 
    
         
             
                it 'ignores encoding' do
         
     | 
| 
       203 
189 
     | 
    
         
             
                  # encoding matters for choosing display, not for parsing year
         
     | 
| 
         @@ -207,229 +193,25 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       207 
193 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf">1300</dateIssued>' +
         
     | 
| 
       208 
194 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       209 
195 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       210 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec. 
     | 
| 
      
 196 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)).to eq method_sym.to_s =~ /int/ ? 1100 : '1100'
         
     | 
| 
       211 
197 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       212 
198 
     | 
    
         
             
                    '<dateIssued>1200</dateIssued>' +
         
     | 
| 
       213 
199 
     | 
    
         
             
                    '<dateIssued encoding="marc">1300</dateIssued>' +
         
     | 
| 
       214 
200 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf" keyDate="yes">1100</dateIssued>' +
         
     | 
| 
       215 
201 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       216 
202 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       217 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec. 
     | 
| 
      
 203 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)).to eq method_sym.to_s =~ /int/ ? 1100 : '1100'
         
     | 
| 
       218 
204 
     | 
    
         
             
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       219 
205 
     | 
    
         
             
                    '<dateIssued>1300</dateIssued>' +
         
     | 
| 
       220 
206 
     | 
    
         
             
                    '<dateIssued encoding="marc" keyDate="yes">1100</dateIssued>' +
         
     | 
| 
       221 
207 
     | 
    
         
             
                    '<dateIssued encoding="w3cdtf">1200</dateIssued>' +
         
     | 
| 
       222 
208 
     | 
    
         
             
                    mods_origin_info_end_str
         
     | 
| 
       223 
209 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       224 
     | 
    
         
            -
                  expect(smods_rec.send(method_sym, smods_rec. 
     | 
| 
       225 
     | 
    
         
            -
                end
         
     | 
| 
       226 
     | 
    
         
            -
              end
         
     | 
| 
       227 
     | 
    
         
            -
             
     | 
| 
       228 
     | 
    
         
            -
              context '#year_display_str' do
         
     | 
| 
       229 
     | 
    
         
            -
                it_behaves_like "pub date best single value", :year_display_str
         
     | 
| 
       230 
     | 
    
         
            -
                it 'uses facet value, not sorting value' do
         
     | 
| 
       231 
     | 
    
         
            -
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       232 
     | 
    
         
            -
                    '<dateCreated keyDate="yes">180 B.C.</dateCreated>' +
         
     | 
| 
       233 
     | 
    
         
            -
                    mods_origin_info_end_str
         
     | 
| 
       234 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       235 
     | 
    
         
            -
                  expect(smods_rec.year_display_str(smods_rec.date_created_elements)).to eq '180 B.C.'
         
     | 
| 
       236 
     | 
    
         
            -
                end
         
     | 
| 
       237 
     | 
    
         
            -
              end
         
     | 
| 
       238 
     | 
    
         
            -
             
     | 
| 
       239 
     | 
    
         
            -
              context '#year_sort_str' do
         
     | 
| 
       240 
     | 
    
         
            -
                it_behaves_like "pub date best single value", :year_sort_str
         
     | 
| 
       241 
     | 
    
         
            -
                it 'uses string sorting value, not facet value' do
         
     | 
| 
       242 
     | 
    
         
            -
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       243 
     | 
    
         
            -
                    '<dateCreated keyDate="yes">180 B.C.</dateCreated>' +
         
     | 
| 
       244 
     | 
    
         
            -
                    mods_origin_info_end_str
         
     | 
| 
       245 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       246 
     | 
    
         
            -
                  expect(smods_rec.year_sort_str(smods_rec.date_created_elements)).to eq '-820'
         
     | 
| 
       247 
     | 
    
         
            -
                end
         
     | 
| 
       248 
     | 
    
         
            -
              end
         
     | 
| 
       249 
     | 
    
         
            -
             
     | 
| 
       250 
     | 
    
         
            -
              context '#year_int' do
         
     | 
| 
       251 
     | 
    
         
            -
                it_behaves_like "pub date best single value", :year_int
         
     | 
| 
       252 
     | 
    
         
            -
                it 'uses integer sorting value, not string or facet value' do
         
     | 
| 
       253 
     | 
    
         
            -
                  mods_str = mods_origin_info_start_str +
         
     | 
| 
       254 
     | 
    
         
            -
                    '<dateCreated keyDate="yes">180 B.C.</dateCreated>' +
         
     | 
| 
       255 
     | 
    
         
            -
                    mods_origin_info_end_str
         
     | 
| 
       256 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       257 
     | 
    
         
            -
                  expect(smods_rec.year_int(smods_rec.date_created_elements)).to eq(-180)
         
     | 
| 
       258 
     | 
    
         
            -
                end
         
     | 
| 
       259 
     | 
    
         
            -
              end
         
     | 
| 
       260 
     | 
    
         
            -
             
     | 
| 
       261 
     | 
    
         
            -
              context '#date_issued_elements' do
         
     | 
| 
       262 
     | 
    
         
            -
                # example string as key, expected num of Elements as value
         
     | 
| 
       263 
     | 
    
         
            -
                {
         
     | 
| 
       264 
     | 
    
         
            -
                  '<dateIssued>[1717]</dateIssued><dateIssued encoding="marc">1717</dateIssued>' => 2,
         
     | 
| 
       265 
     | 
    
         
            -
                  '<dateIssued encoding="marc" point="start">1552</dateIssued>
         
     | 
| 
       266 
     | 
    
         
            -
                     <dateIssued encoding="marc" point="end">1575</dateIssued>
         
     | 
| 
       267 
     | 
    
         
            -
                   </originInfo>
         
     | 
| 
       268 
     | 
    
         
            -
                   <originInfo>
         
     | 
| 
       269 
     | 
    
         
            -
                      <dateIssued>1544-1628]</dateIssued>' => 3,
         
     | 
| 
       270 
     | 
    
         
            -
                  '' => 0
         
     | 
| 
       271 
     | 
    
         
            -
                }.each do |example, expected|
         
     | 
| 
       272 
     | 
    
         
            -
                  describe "for example: #{example}" do
         
     | 
| 
       273 
     | 
    
         
            -
                    let(:example) { example }
         
     | 
| 
       274 
     | 
    
         
            -
                    it 'returns Array of Nokogiri Elements matching /originInfo/dateIssued' do
         
     | 
| 
       275 
     | 
    
         
            -
                      smods_rec.from_str(mods_origin_info)
         
     | 
| 
       276 
     | 
    
         
            -
                      result = smods_rec.date_issued_elements
         
     | 
| 
       277 
     | 
    
         
            -
                      expect(result).to be_instance_of(Array)
         
     | 
| 
       278 
     | 
    
         
            -
                      expect(result.size).to eq expected
         
     | 
| 
       279 
     | 
    
         
            -
                      expect(result).to all(be_an(Nokogiri::XML::Element))
         
     | 
| 
       280 
     | 
    
         
            -
                    end
         
     | 
| 
       281 
     | 
    
         
            -
                  end
         
     | 
| 
       282 
     | 
    
         
            -
                end
         
     | 
| 
       283 
     | 
    
         
            -
             
     | 
| 
       284 
     | 
    
         
            -
                context 'ignore_approximate=true' do
         
     | 
| 
       285 
     | 
    
         
            -
                  let(:qual_date_val) { '1666' }
         
     | 
| 
       286 
     | 
    
         
            -
                  let(:mods_rec) do
         
     | 
| 
       287 
     | 
    
         
            -
                    <<-EOF
         
     | 
| 
       288 
     | 
    
         
            -
                    #{mods_origin_info_start_str}
         
     | 
| 
       289 
     | 
    
         
            -
                      <dateIssued>2015</dateIssued>
         
     | 
| 
       290 
     | 
    
         
            -
                      <dateIssued qualifier="#{qual_attr_val}">#{qual_date_val}</dateIssued>
         
     | 
| 
       291 
     | 
    
         
            -
                    #{mods_origin_info_end_str}
         
     | 
| 
       292 
     | 
    
         
            -
                    EOF
         
     | 
| 
       293 
     | 
    
         
            -
                  end
         
     | 
| 
       294 
     | 
    
         
            -
             
     | 
| 
       295 
     | 
    
         
            -
                  context "removes element when attribute qualifer=" do
         
     | 
| 
       296 
     | 
    
         
            -
                    ['approximate', 'questionable'].each do |attr_val|
         
     | 
| 
       297 
     | 
    
         
            -
                      let(:qual_attr_val) { attr_val }
         
     | 
| 
       298 
     | 
    
         
            -
                      it attr_val do
         
     | 
| 
       299 
     | 
    
         
            -
                        smods_rec.from_str mods_rec
         
     | 
| 
       300 
     | 
    
         
            -
                        result = smods_rec.date_issued_elements(true)
         
     | 
| 
       301 
     | 
    
         
            -
                        expect(result).to be_instance_of(Array)
         
     | 
| 
       302 
     | 
    
         
            -
                        expect(result.size).to eq 1
         
     | 
| 
       303 
     | 
    
         
            -
                        expect(result[0].content).to eq '2015'
         
     | 
| 
       304 
     | 
    
         
            -
                      end
         
     | 
| 
       305 
     | 
    
         
            -
                    end
         
     | 
| 
       306 
     | 
    
         
            -
                  end
         
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
                  context "retains element when attribute qualifer=" do
         
     | 
| 
       309 
     | 
    
         
            -
                    ['inferred', 'invalid_attr_val'].each do |attr_val|
         
     | 
| 
       310 
     | 
    
         
            -
                      let(:qual_attr_val) { attr_val }
         
     | 
| 
       311 
     | 
    
         
            -
                      it attr_val do
         
     | 
| 
       312 
     | 
    
         
            -
                        smods_rec.from_str mods_rec
         
     | 
| 
       313 
     | 
    
         
            -
                        result = smods_rec.date_issued_elements(true)
         
     | 
| 
       314 
     | 
    
         
            -
                        expect(result).to be_instance_of(Array)
         
     | 
| 
       315 
     | 
    
         
            -
                        expect(result.size).to eq 2
         
     | 
| 
       316 
     | 
    
         
            -
                        expect(result[0].content).to eq '2015'
         
     | 
| 
       317 
     | 
    
         
            -
                        expect(result[1].content).to eq '1666'
         
     | 
| 
       318 
     | 
    
         
            -
                      end
         
     | 
| 
       319 
     | 
    
         
            -
                    end
         
     | 
| 
       320 
     | 
    
         
            -
                  end
         
     | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
                  let(:start_str) { "#{mods_origin_info_start_str}<dateIssued>2015</dateIssued>" }
         
     | 
| 
       323 
     | 
    
         
            -
                  it 'retains element without qualifier attribute"' do
         
     | 
| 
       324 
     | 
    
         
            -
                    m = start_str + '<dateIssued>1666</dateIssued>' + mods_origin_info_end_str
         
     | 
| 
       325 
     | 
    
         
            -
                    smods_rec.from_str m
         
     | 
| 
       326 
     | 
    
         
            -
                    result = smods_rec.date_issued_elements(true)
         
     | 
| 
       327 
     | 
    
         
            -
                    expect(result).to be_instance_of(Array)
         
     | 
| 
       328 
     | 
    
         
            -
                    expect(result.size).to eq 2
         
     | 
| 
       329 
     | 
    
         
            -
                    expect(result[0].content).to eq '2015'
         
     | 
| 
       330 
     | 
    
         
            -
                    expect(result[1].content).to eq '1666'
         
     | 
| 
       331 
     | 
    
         
            -
                  end
         
     | 
| 
       332 
     | 
    
         
            -
                end
         
     | 
| 
       333 
     | 
    
         
            -
              end
         
     | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
              context '#date_created_elements' do
         
     | 
| 
       336 
     | 
    
         
            -
                # example string as key, expected num of Elements as value
         
     | 
| 
       337 
     | 
    
         
            -
                {
         
     | 
| 
       338 
     | 
    
         
            -
                  '<dateCreated encoding="edtf" keydate="yes" point="start">-0012</dateCreated>
         
     | 
| 
       339 
     | 
    
         
            -
                     <dateCreated encoding="edtf" point="end">-0044</dateCreated>' => 2,
         
     | 
| 
       340 
     | 
    
         
            -
                  '' => 0
         
     | 
| 
       341 
     | 
    
         
            -
                }.each do |example, expected|
         
     | 
| 
       342 
     | 
    
         
            -
                  describe "for example: '#{example}'" do
         
     | 
| 
       343 
     | 
    
         
            -
                    let(:example) { example }
         
     | 
| 
       344 
     | 
    
         
            -
                    it 'returns Array of Nokogiri Elements matching /originInfo/dateCreated' do
         
     | 
| 
       345 
     | 
    
         
            -
                      smods_rec.from_str(mods_origin_info)
         
     | 
| 
       346 
     | 
    
         
            -
                      result = smods_rec.date_created_elements
         
     | 
| 
       347 
     | 
    
         
            -
                      expect(result).to be_instance_of(Array)
         
     | 
| 
       348 
     | 
    
         
            -
                      expect(result.size).to eq expected
         
     | 
| 
       349 
     | 
    
         
            -
                      expect(result).to all(be_an(Nokogiri::XML::Element))
         
     | 
| 
       350 
     | 
    
         
            -
                    end
         
     | 
| 
       351 
     | 
    
         
            -
                  end
         
     | 
| 
       352 
     | 
    
         
            -
                end
         
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
       354 
     | 
    
         
            -
                context 'ignore_approximate=true' do
         
     | 
| 
       355 
     | 
    
         
            -
                  let(:qual_date_val) { '1666' }
         
     | 
| 
       356 
     | 
    
         
            -
                  let(:mods_rec) do
         
     | 
| 
       357 
     | 
    
         
            -
                    <<-EOF
         
     | 
| 
       358 
     | 
    
         
            -
                    #{mods_origin_info_start_str}
         
     | 
| 
       359 
     | 
    
         
            -
                      <dateCreated>2015</dateCreated>
         
     | 
| 
       360 
     | 
    
         
            -
                      <dateCreated qualifier="#{qual_attr_val}">#{qual_date_val}</dateCreated>
         
     | 
| 
       361 
     | 
    
         
            -
                    #{mods_origin_info_end_str}
         
     | 
| 
       362 
     | 
    
         
            -
                    EOF
         
     | 
| 
       363 
     | 
    
         
            -
                  end
         
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
                  context "removes element when attribute qualifer=" do
         
     | 
| 
       366 
     | 
    
         
            -
                    ['approximate', 'questionable'].each do |attr_val|
         
     | 
| 
       367 
     | 
    
         
            -
                      let(:qual_attr_val) { attr_val }
         
     | 
| 
       368 
     | 
    
         
            -
                      it attr_val do
         
     | 
| 
       369 
     | 
    
         
            -
                        smods_rec.from_str mods_rec
         
     | 
| 
       370 
     | 
    
         
            -
                        result = smods_rec.date_created_elements(true)
         
     | 
| 
       371 
     | 
    
         
            -
                        expect(result).to be_instance_of(Array)
         
     | 
| 
       372 
     | 
    
         
            -
                        expect(result.size).to eq 1
         
     | 
| 
       373 
     | 
    
         
            -
                        expect(result[0].content).to eq '2015'
         
     | 
| 
       374 
     | 
    
         
            -
                      end
         
     | 
| 
       375 
     | 
    
         
            -
                    end
         
     | 
| 
       376 
     | 
    
         
            -
                  end
         
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
                  context "retains element when attribute qualifer=" do
         
     | 
| 
       379 
     | 
    
         
            -
                    ['inferred', 'invalid_attr_val'].each do |attr_val|
         
     | 
| 
       380 
     | 
    
         
            -
                      let(:qual_attr_val) { attr_val }
         
     | 
| 
       381 
     | 
    
         
            -
                      it attr_val do
         
     | 
| 
       382 
     | 
    
         
            -
                        smods_rec.from_str mods_rec
         
     | 
| 
       383 
     | 
    
         
            -
                        result = smods_rec.date_created_elements(true)
         
     | 
| 
       384 
     | 
    
         
            -
                        expect(result).to be_instance_of(Array)
         
     | 
| 
       385 
     | 
    
         
            -
                        expect(result.size).to eq 2
         
     | 
| 
       386 
     | 
    
         
            -
                        expect(result[0].content).to eq '2015'
         
     | 
| 
       387 
     | 
    
         
            -
                        expect(result[1].content).to eq '1666'
         
     | 
| 
       388 
     | 
    
         
            -
                      end
         
     | 
| 
       389 
     | 
    
         
            -
                    end
         
     | 
| 
       390 
     | 
    
         
            -
                  end
         
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
                  let(:start_str) { "#{mods_origin_info_start_str}<dateCreated>2015</dateCreated>" }
         
     | 
| 
       393 
     | 
    
         
            -
                  it 'retains element without qualifier attribute"' do
         
     | 
| 
       394 
     | 
    
         
            -
                    m = start_str + '<dateCreated>1666</dateCreated>' + mods_origin_info_end_str
         
     | 
| 
       395 
     | 
    
         
            -
                    smods_rec.from_str m
         
     | 
| 
       396 
     | 
    
         
            -
                    result = smods_rec.date_created_elements(true)
         
     | 
| 
       397 
     | 
    
         
            -
                    expect(result).to be_instance_of(Array)
         
     | 
| 
       398 
     | 
    
         
            -
                    expect(result.size).to eq 2
         
     | 
| 
       399 
     | 
    
         
            -
                    expect(result[0].content).to eq '2015'
         
     | 
| 
       400 
     | 
    
         
            -
                    expect(result[1].content).to eq '1666'
         
     | 
| 
       401 
     | 
    
         
            -
                  end
         
     | 
| 
       402 
     | 
    
         
            -
                end
         
     | 
| 
       403 
     | 
    
         
            -
              end
         
     | 
| 
       404 
     | 
    
         
            -
             
     | 
| 
       405 
     | 
    
         
            -
              context '*keyDate' do
         
     | 
| 
       406 
     | 
    
         
            -
                it 'returns nil if passed Array is empty' do
         
     | 
| 
       407 
     | 
    
         
            -
                  mods_str = "#{mods_origin_info_start_str}#{mods_origin_info_end_str}"
         
     | 
| 
       408 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       409 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.keyDate(smods_rec.date_issued_elements)).to be_nil
         
     | 
| 
       410 
     | 
    
         
            -
                end
         
     | 
| 
       411 
     | 
    
         
            -
                it 'returns nil if passed Array has no element with keyDate attribute' do
         
     | 
| 
       412 
     | 
    
         
            -
                  mods_str = "#{mods_origin_info_start_str}<dateIssued>[1738]</dateIssued>#{mods_origin_info_end_str}"
         
     | 
| 
       413 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       414 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.keyDate(smods_rec.date_issued_elements)).to be_nil
         
     | 
| 
       415 
     | 
    
         
            -
                end
         
     | 
| 
       416 
     | 
    
         
            -
                it 'returns nil if passed Array has multiple elements with keyDate attribute' do
         
     | 
| 
       417 
     | 
    
         
            -
                  mods_str = "#{mods_origin_info_start_str}
         
     | 
| 
       418 
     | 
    
         
            -
                    <dateIssued>[1968?-</dateIssued>
         
     | 
| 
       419 
     | 
    
         
            -
                    <dateIssued encoding='marc' point='start' keyDate='yes'>1968</dateIssued>
         
     | 
| 
       420 
     | 
    
         
            -
                    <dateIssued encoding='marc' point='end' keyDate='yes'>9999</dateIssued>
         
     | 
| 
       421 
     | 
    
         
            -
                    #{mods_origin_info_end_str}"
         
     | 
| 
       422 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       423 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.keyDate(smods_rec.date_issued_elements)).to be_nil
         
     | 
| 
       424 
     | 
    
         
            -
                end
         
     | 
| 
       425 
     | 
    
         
            -
                it 'returns single Nokogiri::XML::Element if Arrays has single element with keyDate attribute' do
         
     | 
| 
       426 
     | 
    
         
            -
                  mods_str = "#{mods_origin_info_start_str}<dateIssued encoding='w3cdtf' keyDate='yes'>2011</dateIssued>#{mods_origin_info_end_str}"
         
     | 
| 
       427 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       428 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.keyDate(smods_rec.date_issued_elements)).to be_instance_of(Nokogiri::XML::Element)
         
     | 
| 
      
 210 
     | 
    
         
            +
                  expect(smods_rec.send(method_sym, smods_rec.origin_info.dateIssued)).to eq method_sym.to_s =~ /int/ ? 1100 : '1100'
         
     | 
| 
       429 
211 
     | 
    
         
             
                end
         
     | 
| 
       430 
212 
     | 
    
         
             
              end
         
     | 
| 
       431 
213 
     | 
    
         | 
| 
       432 
     | 
    
         
            -
              context '* 
     | 
| 
      
 214 
     | 
    
         
            +
              context '*is_approximate' do
         
     | 
| 
       433 
215 
     | 
    
         
             
                it 'removes elements when date_is_approximate? returns true' do
         
     | 
| 
       434 
216 
     | 
    
         
             
                  mods_str = "#{mods_origin_info_start_str}
         
     | 
| 
       435 
217 
     | 
    
         
             
                    <dateIssued>1900</dateIssued>
         
     | 
| 
         @@ -437,59 +219,11 @@ describe "computations from /originInfo field" do 
     | 
|
| 
       437 
219 
     | 
    
         
             
                    <dateIssued qualifier='questionable'>1930</dateIssued>
         
     | 
| 
       438 
220 
     | 
    
         
             
                    #{mods_origin_info_end_str}"
         
     | 
| 
       439 
221 
     | 
    
         
             
                  smods_rec.from_str(mods_str)
         
     | 
| 
       440 
     | 
    
         
            -
                  elements = smods_rec. 
     | 
| 
      
 222 
     | 
    
         
            +
                  elements = smods_rec.origin_info.dateIssued
         
     | 
| 
       441 
223 
     | 
    
         
             
                  expect(elements.size).to eq 3
         
     | 
| 
       442 
     | 
    
         
            -
                  result =  
     | 
| 
      
 224 
     | 
    
         
            +
                  result = elements.reject { |n| smods_rec.is_approximate(n) }
         
     | 
| 
       443 
225 
     | 
    
         
             
                  expect(result).to be_instance_of(Array)
         
     | 
| 
       444 
226 
     | 
    
         
             
                  expect(result.size).to eq 2
         
     | 
| 
       445 
     | 
    
         
            -
                  expect(result.select { |date_el| Stanford::Mods::Record.date_is_approximate?(date_el) }).to eq []
         
     | 
| 
       446 
     | 
    
         
            -
                end
         
     | 
| 
       447 
     | 
    
         
            -
              end
         
     | 
| 
       448 
     | 
    
         
            -
             
     | 
| 
       449 
     | 
    
         
            -
              context '#date_is_approximate?' do
         
     | 
| 
       450 
     | 
    
         
            -
                it 'false if bad param passed' do
         
     | 
| 
       451 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.date_is_approximate?(true)).to eq false
         
     | 
| 
       452 
     | 
    
         
            -
                end
         
     | 
| 
       453 
     | 
    
         
            -
                it 'false if there is no qualifier attrib' do
         
     | 
| 
       454 
     | 
    
         
            -
                  mods_str = "#{mods_origin_info_start_str}<dateIssued>1968</dateIssued>#{mods_origin_info_end_str}"
         
     | 
| 
       455 
     | 
    
         
            -
                  smods_rec.from_str(mods_str)
         
     | 
| 
       456 
     | 
    
         
            -
                  date_el = smods_rec.date_issued_elements.first
         
     | 
| 
       457 
     | 
    
         
            -
                  expect(Stanford::Mods::Record.date_is_approximate?(date_el)).to eq false
         
     | 
| 
       458 
     | 
    
         
            -
                end
         
     | 
| 
       459 
     | 
    
         
            -
                # value of qualifier attribute as key, expected result as value
         
     | 
| 
       460 
     | 
    
         
            -
                {
         
     | 
| 
       461 
     | 
    
         
            -
                  'approximate' => true,
         
     | 
| 
       462 
     | 
    
         
            -
                  'questionable' => true,
         
     | 
| 
       463 
     | 
    
         
            -
                  'inferred' => false,
         
     | 
| 
       464 
     | 
    
         
            -
                  'typo' => false
         
     | 
| 
       465 
     | 
    
         
            -
                }.each do |attr_value, expected|
         
     | 
| 
       466 
     | 
    
         
            -
                  describe "for qualifier value: '#{attr_value}'" do
         
     | 
| 
       467 
     | 
    
         
            -
                    let(:mods_str) do
         
     | 
| 
       468 
     | 
    
         
            -
                      "#{mods_origin_info_start_str}
         
     | 
| 
       469 
     | 
    
         
            -
                         <dateIssued qualifier='#{attr_value}'>1968</dateIssued>
         
     | 
| 
       470 
     | 
    
         
            -
                      #{mods_origin_info_end_str}"
         
     | 
| 
       471 
     | 
    
         
            -
                    end
         
     | 
| 
       472 
     | 
    
         
            -
                    it expected.to_s do
         
     | 
| 
       473 
     | 
    
         
            -
                      smods_rec.from_str(mods_str)
         
     | 
| 
       474 
     | 
    
         
            -
                      date_el = smods_rec.date_issued_elements.first
         
     | 
| 
       475 
     | 
    
         
            -
                      expect(Stanford::Mods::Record.date_is_approximate?(date_el)).to eq expected
         
     | 
| 
       476 
     | 
    
         
            -
                    end
         
     | 
| 
       477 
     | 
    
         
            -
                  end
         
     | 
| 
       478 
     | 
    
         
            -
                end
         
     | 
| 
       479 
     | 
    
         
            -
              end
         
     | 
| 
       480 
     | 
    
         
            -
             
     | 
| 
       481 
     | 
    
         
            -
              context '#get_u_year' do
         
     | 
| 
       482 
     | 
    
         
            -
                it "turns ending u to 0" do
         
     | 
| 
       483 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["201u"])).to eql "2010"
         
     | 
| 
       484 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["198u"])).to eql "1980"
         
     | 
| 
       485 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["185u"])).to eql "1850"
         
     | 
| 
       486 
     | 
    
         
            -
                end
         
     | 
| 
       487 
     | 
    
         
            -
                it "turns ending uu to --" do
         
     | 
| 
       488 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["19uu"])).to eql "19--"
         
     | 
| 
       489 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["17uu"])).to eql "17--"
         
     | 
| 
       490 
     | 
    
         
            -
                end
         
     | 
| 
       491 
     | 
    
         
            -
                it 'ignores 9999' do
         
     | 
| 
       492 
     | 
    
         
            -
                  expect(smods_rec.send(:get_u_year, ["9999"])).to be_nil
         
     | 
| 
       493 
227 
     | 
    
         
             
                end
         
     | 
| 
       494 
228 
     | 
    
         
             
              end
         
     | 
| 
       495 
229 
     | 
    
         
             
            end
         
     |