mods_display 0.3.3 → 0.3.4

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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +16 -0
  3. data/.rubocop_todo.yml +60 -0
  4. data/.travis.yml +2 -2
  5. data/Rakefile +10 -2
  6. data/lib/mods_display.rb +42 -42
  7. data/lib/mods_display/configuration.rb +69 -67
  8. data/lib/mods_display/configuration/access_condition.rb +17 -13
  9. data/lib/mods_display/configuration/base.rb +27 -24
  10. data/lib/mods_display/configuration/format.rb +8 -4
  11. data/lib/mods_display/configuration/genre.rb +8 -4
  12. data/lib/mods_display/configuration/imprint.rb +12 -7
  13. data/lib/mods_display/configuration/name.rb +8 -4
  14. data/lib/mods_display/configuration/note.rb +8 -4
  15. data/lib/mods_display/configuration/related_item.rb +8 -4
  16. data/lib/mods_display/configuration/subject.rb +11 -9
  17. data/lib/mods_display/configuration/title.rb +8 -4
  18. data/lib/mods_display/controller_extension.rb +24 -24
  19. data/lib/mods_display/country_codes.rb +385 -384
  20. data/lib/mods_display/fields/abstract.rb +7 -6
  21. data/lib/mods_display/fields/access_condition.rb +55 -55
  22. data/lib/mods_display/fields/audience.rb +7 -6
  23. data/lib/mods_display/fields/cartographics.rb +15 -14
  24. data/lib/mods_display/fields/collection.rb +32 -17
  25. data/lib/mods_display/fields/contact.rb +15 -13
  26. data/lib/mods_display/fields/contents.rb +7 -6
  27. data/lib/mods_display/fields/description.rb +21 -21
  28. data/lib/mods_display/fields/field.rb +164 -109
  29. data/lib/mods_display/fields/format.rb +36 -33
  30. data/lib/mods_display/fields/genre.rb +12 -11
  31. data/lib/mods_display/fields/identifier.rb +34 -34
  32. data/lib/mods_display/fields/imprint.rb +258 -214
  33. data/lib/mods_display/fields/language.rb +18 -16
  34. data/lib/mods_display/fields/location.rb +27 -26
  35. data/lib/mods_display/fields/name.rb +113 -118
  36. data/lib/mods_display/fields/note.rb +33 -34
  37. data/lib/mods_display/fields/related_item.rb +64 -66
  38. data/lib/mods_display/fields/resource_type.rb +13 -11
  39. data/lib/mods_display/fields/sub_title.rb +6 -4
  40. data/lib/mods_display/fields/subject.rb +92 -90
  41. data/lib/mods_display/fields/title.rb +54 -49
  42. data/lib/mods_display/fields/values.rb +7 -8
  43. data/lib/mods_display/html.rb +117 -96
  44. data/lib/mods_display/model_extension.rb +17 -16
  45. data/lib/mods_display/relator_codes.rb +269 -267
  46. data/lib/mods_display/version.rb +1 -1
  47. data/mods_display.gemspec +13 -12
  48. data/spec/configuration/access_condition_spec.rb +5 -5
  49. data/spec/configuration/base_spec.rb +24 -24
  50. data/spec/fields/abstract_spec.rb +24 -14
  51. data/spec/fields/access_condition_spec.rb +80 -55
  52. data/spec/fields/audience_spec.rb +15 -12
  53. data/spec/fields/cartographics_spec.rb +17 -18
  54. data/spec/fields/collection_spec.rb +65 -19
  55. data/spec/fields/contact_spec.rb +11 -9
  56. data/spec/fields/contents_spec.rb +15 -12
  57. data/spec/fields/description_spec.rb +40 -22
  58. data/spec/fields/format_spec.rb +28 -18
  59. data/spec/fields/genre_spec.rb +18 -16
  60. data/spec/fields/identifier_spec.rb +46 -34
  61. data/spec/fields/imprint_spec.rb +151 -125
  62. data/spec/fields/language_spec.rb +36 -20
  63. data/spec/fields/location_spec.rb +43 -27
  64. data/spec/fields/name_spec.rb +92 -92
  65. data/spec/fields/note_spec.rb +53 -40
  66. data/spec/fields/related_item_spec.rb +42 -40
  67. data/spec/fields/resource_type_spec.rb +20 -14
  68. data/spec/fields/sub_title_spec.rb +11 -9
  69. data/spec/fields/subject_spec.rb +61 -56
  70. data/spec/fields/title_spec.rb +53 -40
  71. data/spec/fixtures/access_condition_fixtures.rb +50 -0
  72. data/spec/fixtures/cartographics_fixtures.rb +1 -1
  73. data/spec/fixtures/imprint_fixtures.rb +49 -1
  74. data/spec/fixtures/name_fixtures.rb +195 -2
  75. data/spec/fixtures/related_item_fixtures.rb +107 -0
  76. data/spec/fixtures/subjects_fixtures.rb +15 -2
  77. data/spec/fixtures/title_fixtures.rb +101 -0
  78. data/spec/integration/configuration_spec.rb +23 -20
  79. data/spec/integration/html_spec.rb +40 -29
  80. data/spec/integration/installation_spec.rb +14 -14
  81. data/spec/spec_helper.rb +5 -8
  82. metadata +25 -3
@@ -1,63 +1,65 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  def mods_display_item(mods_record)
4
- ModsDisplay::RelatedItem.new(mods_record, ModsDisplay::Configuration::Base.new, double("controller"))
4
+ ModsDisplay::RelatedItem.new(mods_record, ModsDisplay::Configuration::Base.new, double('controller'))
5
5
  end
6
6
 
7
7
  describe ModsDisplay::RelatedItem do
8
+ include RelatedItemFixtures
9
+
8
10
  before(:all) do
9
- @item = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo>A Related Item</titleInfo></relatedItem></mods>", false).related_item
10
- @linked_item = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo>A Related Item</titleInfo><location><url>http://library.stanford.edu/</url></location></relatedItem></mods>", false).related_item
11
- @collection = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo>This is a Collection</titleInfo><typeOfResource collection='yes' /></relatedItem></mods>", false).related_item
12
- @display_label = Stanford::Mods::Record.new.from_str("<mods><relatedItem displayLabel='Special Item'><titleInfo>A Related Item</titleInfo></relatedItem></mods>", false).related_item
13
- @location = Stanford::Mods::Record.new.from_str("<mods><relatedItem><location>The Location</location></relatedItem></mods>", false).related_item
14
- @reference = Stanford::Mods::Record.new.from_str("<mods><relatedItem type='isReferencedBy'><titleInfo>The title</titleInfo><note>124</note><originInfo><dateOther>DATE</dateOther></originInfo></relatedItem></mods>", false).related_item
15
- @blank_item = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo><title></title></titleInfo><location><url></url></location></relatedItem></mods>", false).related_item
16
- @multi_items = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo><title>Library</title></titleInfo><location><url>http://library.stanford.edu</url></location></relatedItem><relatedItem><titleInfo><title>SDR</title></titleInfo><location><url>http://purl.stanford.edu</url></location></relatedItem></mods>", false).related_item
11
+ @item = Stanford::Mods::Record.new.from_str(basic_related_item_fixture, false).related_item
12
+ @linked_item = Stanford::Mods::Record.new.from_str(linked_related_item_fixture, false).related_item
13
+ @collection = Stanford::Mods::Record.new.from_str(related_item_collection_fixture, false).related_item
14
+ @display_label = Stanford::Mods::Record.new.from_str(related_item_display_label_fixture, false).related_item
15
+ @location = Stanford::Mods::Record.new.from_str(related_item_location_fixture, false).related_item
16
+ @reference = Stanford::Mods::Record.new.from_str(related_item_reference_fixture, false).related_item
17
+ @blank_item = Stanford::Mods::Record.new.from_str(blank_related_item_fixture, false).related_item
18
+ @multi_items = Stanford::Mods::Record.new.from_str(multi_related_item_fixture, false).related_item
17
19
  end
18
- describe "label" do
19
- it "should default to Related Item" do
20
- mods_display_item(@item).fields.first.label.should == "Related item:"
20
+ describe 'label' do
21
+ it 'should default to Related Item' do
22
+ expect(mods_display_item(@item).fields.first.label).to eq('Related item:')
21
23
  end
22
- it "should get the location label" do
23
- mods_display_item(@location).fields.first.label.should == "Location:"
24
+ it 'should get the location label' do
25
+ expect(mods_display_item(@location).fields.first.label).to eq('Location:')
24
26
  end
25
- it "should get the reference label" do
26
- mods_display_item(@reference).fields.first.label.should == "Referenced by:"
27
+ it 'should get the reference label' do
28
+ expect(mods_display_item(@reference).fields.first.label).to eq('Referenced by:')
27
29
  end
28
- it "should get the displayLabel if available" do
29
- mods_display_item(@display_label).fields.first.label.should == "Special Item:"
30
+ it 'should get the displayLabel if available' do
31
+ expect(mods_display_item(@display_label).fields.first.label).to eq('Special Item:')
30
32
  end
31
33
  end
32
- describe "fields" do
33
- it "should get a location if it is available" do
34
+ describe 'fields' do
35
+ it 'should get a location if it is available' do
34
36
  fields = mods_display_item(@item).fields
35
- fields.length.should == 1
36
- fields.first.values.should == ["A Related Item"]
37
+ expect(fields.length).to eq(1)
38
+ expect(fields.first.values).to eq(['A Related Item'])
37
39
  end
38
- it "should return a link if there is a location/url present" do
40
+ it 'should return a link if there is a location/url present' do
39
41
  fields = mods_display_item(@linked_item).fields
40
- fields.length.should == 1
41
- fields.first.values.should == ["<a href='http://library.stanford.edu/'>A Related Item</a>"]
42
+ expect(fields.length).to eq(1)
43
+ expect(fields.first.values).to eq(["<a href='http://library.stanford.edu/'>A Related Item</a>"])
42
44
  end
43
- it "should not return any fields if the described related item is a collection" do
44
- mods_display_item(@collection).fields.should == []
45
+ it 'should not return any fields if the described related item is a collection' do
46
+ expect(mods_display_item(@collection).fields).to eq([])
45
47
  end
46
- it "should not return empty links when there is no title or link" do
47
- mods_display_item(@blank_item).fields.should == []
48
+ it 'should not return empty links when there is no title or link' do
49
+ expect(mods_display_item(@blank_item).fields).to eq([])
48
50
  end
49
- it "should concat the isReferencedBy related item title with other metadata" do
51
+ it 'should concat the isReferencedBy related item title with other metadata' do
50
52
  fields = mods_display_item(@reference).fields
51
- fields.length.should == 1
52
- fields.first.values.should == ["The title DATE 124"]
53
+ expect(fields.length).to eq(1)
54
+ expect(fields.first.values).to eq(['The title DATE 124'])
53
55
  end
54
- it "should collapse labels down into the same record" do
56
+ it 'should collapse labels down into the same record' do
55
57
  fields = mods_display_item(@multi_items).fields
56
- fields.length.should == 1
57
- fields.first.label.should == "Related item:"
58
- fields.first.values.length.should == 2
59
- fields.first.values.first.should =~ /<a href=.*>Library<\/a>/ or
60
- fields.first.values.last.should =~ /<a href=.*>SDR<\/a>/
58
+ expect(fields.length).to eq(1)
59
+ expect(fields.first.label).to eq('Related item:')
60
+ expect(fields.first.values.length).to eq(2)
61
+ expect(fields.first.values.first).to(match(%r{<a href=.*>Library</a>}))
62
+ expect(fields.first.values.last).to(match(%r{<a href=.*>SDR</a>}))
61
63
  end
62
64
  end
63
- end
65
+ end
@@ -1,28 +1,34 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  def mods_display_resource_type(mods_record)
4
- ModsDisplay::ResourceType.new(mods_record, ModsDisplay::Configuration::Base.new, double("controller"))
4
+ ModsDisplay::ResourceType.new(mods_record, ModsDisplay::Configuration::Base.new, double('controller'))
5
5
  end
6
6
 
7
7
  describe ModsDisplay::ResourceType do
8
8
  before(:all) do
9
- @type = Stanford::Mods::Record.new.from_str("<mods><typeOfResource>Resource Type</typeOfResource></mods>", false).typeOfResource
10
- @downcase = Stanford::Mods::Record.new.from_str("<mods><typeOfResource>resource type</typeOfResource></mods>", false).typeOfResource
11
- @display_label = Stanford::Mods::Record.new.from_str("<mods><typeOfResource displayLabel='Special label'>Resource Type</typeOfResource></mods>", false).typeOfResource
9
+ @type = Stanford::Mods::Record.new.from_str(
10
+ '<mods><typeOfResource>Resource Type</typeOfResource></mods>', false
11
+ ).typeOfResource
12
+ @downcase = Stanford::Mods::Record.new.from_str(
13
+ '<mods><typeOfResource>resource type</typeOfResource></mods>', false
14
+ ).typeOfResource
15
+ @display_label = Stanford::Mods::Record.new.from_str(
16
+ "<mods><typeOfResource displayLabel='Special label'>Resource Type</typeOfResource></mods>", false
17
+ ).typeOfResource
12
18
  end
13
19
  it "should default to a label of 'Type of resource'" do
14
20
  fields = mods_display_resource_type(@type).fields
15
- fields.length.should == 1
16
- fields.first.label.should == "Type of resource:"
21
+ expect(fields.length).to eq(1)
22
+ expect(fields.first.label).to eq('Type of resource:')
17
23
  end
18
- it "should use the displayLabel attribute when present" do
24
+ it 'should use the displayLabel attribute when present' do
19
25
  fields = mods_display_resource_type(@display_label).fields
20
- fields.length.should == 1
21
- fields.first.label.should == "Special label:"
26
+ expect(fields.length).to eq(1)
27
+ expect(fields.first.label).to eq('Special label:')
22
28
  end
23
- it "should capitalize the first letter of the values" do
29
+ it 'should capitalize the first letter of the values' do
24
30
  fields = mods_display_resource_type(@downcase).fields
25
- fields.length.should == 1
26
- fields.first.values.should == ["Resource type"]
31
+ expect(fields.length).to eq(1)
32
+ expect(fields.first.values).to eq(['Resource type'])
27
33
  end
28
- end
34
+ end
@@ -1,18 +1,20 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  def mods_display_sub_title(mods_record)
4
- ModsDisplay::SubTitle.new(mods_record, ModsDisplay::Configuration::Base.new, double("controller"))
4
+ ModsDisplay::SubTitle.new(mods_record, ModsDisplay::Configuration::Base.new, double('controller'))
5
5
  end
6
6
 
7
7
  describe ModsDisplay::SubTitle do
8
8
  before(:all) do
9
- @title = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Main Title</title></titleInfo><titleInfo><title>Sub Title</title></titleInfo></mods>", false).title_info
9
+ @title = Stanford::Mods::Record.new.from_str(
10
+ '<mods><titleInfo><title>Main Title</title></titleInfo><titleInfo><title>Sub Title</title></titleInfo></mods>',
11
+ false
12
+ ).title_info
10
13
  end
11
- it "omit the main title and only return sub titles" do
14
+ it 'omit the main title and only return sub titles' do
12
15
  fields = mods_display_sub_title(@title).fields
13
- fields.length.should == 1
14
- fields.first.label.should == "Title:"
15
- fields.first.values.should == ["Sub Title"]
16
-
16
+ expect(fields.length).to eq(1)
17
+ expect(fields.first.label).to eq('Title:')
18
+ expect(fields.first.values).to eq(['Sub Title'])
17
19
  end
18
- end
20
+ end
@@ -1,10 +1,10 @@
1
- require "spec_helper"
2
- require "fixtures/subjects_fixtures"
1
+ require 'spec_helper'
2
+ require 'fixtures/subjects_fixtures'
3
3
  include SubjectsFixtures
4
4
 
5
5
  def mods_display_subject(mods_record)
6
6
  config = ModsDisplay::Configuration::Subject.new do
7
- link :link_method, "%value%"
7
+ link :link_method, '%value%'
8
8
  end
9
9
  ModsDisplay::Subject.new(mods_record, config, TestController.new)
10
10
  end
@@ -12,7 +12,7 @@ end
12
12
  def mods_display_hierarchical_subject(mods_record)
13
13
  config = ModsDisplay::Configuration::Subject.new do
14
14
  hierarchical_link true
15
- link :link_method, "%value%"
15
+ link :link_method, '%value%'
16
16
  end
17
17
  ModsDisplay::Subject.new(mods_record, config, TestController.new)
18
18
  end
@@ -24,86 +24,91 @@ describe ModsDisplay::Subject do
24
24
  @emdash_subject = Stanford::Mods::Record.new.from_str(emdash_subjects, false).subject
25
25
  @geo_subject = Stanford::Mods::Record.new.from_str(hierarchical_geo_subjects, false).subject
26
26
  @name_subject = Stanford::Mods::Record.new.from_str(name_subjects, false).subject
27
+ @blank_name_subject = Stanford::Mods::Record.new.from_str(blank_name_subject, false).subject
27
28
  @complex_subject = Stanford::Mods::Record.new.from_str(complex_subjects, false).subject
28
29
  @display_label = Stanford::Mods::Record.new.from_str(display_label_subjects, false).subject
29
30
  end
30
- describe "fields" do
31
- it "should split individual child elments of subject into separate parts" do
31
+ describe 'fields' do
32
+ it 'should split individual child elments of subject into separate parts' do
32
33
  fields = mods_display_subject(@subject).fields
33
- fields.length.should == 1
34
- fields.first.values.should == [["Jazz", "Japan", "History and criticism"]]
34
+ expect(fields.length).to eq(1)
35
+ expect(fields.first.values).to eq([['Jazz', 'Japan', 'History and criticism']])
35
36
  end
36
- it "should split horizontalized subjects split with an emdash into separate parts" do
37
+ it 'should split horizontalized subjects split with an emdash into separate parts' do
37
38
  fields = mods_display_subject(@emdash_subject).fields
38
- fields.length.should == 1
39
- fields.first.values.should == [["Jazz", "Japan", "History and criticism"]]
39
+ expect(fields.length).to eq(1)
40
+ expect(fields.first.values).to eq([['Jazz', 'Japan', 'History and criticism']])
40
41
  end
41
- it "should handle hierarchicalGeogaphic subjects properly" do
42
+ it 'should handle hierarchicalGeogaphic subjects properly' do
42
43
  fields = mods_display_subject(@geo_subject).fields
43
- fields.length.should == 1
44
- fields.first.values.should == [["United States", "California", "Stanford"]]
44
+ expect(fields.length).to eq(1)
45
+ expect(fields.first.values).to eq([['United States', 'California', 'Stanford']])
45
46
  end
46
- it "should handle display labels properly" do
47
+ it 'should handle display labels properly' do
47
48
  fields = mods_display_subject(@display_label).fields
48
- fields.length.should == 3
49
- fields.first.label.should == "Subject:"
50
- fields.first.values.should == [["A Subject", "Another Subject"], ["B Subject", "Another B Subject"]]
51
- fields[1].label.should == "Subject Heading:"
52
- fields[1].values.should == [["Jazz", "Japan", "History and criticism"]]
53
- fields.last.label.should == "Subject:"
54
- fields.last.values.should == [["Bay Area", "Stanford"]]
49
+ expect(fields.length).to eq(3)
50
+ expect(fields.first.label).to eq('Subject:')
51
+ expect(fields.first.values).to eq([['A Subject', 'Another Subject'], ['B Subject', 'Another B Subject']])
52
+ expect(fields[1].label).to eq('Subject Heading:')
53
+ expect(fields[1].values).to eq([['Jazz', 'Japan', 'History and criticism']])
54
+ expect(fields.last.label).to eq('Subject:')
55
+ expect(fields.last.values).to eq([['Bay Area', 'Stanford']])
55
56
  end
56
- it "should handle blank subjects properly" do
57
- mods_display_subject(@blank_subject).fields.should == []
57
+ it 'should handle blank subjects properly' do
58
+ expect(mods_display_subject(@blank_subject).fields).to eq([])
59
+ end
60
+ it 'should handle blank name subjects properly' do
61
+ expect(mods_display_subject(@blank_name_subject).fields).to eq([])
58
62
  end
59
63
  end
60
64
 
61
- describe "name subjects" do
62
- it "should handle name subjects properly" do
65
+ describe 'name subjects' do
66
+ it 'should handle name subjects properly' do
63
67
  fields = mods_display_subject(@name_subject).fields
64
- fields.length.should == 1
65
- fields.first.values.first.first.should be_a(ModsDisplay::Name::Person)
66
- fields.first.values.first.first.name.should == "John Doe"
67
- fields.first.values.first.first.roles.should == ["Depicted"]
68
+ expect(fields.length).to eq(1)
69
+ expect(fields.first.values.first.first).to be_a(ModsDisplay::Name::Person)
70
+ expect(fields.first.values.first.first.name).to eq('John Doe')
71
+ expect(fields.first.values.first.first.roles).to eq(['Depicted'])
68
72
  end
69
- it "should link the name (and not the role) correctly" do
73
+ it 'should link the name (and not the role) correctly' do
70
74
  html = mods_display_subject(@name_subject).to_html
71
- html.should match(/<a href='.*\?John Doe'>John Doe<\/a> \(Depicted\)/)
72
- html.should match(/<a href='.*\?Anonymous People'>Anonymous People<\/a>/)
75
+ expect(html).to match(%r{<a href='.*\?John Doe'>John Doe</a> \(Depicted\)})
76
+ expect(html).to match(%r{<a href='.*\?Anonymous People'>Anonymous People</a>})
73
77
  end
74
- it "should linke the name (and not the role) correctly when linking hierarchicaly" do
78
+ it 'should linke the name (and not the role) correctly when linking hierarchicaly' do
75
79
  html = mods_display_hierarchical_subject(@name_subject).to_html
76
- html.should match(/<a href='.*\?John Doe'>John Doe<\/a> \(Depicted\)/)
77
- html.should match(/<a href='.*\?John Doe Anonymous People'>Anonymous People<\/a>/)
80
+ expect(html).to match(%r{<a href='.*\?John Doe'>John Doe</a> \(Depicted\)})
81
+ expect(html).to match(%r{<a href='.*\?John Doe Anonymous People'>Anonymous People</a>})
78
82
  end
79
83
  end
80
84
 
81
- describe "to_html" do
82
- it "should link the values when requested" do
85
+ describe 'to_html' do
86
+ it 'should link the values when requested' do
83
87
  html = mods_display_subject(@subject).to_html
84
- html.should match(/<a href='http:\/\/library.stanford.edu\?Jazz'>Jazz<\/a>/)
85
- html.should match(/<a href='http:\/\/library.stanford.edu\?Japan'>Japan<\/a>/)
86
- html.should match(/<a href='http:\/\/library.stanford.edu\?History and criticism'>History and criticism<\/a>/)
88
+ expect(html).to match(%r{<a href='http://library.stanford.edu\?Jazz'>Jazz</a>})
89
+ expect(html).to match(%r{<a href='http://library.stanford.edu\?Japan'>Japan</a>})
90
+ expect(html).to match(%r{<a href='http://library.stanford.edu\?History and criticism'>History and criticism</a>})
87
91
  end
88
- it "does something" do
92
+ it 'does something' do
89
93
  html = mods_display_hierarchical_subject(@subject).to_html
90
- html.should match(/<a href='http:\/\/library.stanford.edu\?Jazz'>Jazz<\/a>/)
91
- html.should match(/<a href='http:\/\/library.stanford.edu\?Jazz Japan'>Japan<\/a>/)
92
- html.should match(/<a href='http:\/\/library.stanford.edu\?Jazz Japan History and criticism'>History and criticism<\/a>/)
94
+ expect(html).to match(%r{<a href='http://library.stanford.edu\?Jazz'>Jazz</a>})
95
+ expect(html).to match(%r{<a href='http://library.stanford.edu\?Jazz Japan'>Japan</a>})
96
+ expect(html).to match(
97
+ %r{<a href='http://library.stanford.edu\?Jazz Japan History and criticism'>History and criticism</a>}
98
+ )
93
99
  end
94
- it "should collapse fields into the same label" do
100
+ it 'should collapse fields into the same label' do
95
101
  html = mods_display_subject(@complex_subject).to_html
96
- html.scan(/<dt title='Subject'>Subject:<\/dt>/).length.should == 1
97
- html.scan(/<dd>/).length.should == 1
98
- html.scan(/<br\/>/).length.should == 1
99
- html.scan(/ &gt; /).length.should == 3
102
+ expect(html.scan(%r{<dt title='Subject'>Subject:</dt>}).length).to eq(1)
103
+ expect(html.scan(/<dd>/).length).to eq(1)
104
+ expect(html.scan(%r{<br/>}).length).to eq(1)
105
+ expect(html.scan(/ &gt; /).length).to eq(3)
100
106
  end
101
- it "should handle complex display labels" do
107
+ it 'should handle complex display labels' do
102
108
  html = mods_display_subject(@display_label).to_html
103
- html.scan(/<dt title='Subject'>Subject:<\/dt>/).length.should eq 2
104
- html.scan(/<dt title='Subject Heading'>Subject Heading:<\/dt>/).length.should eq 1
105
- html.scan(/<dd>/).length.should == 3
109
+ expect(html.scan(%r{<dt title='Subject'>Subject:</dt>}).length).to eq 2
110
+ expect(html.scan(%r{<dt title='Subject Heading'>Subject Heading:</dt>}).length).to eq 1
111
+ expect(html.scan(/<dd>/).length).to eq(3)
106
112
  end
107
113
  end
108
-
109
- end
114
+ end
@@ -1,61 +1,74 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  def mods_display_title(mods_record)
4
- ModsDisplay::Title.new(mods_record, ModsDisplay::Configuration::Base.new, double("controller"))
4
+ ModsDisplay::Title.new(mods_record, ModsDisplay::Configuration::Base.new, double('controller'))
5
5
  end
6
6
 
7
7
  describe ModsDisplay::Title do
8
+ include TitleFixtures
8
9
  before(:all) do
9
- @title = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Title</title></titleInfo></mods>", false).title_info
10
- @title_parts = Stanford::Mods::Record.new.from_str("<mods><titleInfo><nonSort>The</nonSort><title>Title</title><subTitle>For</subTitle><partName>Something</partName><partNumber>Part 62</partNumber></titleInfo></mods>", false).title_info
11
- @reverse_title_parts = Stanford::Mods::Record.new.from_str("<mods><titleInfo><nonSort>The</nonSort><title>Title</title><subTitle>For</subTitle><partNumber>Part 62</partNumber><partName>Something</partName></titleInfo></mods>", false).title_info
12
- @display_label = Stanford::Mods::Record.new.from_str("<mods><titleInfo displayLabel='MyTitle'><title>Title</title></titleInfo></mods>", false).title_info
13
- @display_form = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Title</title><displayForm>The Title of This Item</displayForm></titleInfo></mods>", false).title_info
14
- @multi_label = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Main Title</title></titleInfo><titleInfo type='alternative'><title>Alt Title</title></titleInfo><titleInfo type='uniform'><title>Uniform Title</title></titleInfo><titleInfo type='alternative'><title>Another Alt Title</title></titleInfo><titleInfo type='alternative'><title>Yet Another Alt Title</title></titleInfo></mods>", false).title_info
15
- @alt_title = Stanford::Mods::Record.new.from_str("<mods><titleInfo type='alternative'><title>Title</title></titleInfo></mods>", false).title_info
10
+ @title = Stanford::Mods::Record.new.from_str(simple_title_fixture, false).title_info
11
+ @title_parts = Stanford::Mods::Record.new.from_str(title_parts_fixture, false).title_info
12
+ @reverse_title_parts = Stanford::Mods::Record.new.from_str(reverse_title_parts_fixture, false).title_info
13
+ @display_label = Stanford::Mods::Record.new.from_str(display_label_fixture, false).title_info
14
+ @display_form = Stanford::Mods::Record.new.from_str(display_form_fixture, false).title_info
15
+ @multi_label = Stanford::Mods::Record.new.from_str(multi_label_fixture, false).title_info
16
+ @alt_title = Stanford::Mods::Record.new.from_str(alt_title_fixture, false).title_info
17
+ @title_punctuation = Stanford::Mods::Record.new.from_str(title_puncutation_fixture, false).title_info
16
18
  end
17
- describe "labels" do
18
- it "should return a default label of Title if nothing else is available" do
19
- mods_display_title(@title).fields.first.label.should == "Title:"
19
+ describe 'labels' do
20
+ it 'should return a default label of Title if nothing else is available' do
21
+ expect(mods_display_title(@title).fields.first.label).to eq('Title:')
20
22
  end
21
- it "should return an appropriate label from the type attribute" do
22
- mods_display_title(@alt_title).fields.first.label.should == "Alternative title:"
23
+ it 'should return an appropriate label from the type attribute' do
24
+ expect(mods_display_title(@alt_title).fields.first.label).to eq('Alternative title:')
23
25
  end
24
- it "should return the label held in the displayLabel attribute of the titleInfo element when available" do
25
- mods_display_title(@display_label).fields.first.label.should == "MyTitle:"
26
+ it 'should return the label held in the displayLabel attribute of the titleInfo element when available' do
27
+ expect(mods_display_title(@display_label).fields.first.label).to eq('MyTitle:')
26
28
  end
27
- it "should collapse adjacent identical labels" do
29
+ it 'should collapse adjacent identical labels' do
28
30
  fields = mods_display_title(@multi_label).fields
29
- fields.length.should == 4
30
- fields[0].label.should == "Title:"
31
- fields[1].label.should == "Alternative title:"
32
- fields[2].label.should == "Uniform title:"
33
- fields[3].label.should == "Alternative title:"
34
- fields[3].values.should == ["Another Alt Title", "Yet Another Alt Title"]
31
+ expect(fields.length).to eq(4)
32
+ expect(fields[0].label).to eq('Title:')
33
+ expect(fields[1].label).to eq('Alternative title:')
34
+ expect(fields[2].label).to eq('Uniform title:')
35
+ expect(fields[3].label).to eq('Alternative title:')
36
+ expect(fields[3].values).to eq(['Another Alt Title', 'Yet Another Alt Title'])
35
37
  end
36
38
  end
37
- describe "fields" do
38
- it "should return an array of label/value objects" do
39
+ describe 'fields' do
40
+ it 'should return an array of label/value objects' do
39
41
  values = mods_display_title(@display_label).fields
40
- values.length.should == 1
41
- values.first.should be_a ModsDisplay::Values
42
- values.first.label.should == "MyTitle:"
43
- values.first.values.should == ["Title"]
42
+ expect(values.length).to eq(1)
43
+ expect(values.first).to be_a ModsDisplay::Values
44
+ expect(values.first.label).to eq('MyTitle:')
45
+ expect(values.first.values).to eq(['Title'])
44
46
  end
45
47
  end
46
- describe "text" do
47
- it "should construct all the elements in titleInfo" do
48
- mods_display_title(@title_parts).fields.first.values.should include "The Title : For. Something. Part 62"
48
+ describe 'text' do
49
+ it 'should construct all the elements in titleInfo' do
50
+ expect(mods_display_title(@title_parts).fields.first.values).to include 'The Title : For. Something. Part 62'
49
51
  end
50
- it "should use the correct delimiter in the case that a partNumber comes before a partName" do
51
- mods_display_title(@reverse_title_parts).fields.first.values.should include "The Title : For. Part 62, Something"
52
+
53
+ it 'should use the correct delimiter in the case that a partNumber comes before a partName' do
54
+ expect(mods_display_title(@reverse_title_parts).fields.first.values).to include(
55
+ 'The Title : For. Part 62, Something'
56
+ )
57
+ end
58
+
59
+ it 'should use the displayForm when available' do
60
+ expect(mods_display_title(@display_form).fields.first.values).to include 'The Title of This Item'
52
61
  end
53
- it "should use the displayForm when available" do
54
- mods_display_title(@display_form).fields.first.values.should include "The Title of This Item"
62
+
63
+ it 'should return the basic text held in a sub element of titleInfo' do
64
+ expect(mods_display_title(@title).fields.first.values).to include 'Title'
55
65
  end
56
- it "should return the basic text held in a sub element of titleInfo" do
57
- mods_display_title(@title).fields.first.values.should include "Title"
66
+
67
+ it 'should not duplicate delimiter punctuation' do
68
+ values = mods_display_title(@title_punctuation).fields.first.values
69
+ expect(values.length).to eq 1
70
+ expect(values.first).not_to include '..'
71
+ expect(values.first).to eq 'A title that ends in punctuation. 2015'
58
72
  end
59
73
  end
60
-
61
- end
74
+ end