mods 2.0.1 → 2.0.2

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.
data/spec/record_spec.rb CHANGED
@@ -4,10 +4,10 @@ describe "Mods::Record" do
4
4
  before(:all) do
5
5
  @ns_hash = {'mods' => Mods::MODS_NS}
6
6
  @def_ns_decl = "xmlns='#{Mods::MODS_NS}'"
7
- @example_ns_str = "<mods #{@def_ns_decl}><note>default ns</note></mods>"
8
- @example_no_ns_str = '<mods><note>no ns</note></mods>'
7
+ @example_ns_str = "<mods #{@def_ns_decl}><note>default ns</note></mods>"
8
+ @example_no_ns_str = '<mods><note>no ns</note></mods>'
9
9
  @example_record_url = 'http://www.loc.gov/standards/mods/modsrdf/examples/0001.xml'
10
- @doc_from_str_ns = Mods::Reader.new.from_str(@example_ns_str)
10
+ @doc_from_str_ns = Mods::Reader.new.from_str(@example_ns_str)
11
11
  @doc_from_str_no_ns = Mods::Reader.new.from_str(@example_no_ns_str)
12
12
  end
13
13
 
@@ -15,19 +15,22 @@ describe "Mods::Record" do
15
15
  before(:all) do
16
16
  @mods_ng_doc_w_ns = Mods::Record.new.from_str(@example_ns_str)
17
17
  end
18
+ it "should return a mods record" do
19
+ expect(@mods_ng_doc_w_ns).to be_a_kind_of(Mods::Record)
20
+ end
18
21
  it "should have namespace aware parsing turned on by default" do
19
- @mods_ng_doc_w_ns.namespaces.size.should > 0
22
+ expect(@mods_ng_doc_w_ns.namespaces.size).to be > 0
20
23
  end
21
24
  it "terminology should work with Record object defaults when mods string has namespaces" do
22
- @mods_ng_doc_w_ns.note.map { |e| e.text }.should == ['default ns']
25
+ expect(@mods_ng_doc_w_ns.note.map { |e| e.text }).to eq(['default ns'])
23
26
  end
24
27
  it "terminology should not work with Record object defaults when mods string has NO namespaces" do
25
28
  mods_ng_doc = Mods::Record.new.from_str(@example_no_ns_str)
26
- mods_ng_doc.note.size.should == 0
29
+ expect(mods_ng_doc.note.size).to eq(0)
27
30
  end
28
31
  it "should be allowed not to care about namespaces" do
29
32
  mods_ng_doc = Mods::Record.new.from_str(@example_no_ns_str, false)
30
- mods_ng_doc.note.map { |e| e.text }.should == ['no ns']
33
+ expect(mods_ng_doc.note.map { |e| e.text }).to eq(['no ns'])
31
34
  end
32
35
  end
33
36
 
@@ -40,7 +43,7 @@ describe "Mods::Record" do
40
43
  expect(@mods_doc).to be_a_kind_of(Mods::Record)
41
44
  end
42
45
  it "should raise an error on a bad url" do
43
- lambda{Mods::Record.new.from_url("http://example.org/fake.xml")}.should raise_error
46
+ expect{Mods::Record.new.from_url("http://example.org/fake.xml")}.to raise_error
44
47
  end
45
48
  end
46
49
 
@@ -48,8 +51,7 @@ describe "Mods::Record" do
48
51
  context "from_file" do
49
52
  before(:all) do
50
53
  @fixture_dir = File.join(File.dirname(__FILE__), 'fixture_data')
51
- @fixture_mods_file = File.join(@fixture_dir, 'shpc1.mods.xml')
52
- @mods_doc = Mods::Record.new.from_file(@fixture_mods_file)
54
+ @mods_doc = Mods::Record.new.from_file(File.join(@fixture_dir, 'shpc1.mods.xml'))
53
55
  end
54
56
  it "should return a mods record" do
55
57
  expect(@mods_doc).to be_a_kind_of(Mods::Record)
@@ -92,19 +94,22 @@ describe "Mods::Record" do
92
94
  ng_xml = Nokogiri::XML(bad_ns_wrapped)
93
95
  @mods_node_no_ns = ng_xml.xpath('//n:mods', {'n'=>'http://www.not.mods.org'}).first
94
96
  end
97
+ it "should return a mods record" do
98
+ expect(@mods_ng_doc).to be_a_kind_of(Mods::Record)
99
+ end
95
100
  it "should have namespace aware parsing turned on by default" do
96
- @mods_ng_doc.namespaces.size.should > 0
101
+ expect(@mods_ng_doc.namespaces.size).to be > 0
97
102
  end
98
103
  it "terminology should work with Record object defaults when mods string has namespaces" do
99
- @mods_ng_doc.title_info.title.map { |e| e.text }.should == ["boo"]
104
+ expect(@mods_ng_doc.title_info.title.map { |e| e.text }).to eq(["boo"])
100
105
  end
101
106
  it "terminology should not work with Record object defaults when mods node has NO namespaces" do
102
107
  mods_ng_doc = Mods::Record.new.from_nk_node(@mods_node_no_ns)
103
- mods_ng_doc.title_info.title.size.should == 0
108
+ expect(mods_ng_doc.title_info.title.size).to eq(0)
104
109
  end
105
110
  it "should be allowed not to care about namespaces" do
106
111
  mods_ng_doc = Mods::Record.new.from_nk_node(@mods_node_no_ns, false)
107
- mods_ng_doc.title_info.title.map { |e| e.text }.should == ["What? No namespaces?"]
112
+ expect(mods_ng_doc.title_info.title.map { |e| e.text }).to eq(["What? No namespaces?"])
108
113
  end
109
114
  end # context from_nk_node
110
115
 
@@ -124,43 +129,43 @@ describe "Mods::Record" do
124
129
 
125
130
  context "term_value (single value result)" do
126
131
  it "should return nil if there are no such values in the MODS" do
127
- @mods_rec.term_value(:identifier).should == nil
132
+ expect(@mods_rec.term_value(:identifier)).to be_nil
128
133
  end
129
134
  it "should return nil if there are only empty values in the MODS" do
130
- @mods_rec.term_value(:genre).should == nil
135
+ expect(@mods_rec.term_value(:genre)).to be_nil
131
136
  end
132
137
  it "should return a String for a single value" do
133
- @mods_rec.term_value(:abstract).should == 'single'
138
+ expect(@mods_rec.term_value(:abstract)).to eq('single')
134
139
  end
135
140
  it "should return a String containing all values, with separator, for multiple values" do
136
- @mods_rec.term_value(:note).should == 'mult1 mult2'
141
+ expect(@mods_rec.term_value(:note)).to eq('mult1 mult2')
137
142
  end
138
143
  it "should work with an Array of messages passed as the argument" do
139
- @mods_rec.term_value([:subject, 'topic']).should == 'topic1 topic2 topic3'
144
+ expect(@mods_rec.term_value([:subject, 'topic'])).to eq('topic1 topic2 topic3')
140
145
  end
141
146
  it "should take a separator argument" do
142
- @mods_rec.term_value(:note, ' -|-').should == 'mult1 -|-mult2'
147
+ expect(@mods_rec.term_value(:note, ' -|-')).to eq('mult1 -|-mult2')
143
148
  end
144
149
  end
145
150
 
146
151
  context "term_values (multiple values)" do
147
152
  it "should return nil if there are no such values in the MODS" do
148
- @mods_rec.term_values(:identifier).should == nil
153
+ expect(@mods_rec.term_values(:identifier)).to be_nil
149
154
  end
150
155
  it "should return nil if there are only empty values in the MODS" do
151
- @mods_rec.term_values(:genre).should == nil
156
+ expect(@mods_rec.term_values(:genre)).to be_nil
152
157
  end
153
158
  it "should return an array of size one for a single value" do
154
- @mods_rec.term_values(:abstract).should == ['single']
159
+ expect(@mods_rec.term_values(:abstract)).to eq(['single'])
155
160
  end
156
161
  it "should return an array of values for multiple values" do
157
- @mods_rec.term_values(:note).should == ['mult1', 'mult2']
162
+ expect(@mods_rec.term_values(:note)).to eq(['mult1', 'mult2'])
158
163
  end
159
164
  it "should work with an Array of messages passed as the argument" do
160
- @mods_rec.term_values([:subject, 'topic']).should == ['topic1', 'topic2', 'topic3']
165
+ expect(@mods_rec.term_values([:subject, 'topic'])).to eq(['topic1', 'topic2', 'topic3'])
161
166
  end
162
167
  it "should work with a String passed as the argument" do
163
- @mods_rec.term_values('abstract').should == ['single']
168
+ expect(@mods_rec.term_values('abstract')).to eq(['single'])
164
169
  end
165
170
  it "should raise an error for an unrecognized message symbol" do
166
171
  expect { @mods_rec.term_values(:not_there) }.to raise_error(ArgumentError, "term_values called with unknown argument: :not_there")
@@ -181,21 +186,21 @@ describe "Mods::Record" do
181
186
  context "title methods" do
182
187
  it "short_titles should return an Array of Strings (multiple titles are legal in Mods)" do
183
188
  @mods_rec.from_str("<mods #{@def_ns_decl}><titleInfo><title>Jerk</title><nonSort>The</nonSort></titleInfo><titleInfo><title>Joke</title></titleInfo></mods>")
184
- @mods_rec.short_titles.should == ["The Jerk", "Joke"]
189
+ expect(@mods_rec.short_titles).to eq(["The Jerk", "Joke"])
185
190
  end
186
191
  it "full_titles should return an Array of Strings (multiple titles are legal in Mods)" do
187
192
  @mods_rec.from_str("<mods #{@def_ns_decl}><titleInfo><title>Jerk</title><nonSort>The</nonSort></titleInfo><titleInfo><title>Joke</title></titleInfo></mods>")
188
- @mods_rec.full_titles.should == ["The Jerk", "Joke"]
193
+ expect(@mods_rec.full_titles).to eq(["The Jerk", "Joke"])
189
194
  end
190
195
  it "sort_title should return a String (sortable fields are single valued)" do
191
196
  @mods_rec.from_str("<mods #{@def_ns_decl}><titleInfo><title>Jerk</title><subTitle>A Tale of Tourettes</subTitle><nonSort>The</nonSort></titleInfo></mods>")
192
- @mods_rec.sort_title.should == "Jerk A Tale of Tourettes"
197
+ expect(@mods_rec.sort_title).to eq("Jerk A Tale of Tourettes")
193
198
  end
194
199
  it "alternative_titles should return an Array of Strings (multiple alternative titles when there are multiple titleInfo elements)" do
195
200
  @mods_rec.from_str("<mods #{@def_ns_decl}><titleInfo type='alternative'><title>1</title></titleInfo><titleInfo type='alternative'><title>2</title></titleInfo></mods>")
196
- @mods_rec.alternative_titles.should == ['1', '2']
201
+ expect(@mods_rec.alternative_titles).to eq(['1', '2'])
197
202
  @mods_rec.from_str("<mods #{@def_ns_decl}><titleInfo type='alternative'><title>1</title><title>2</title></titleInfo></mods>")
198
- @mods_rec.alternative_titles.should == ['12']
203
+ expect(@mods_rec.alternative_titles).to eq(['12'])
199
204
  end
200
205
  end
201
206
 
@@ -215,17 +220,17 @@ describe "Mods::Record" do
215
220
  <namePart type="termsOfAddress">Mr.</namePart>
216
221
  <namePart type="date">date</namePart></name></mods>'
217
222
  @family_only = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="family">Family</namePart></name></mods>'
218
- @given_only = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="given">Given</namePart></name></mods>'
223
+ @given_only = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="given">Given</namePart></name></mods>'
219
224
  end
220
225
 
221
226
  it "should return an Array of Strings" do
222
227
  @mods_rec.from_str(@mods_w_pers_name)
223
- @mods_rec.personal_names.should == [@pers_name]
228
+ expect(@mods_rec.personal_names).to eq([@pers_name])
224
229
  end
225
230
 
226
231
  it "should not include the role text" do
227
232
  @mods_rec.from_str(@mods_w_pers_name_role)
228
- @mods_rec.personal_names.first.should_not match(@pers_role)
233
+ expect(@mods_rec.personal_names.first).not_to match(@pers_role)
229
234
  end
230
235
 
231
236
  it "should prefer displayForm over namePart pieces" do
@@ -233,38 +238,38 @@ describe "Mods::Record" do
233
238
  <namePart type="family">Borges</namePart>
234
239
  <displayForm>display form</displayForm></name></mods>'
235
240
  @mods_rec.from_str(display_form_and_name_parts)
236
- @mods_rec.personal_names.should include("display form")
241
+ expect(@mods_rec.personal_names).to include("display form")
237
242
  end
238
243
 
239
244
  it "should put the family namePart first" do
240
245
  @mods_rec.from_str(@given_family)
241
- @mods_rec.personal_names.first.should match(/^Borges/)
246
+ expect(@mods_rec.personal_names.first).to match(/^Borges/)
242
247
  @mods_rec.from_str(@given_family_date)
243
- @mods_rec.personal_names.first.should match(/^Beeblebrox/)
248
+ expect(@mods_rec.personal_names.first).to match(/^Beeblebrox/)
244
249
  end
245
250
  it "should not include date" do
246
251
  @mods_rec.from_str(@given_family_date)
247
- @mods_rec.personal_names.first.should_not match(/19/)
252
+ expect(@mods_rec.personal_names.first).not_to match(/19/)
248
253
  @mods_rec.from_str(@all_name_parts)
249
- @mods_rec.personal_names.first.should_not match('date')
254
+ expect(@mods_rec.personal_names.first).not_to match('date')
250
255
  end
251
256
  it "should include a comma when there is both a family and a given name" do
252
257
  @mods_rec.from_str(@all_name_parts)
253
- @mods_rec.personal_names.should include("Family, Given Mr.")
258
+ expect(@mods_rec.personal_names).to include("Family, Given Mr.")
254
259
  end
255
260
  it "should include multiple words in a namePart" do
256
261
  @mods_rec.from_str(@given_family)
257
- @mods_rec.personal_names.should include("Borges, Jorge Luis")
262
+ expect(@mods_rec.personal_names).to include("Borges, Jorge Luis")
258
263
  end
259
264
  it "should not include a comma when there is only a family or given name" do
260
265
  [@family_only, @given_only].each { |mods_str|
261
266
  @mods_rec.from_str(mods_str)
262
- @mods_rec.personal_names.first.should_not match(/,/)
267
+ expect(@mods_rec.personal_names.first).not_to match(/,/)
263
268
  }
264
269
  end
265
270
  it "should include terms of address" do
266
271
  @mods_rec.from_str(@all_name_parts)
267
- @mods_rec.personal_names.first.should match(/Mr./)
272
+ expect(@mods_rec.personal_names.first).to match(/Mr./)
268
273
  end
269
274
  end # personal_names
270
275
 
@@ -282,17 +287,17 @@ describe "Mods::Record" do
282
287
  end
283
288
  it "should return an Array of Strings" do
284
289
  @mods_rec.from_str(@given_family_date)
285
- @mods_rec.personal_names_w_dates.should be_an_instance_of(Array)
290
+ expect(@mods_rec.personal_names_w_dates).to be_an_instance_of(Array)
286
291
  end
287
292
  it "should include the date when it is available" do
288
293
  @mods_rec.from_str(@given_family_date)
289
- @mods_rec.personal_names_w_dates.first.should match(/, 1912-2362$/)
294
+ expect(@mods_rec.personal_names_w_dates.first).to match(/, 1912-2362$/)
290
295
  @mods_rec.from_str(@all_name_parts)
291
- @mods_rec.personal_names_w_dates.first.should match(/, date$/)
296
+ expect(@mods_rec.personal_names_w_dates.first).to match(/, date$/)
292
297
  end
293
298
  it "should be just the personal_name if no date is available" do
294
299
  @mods_rec.from_str(@given_family)
295
- @mods_rec.personal_names_w_dates.first.should == 'Borges, Jorge Luis'
300
+ expect(@mods_rec.personal_names_w_dates.first).to eq('Borges, Jorge Luis')
296
301
  end
297
302
  end
298
303
 
@@ -302,48 +307,48 @@ describe "Mods::Record" do
302
307
  end
303
308
  it "should return an Array of Strings" do
304
309
  @mods_rec.from_str("<mods #{@def_ns_decl}><name type='corporate'><namePart>#{@corp_name}</namePart></name></mods>")
305
- @mods_rec.corporate_names.should == [@corp_name]
310
+ expect(@mods_rec.corporate_names).to eq([@corp_name])
306
311
  end
307
312
  it "should not include the role text" do
308
313
  corp_role = 'lithographer'
309
314
  mods_w_corp_name_role = "<mods #{@def_ns_decl}><name type='corporate'><namePart>#{@corp_name}</namePart>
310
315
  <role><roleTerm type='text'>#{corp_role}</roleTerm></role></name></mods>"
311
316
  @mods_rec.from_str(mods_w_corp_name_role)
312
- @mods_rec.corporate_names.first.should_not match(corp_role)
317
+ expect(@mods_rec.corporate_names.first).not_to match(corp_role)
313
318
  end
314
319
 
315
320
  it "should prefer displayForm over namePart pieces" do
316
321
  display_form_and_name_parts = "<mods #{@def_ns_decl}><name type='corporate'><namePart>Food, Inc.</namePart>
317
322
  <displayForm>display form</displayForm></name></mods>"
318
323
  @mods_rec.from_str(display_form_and_name_parts)
319
- @mods_rec.corporate_names.should include("display form")
324
+ expect(@mods_rec.corporate_names).to include("display form")
320
325
  end
321
326
  end # corporate_names
322
327
 
323
328
  context "languages" do
324
329
  before(:all) do
325
- @simple = "<mods #{@def_ns_decl}><language>Greek</language></mods>"
330
+ @simple = "<mods #{@def_ns_decl}><language>Greek</language></mods>"
326
331
  @iso639_2b_code = "<mods #{@def_ns_decl}><language><languageTerm authority='iso639-2b' type='code'>fre</languageTerm></language></mods>"
327
332
  @iso639_2b_text = "<mods #{@def_ns_decl}><language><languageTerm authority='iso639-2b' type='text'>English</languageTerm></language></mods>"
328
- @mult_codes = "<mods #{@def_ns_decl}><language><languageTerm authority='iso639-2b' type='code'>per ara, dut</languageTerm></language></mods>"
333
+ @mult_codes = "<mods #{@def_ns_decl}><language><languageTerm authority='iso639-2b' type='code'>per ara, dut</languageTerm></language></mods>"
329
334
  end
330
335
  it "should translate iso639-2b codes to English" do
331
336
  @mods_rec.from_str(@iso639_2b_code)
332
- @mods_rec.languages.should == ["French"]
337
+ expect(@mods_rec.languages).to eq(["French"])
333
338
  end
334
339
  it "should pass thru language values that are already text (not code)" do
335
340
  @mods_rec.from_str(@iso639_2b_text)
336
- @mods_rec.languages.should == ["English"]
341
+ expect(@mods_rec.languages).to eq(["English"])
337
342
  end
338
343
  it "should keep values that are not inside <languageTerm> elements" do
339
344
  @mods_rec.from_str(@simple)
340
- @mods_rec.languages.should == ["Greek"]
345
+ expect(@mods_rec.languages).to eq(["Greek"])
341
346
  end
342
347
  it "should create a separate value for each language in a comma, space, or | separated list " do
343
348
  @mods_rec.from_str(@mult_codes)
344
- @mods_rec.languages.should include("Arabic")
345
- @mods_rec.languages.should include("Persian")
346
- @mods_rec.languages.should include("Dutch; Flemish")
349
+ expect(@mods_rec.languages).to include("Arabic")
350
+ expect(@mods_rec.languages).to include("Persian")
351
+ expect(@mods_rec.languages).to include("Dutch; Flemish")
347
352
  end
348
353
  end
349
354
  end # convenience methods for tricky bits of terminology
@@ -59,98 +59,98 @@ describe "Mods <relatedItem> Element" do
59
59
  end
60
60
 
61
61
  it ".relatedItem should be a NodeSet" do
62
- [@rel_it1, @rel_it_mult, @rel_it2, @coll_ex].each { |ri| ri.should be_an_instance_of(Nokogiri::XML::NodeSet) }
62
+ [@rel_it1, @rel_it_mult, @rel_it2, @coll_ex].each { |ri| expect(ri).to be_an_instance_of(Nokogiri::XML::NodeSet) }
63
63
  end
64
64
  it ".relatedItem should have as many members as there are <recordInfo> elements in the xml" do
65
- [@rel_it1, @rel_it2, @coll_ex].each { |ri| ri.size.should == 1 }
66
- @rel_it_mult.size.should == 2
65
+ [@rel_it1, @rel_it2, @coll_ex].each { |ri| expect(ri.size).to eq(1) }
66
+ expect(@rel_it_mult.size).to eq(2)
67
67
  end
68
68
  it "relatedItem.type_at should match type attribute" do
69
- [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| ri.type_at.should == ['host'] }
70
- @rel_it2.type_at.should == ['constituent']
69
+ [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| expect(ri.type_at).to eq(['host']) }
70
+ expect(@rel_it2.type_at).to eq(['constituent'])
71
71
  end
72
72
  it "relatedItem.id_at should match ID attribute" do
73
- @rel_it2.id_at.should == ['MODSMD_ARTICLE1']
74
- [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| ri.id_at.size.should == 0 }
73
+ expect(@rel_it2.id_at).to eq(['MODSMD_ARTICLE1'])
74
+ [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| expect(ri.id_at.size).to eq(0) }
75
75
  end
76
76
  it "relatedItem.displayLabel should match displayLabel attribute" do
77
- @rel_it1.displayLabel.should == ['Bibliography']
78
- @rel_it_mult.displayLabel.should == ['From:']
79
- [@rel_it2, @coll_ex].each { |ri| ri.displayLabel.size.should == 0 }
77
+ expect(@rel_it1.displayLabel).to eq(['Bibliography'])
78
+ expect(@rel_it_mult.displayLabel).to eq(['From:'])
79
+ [@rel_it2, @coll_ex].each { |ri| expect(ri.displayLabel.size).to eq(0) }
80
80
  end
81
81
 
82
82
  context "<genre> child element" do
83
83
  it "relatedItem.genre should match <relatedItem><genre>" do
84
- @rel_it2.genre.map { |ri| ri.text }.should == ['article']
84
+ expect(@rel_it2.genre.map { |ri| ri.text }).to eq(['article'])
85
85
  end
86
86
  end # <genre> child element
87
87
 
88
88
  context "<identifier> child element" do
89
89
  it "relatedItem.identifier.type_at should match <relatedItem><identifier type=''> attribute" do
90
- @rel_it_mult.identifier.type_at.should == ['local']
90
+ expect(@rel_it_mult.identifier.type_at).to eq(['local'])
91
91
  end
92
92
  it "relatedItem.identifier should match <relatedItem><identifier>" do
93
- @rel_it_mult.identifier.map { |n| n.text }.should == ['(AuCNL)1669726']
93
+ expect(@rel_it_mult.identifier.map { |n| n.text }).to eq(['(AuCNL)1669726'])
94
94
  end
95
95
  end # <identifier> child element
96
96
 
97
97
  context "<name> child element" do
98
98
  it "relatedItem.personal_name.namePart should match <relatedItem><name type='personal'><namePart>" do
99
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.size.should == 2
100
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should include('Bowen, Emanuel,')
101
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should include('d. 1767')
102
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should_not include('Bowen, Emanuel, d. 1767.')
99
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }.size).to eq(2)
100
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).to include('Bowen, Emanuel,')
101
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).to include('d. 1767')
102
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).not_to include('Bowen, Emanuel, d. 1767.')
103
103
  end
104
104
  it "relatedItem.personal_name.date should match <relatedItem><name type='personal'><namePart type='date'>" do
105
- @rel_it_mult.personal_name.date.map { |n| n.text }.should == ['d. 1767']
105
+ expect(@rel_it_mult.personal_name.date.map { |n| n.text }).to eq(['d. 1767'])
106
106
  end
107
107
  it "relatedItem.name_el.namePart should match <relatedItem><name><namePart>" do
108
- @rel_it_mult.name_el.namePart.map { |n| n.text }.size.should == 3
109
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('Bowen, Emanuel,')
110
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('d. 1767')
111
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('Bowen, Emanuel, d. 1767.')
108
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }.size).to eq(3)
109
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('Bowen, Emanuel,')
110
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('d. 1767')
111
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('Bowen, Emanuel, d. 1767.')
112
112
  end
113
113
  end # <name> child element
114
114
 
115
115
  context "<part> child element" do
116
116
  it "relatedItem.part.type_at should match <relatedItem><part type=''> attribute" do
117
- @rel_it2.part.type_at.should == ['paragraph', 'paragraph', 'paragraph']
117
+ expect(@rel_it2.part.type_at).to eq(['paragraph', 'paragraph', 'paragraph'])
118
118
  end
119
119
  it "relatedItem.part.id_at should match <relatedItem><part ID=''> attribute" do
120
- @rel_it2.part.id_at.size.should == 3
121
- @rel_it2.part.id_at.should include('DIVL15')
122
- @rel_it2.part.id_at.should include('DIVL17')
123
- @rel_it2.part.id_at.should include('DIVL19')
120
+ expect(@rel_it2.part.id_at.size).to eq(3)
121
+ expect(@rel_it2.part.id_at).to include('DIVL15')
122
+ expect(@rel_it2.part.id_at).to include('DIVL17')
123
+ expect(@rel_it2.part.id_at).to include('DIVL19')
124
124
  end
125
125
  it "relatedItem.part.order should match <relatedItem><part order=''> attribute" do
126
- @rel_it2.part.order.size.should == 3
127
- @rel_it2.part.order.should include('1')
128
- @rel_it2.part.order.should include('2')
129
- @rel_it2.part.order.should include('3')
126
+ expect(@rel_it2.part.order.size).to eq(3)
127
+ expect(@rel_it2.part.order).to include('1')
128
+ expect(@rel_it2.part.order).to include('2')
129
+ expect(@rel_it2.part.order).to include('3')
130
130
  end
131
131
  end # <part> child element
132
132
 
133
133
  context "<recordInfo> child element" do
134
134
  it "relatedItem.recordInfo.recordIdentifier.source should match <relatedItem><recordInfo><recordIdentifier source> attribute" do
135
- @rel_it1.recordInfo.recordIdentifier.source.should == ['Gallica ARK']
135
+ expect(@rel_it1.recordInfo.recordIdentifier.source).to eq(['Gallica ARK'])
136
136
  end
137
137
  end # <recordInfo> child element
138
138
 
139
139
  context "<titleInfo> child element" do
140
140
  it "relatedItem.titleInfo.title should access <relatedItem><titleInfo><title>" do
141
- @rel_it1.titleInfo.title.map { |n| n.text }.should == ['']
142
- @rel_it_mult.titleInfo.title.map { |n| n.text }.should == ['Complete atlas, or, Distinct view of the known world', 'Complete atlas, or, Distinct view of the known world']
143
- @rel_it2.titleInfo.title.map { |n| n.text }.should == ['Nuppineula.']
144
- @coll_ex.titleInfo.title.map { |n| n.text }.should == ['The Collier Collection of the Revs Institute for Automotive Research']
141
+ expect(@rel_it1.titleInfo.title.map { |n| n.text }).to eq([''])
142
+ expect(@rel_it_mult.titleInfo.title.map { |n| n.text }).to eq(['Complete atlas, or, Distinct view of the known world', 'Complete atlas, or, Distinct view of the known world'])
143
+ expect(@rel_it2.titleInfo.title.map { |n| n.text }).to eq(['Nuppineula.'])
144
+ expect(@coll_ex.titleInfo.title.map { |n| n.text }).to eq(['The Collier Collection of the Revs Institute for Automotive Research'])
145
145
  end
146
146
  end # <titleInfo> child element
147
147
 
148
148
  context "<typeOfResource> child element" do
149
149
  it "relatedItem.typeOfResource should access <relatedItem><typeOfResource>" do
150
- @rel_it1.typeOfResource.map { |n| n.text }.should == ['text']
150
+ expect(@rel_it1.typeOfResource.map { |n| n.text }).to eq(['text'])
151
151
  end
152
152
  it "relatedItem.typeOfResource.collection should access <relatedItem><typeOfResource collection='yes'> attribute" do
153
- @coll_ex.typeOfResource.collection.should == ['yes']
153
+ expect(@coll_ex.typeOfResource.collection).to eq(['yes'])
154
154
  end
155
155
  end # <typeOfResource> child element
156
156
 
@@ -203,98 +203,98 @@ describe "Mods <relatedItem> Element" do
203
203
  end
204
204
 
205
205
  it ".relatedItem should be a NodeSet" do
206
- [@rel_it1, @rel_it_mult, @rel_it2, @coll_ex].each { |ri| ri.should be_an_instance_of(Nokogiri::XML::NodeSet) }
206
+ [@rel_it1, @rel_it_mult, @rel_it2, @coll_ex].each { |ri| expect(ri).to be_an_instance_of(Nokogiri::XML::NodeSet) }
207
207
  end
208
208
  it ".relatedItem should have as many members as there are <recordInfo> elements in the xml" do
209
- [@rel_it1, @rel_it2, @coll_ex].each { |ri| ri.size.should == 1 }
210
- @rel_it_mult.size.should == 2
209
+ [@rel_it1, @rel_it2, @coll_ex].each { |ri| expect(ri.size).to eq(1) }
210
+ expect(@rel_it_mult.size).to eq(2)
211
211
  end
212
212
  it "relatedItem.type_at should match type attribute" do
213
- [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| ri.type_at.should == ['host'] }
214
- @rel_it2.type_at.should == ['constituent']
213
+ [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| expect(ri.type_at).to eq(['host']) }
214
+ expect(@rel_it2.type_at).to eq(['constituent'])
215
215
  end
216
216
  it "relatedItem.id_at should match ID attribute" do
217
- @rel_it2.id_at.should == ['MODSMD_ARTICLE1']
218
- [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| ri.id_at.size.should == 0 }
217
+ expect(@rel_it2.id_at).to eq(['MODSMD_ARTICLE1'])
218
+ [@rel_it1, @rel_it_mult, @coll_ex].each { |ri| expect(ri.id_at.size).to eq(0) }
219
219
  end
220
220
  it "relatedItem.displayLabel should match displayLabel attribute" do
221
- @rel_it1.displayLabel.should == ['Bibliography']
222
- @rel_it_mult.displayLabel.should == ['From:']
223
- [@rel_it2, @coll_ex].each { |ri| ri.displayLabel.size.should == 0 }
221
+ expect(@rel_it1.displayLabel).to eq(['Bibliography'])
222
+ expect(@rel_it_mult.displayLabel).to eq(['From:'])
223
+ [@rel_it2, @coll_ex].each { |ri| expect(ri.displayLabel.size).to eq(0) }
224
224
  end
225
225
 
226
226
  context "<genre> child element" do
227
227
  it "relatedItem.genre should match <relatedItem><genre>" do
228
- @rel_it2.genre.map { |ri| ri.text }.should == ['article']
228
+ expect(@rel_it2.genre.map { |ri| ri.text }).to eq(['article'])
229
229
  end
230
230
  end # <genre> child element
231
231
 
232
232
  context "<identifier> child element" do
233
233
  it "relatedItem.identifier.type_at should match <relatedItem><identifier type=''> attribute" do
234
- @rel_it_mult.identifier.type_at.should == ['local']
234
+ expect(@rel_it_mult.identifier.type_at).to eq(['local'])
235
235
  end
236
236
  it "relatedItem.identifier should match <relatedItem><identifier>" do
237
- @rel_it_mult.identifier.map { |n| n.text }.should == ['(AuCNL)1669726']
237
+ expect(@rel_it_mult.identifier.map { |n| n.text }).to eq(['(AuCNL)1669726'])
238
238
  end
239
239
  end # <identifier> child element
240
240
 
241
241
  context "<name> child element" do
242
242
  it "relatedItem.personal_name.namePart should match <relatedItem><name type='personal'><namePart>" do
243
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.size.should == 2
244
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should include('Bowen, Emanuel,')
245
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should include('d. 1767')
246
- @rel_it_mult.personal_name.namePart.map { |n| n.text }.should_not include('Bowen, Emanuel, d. 1767.')
243
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }.size).to eq(2)
244
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).to include('Bowen, Emanuel,')
245
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).to include('d. 1767')
246
+ expect(@rel_it_mult.personal_name.namePart.map { |n| n.text }).not_to include('Bowen, Emanuel, d. 1767.')
247
247
  end
248
248
  it "relatedItem.personal_name.date should match <relatedItem><name type='personal'><namePart type='date'>" do
249
- @rel_it_mult.personal_name.date.map { |n| n.text }.should == ['d. 1767']
249
+ expect(@rel_it_mult.personal_name.date.map { |n| n.text }).to eq(['d. 1767'])
250
250
  end
251
251
  it "relatedItem.name_el.namePart should match <relatedItem><name><namePart>" do
252
- @rel_it_mult.name_el.namePart.map { |n| n.text }.size.should == 3
253
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('Bowen, Emanuel,')
254
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('d. 1767')
255
- @rel_it_mult.name_el.namePart.map { |n| n.text }.should include('Bowen, Emanuel, d. 1767.')
252
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }.size).to eq(3)
253
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('Bowen, Emanuel,')
254
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('d. 1767')
255
+ expect(@rel_it_mult.name_el.namePart.map { |n| n.text }).to include('Bowen, Emanuel, d. 1767.')
256
256
  end
257
257
  end # <name> child element
258
258
 
259
259
  context "<part> child element" do
260
260
  it "relatedItem.part.type_at should match <relatedItem><part type=''> attribute" do
261
- @rel_it2.part.type_at.should == ['paragraph', 'paragraph', 'paragraph']
261
+ expect(@rel_it2.part.type_at).to eq(['paragraph', 'paragraph', 'paragraph'])
262
262
  end
263
263
  it "relatedItem.part.id_at should match <relatedItem><part ID=''> attribute" do
264
- @rel_it2.part.id_at.size.should == 3
265
- @rel_it2.part.id_at.should include('DIVL15')
266
- @rel_it2.part.id_at.should include('DIVL17')
267
- @rel_it2.part.id_at.should include('DIVL19')
264
+ expect(@rel_it2.part.id_at.size).to eq(3)
265
+ expect(@rel_it2.part.id_at).to include('DIVL15')
266
+ expect(@rel_it2.part.id_at).to include('DIVL17')
267
+ expect(@rel_it2.part.id_at).to include('DIVL19')
268
268
  end
269
269
  it "relatedItem.part.order should match <relatedItem><part order=''> attribute" do
270
- @rel_it2.part.order.size.should == 3
271
- @rel_it2.part.order.should include('1')
272
- @rel_it2.part.order.should include('2')
273
- @rel_it2.part.order.should include('3')
270
+ expect(@rel_it2.part.order.size).to eq(3)
271
+ expect(@rel_it2.part.order).to include('1')
272
+ expect(@rel_it2.part.order).to include('2')
273
+ expect(@rel_it2.part.order).to include('3')
274
274
  end
275
275
  end # <part> child element
276
276
 
277
277
  context "<recordInfo> child element" do
278
278
  it "relatedItem.recordInfo.recordIdentifier.source should match <relatedItem><recordInfo><recordIdentifier source> attribute" do
279
- @rel_it1.recordInfo.recordIdentifier.source.should == ['Gallica ARK']
279
+ expect(@rel_it1.recordInfo.recordIdentifier.source).to eq(['Gallica ARK'])
280
280
  end
281
281
  end # <recordInfo> child element
282
282
 
283
283
  context "<titleInfo> child element" do
284
284
  it "relatedItem.titleInfo.title should access <relatedItem><titleInfo><title>" do
285
- @rel_it1.titleInfo.title.map { |n| n.text }.should == ['']
286
- @rel_it_mult.titleInfo.title.map { |n| n.text }.should == ['Complete atlas, or, Distinct view of the known world', 'Complete atlas, or, Distinct view of the known world']
287
- @rel_it2.titleInfo.title.map { |n| n.text }.should == ['Nuppineula.']
288
- @coll_ex.titleInfo.title.map { |n| n.text }.should == ['The Collier Collection of the Revs Institute for Automotive Research']
285
+ expect(@rel_it1.titleInfo.title.map { |n| n.text }).to eq([''])
286
+ expect(@rel_it_mult.titleInfo.title.map { |n| n.text }).to eq(['Complete atlas, or, Distinct view of the known world', 'Complete atlas, or, Distinct view of the known world'])
287
+ expect(@rel_it2.titleInfo.title.map { |n| n.text }).to eq(['Nuppineula.'])
288
+ expect(@coll_ex.titleInfo.title.map { |n| n.text }).to eq(['The Collier Collection of the Revs Institute for Automotive Research'])
289
289
  end
290
290
  end # <titleInfo> child element
291
291
 
292
292
  context "<typeOfResource> child element" do
293
293
  it "relatedItem.typeOfResource should access <relatedItem><typeOfResource>" do
294
- @rel_it1.typeOfResource.map { |n| n.text }.should == ['text']
294
+ expect(@rel_it1.typeOfResource.map { |n| n.text }).to eq(['text'])
295
295
  end
296
296
  it "relatedItem.typeOfResource.collection should access <relatedItem><typeOfResource collection='yes'> attribute" do
297
- @coll_ex.typeOfResource.collection.should == ['yes']
297
+ expect(@coll_ex.typeOfResource.collection).to eq(['yes'])
298
298
  end
299
299
  end # <typeOfResource> child element
300
300