mods_display 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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