mods_display 0.1.3 → 0.1.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 (37) hide show
  1. data/lib/mods_display.rb +7 -1
  2. data/lib/mods_display/configuration.rb +7 -3
  3. data/lib/mods_display/configuration/access_condition.rb +17 -0
  4. data/lib/mods_display/configuration/format.rb +5 -0
  5. data/lib/mods_display/configuration/genre.rb +5 -0
  6. data/lib/mods_display/configuration/imprint.rb +8 -0
  7. data/lib/mods_display/controller_extension.rb +1 -1
  8. data/lib/mods_display/country_codes.rb +385 -0
  9. data/lib/mods_display/fields/access_condition.rb +73 -0
  10. data/lib/mods_display/fields/description.rb +1 -3
  11. data/lib/mods_display/fields/format.rb +23 -16
  12. data/lib/mods_display/fields/genre.rb +7 -1
  13. data/lib/mods_display/fields/identifier.rb +1 -0
  14. data/lib/mods_display/fields/imprint.rb +55 -6
  15. data/lib/mods_display/fields/location.rb +25 -3
  16. data/lib/mods_display/fields/name.rb +82 -13
  17. data/lib/mods_display/fields/related_item.rb +73 -14
  18. data/lib/mods_display/fields/resource_type.rb +7 -0
  19. data/lib/mods_display/html.rb +15 -9
  20. data/lib/mods_display/model_extension.rb +1 -0
  21. data/lib/mods_display/relator_codes.rb +268 -0
  22. data/lib/mods_display/version.rb +1 -1
  23. data/spec/configuration/access_condition_spec.rb +10 -0
  24. data/spec/fields/access_condition_spec.rb +91 -0
  25. data/spec/fields/description_spec.rb +9 -9
  26. data/spec/fields/format_spec.rb +10 -14
  27. data/spec/fields/genre_spec.rb +9 -1
  28. data/spec/fields/imprint_spec.rb +63 -2
  29. data/spec/fields/location_spec.rb +21 -2
  30. data/spec/fields/name_spec.rb +30 -0
  31. data/spec/fields/related_item_spec.rb +13 -0
  32. data/spec/fields/resource_type_spec.rb +6 -0
  33. data/spec/fixtures/imprint_fixtures.rb +36 -2
  34. data/spec/integration/configuration_spec.rb +14 -2
  35. metadata +15 -7
  36. data/lib/mods_display/fields/related_location.rb +0 -16
  37. data/spec/fields/related_location_spec.rb +0 -35
@@ -6,32 +6,32 @@ end
6
6
 
7
7
  describe ModsDisplay::Description do
8
8
  before(:all) do
9
- @form = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><form>Form Note</form></physicalDescription></mods>", false).physical_description
10
- @display_label = Stanford::Mods::Record.new.from_str("<mods><physicalDescription displayLabel='SpecialLabel'><form>Form Note</form></physicalDescription></mods>", false).physical_description
11
- @child_display_label = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><form displayLabel='Form Label'>Form Note</form></physicalDescription></mods>", false).physical_description
12
- @mixed = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><form>Form Note</form><extent>Extent Note</extent></physicalDescription></mods>", false).physical_description
9
+ @form = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><note>Description Note</note></physicalDescription></mods>", false).physical_description
10
+ @display_label = Stanford::Mods::Record.new.from_str("<mods><physicalDescription displayLabel='SpecialLabel'><note>Description Note</note></physicalDescription></mods>", false).physical_description
11
+ @child_display_label = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><note displayLabel='Note Label'>Description Note</note></physicalDescription></mods>", false).physical_description
12
+ @mixed = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><note>Description Note</note><digitalOrigin>Digital Origin Note</digitalOrigin></physicalDescription></mods>", false).physical_description
13
13
  end
14
14
  describe "labels" do
15
15
  it "should use the displayLabel if one is provided" do
16
16
  mods_display_description(@display_label).fields.first.label.should == "SpecialLabel"
17
17
  end
18
18
  it "should get the default label for a child element" do
19
- mods_display_description(@form).fields.first.label.should == "Form"
19
+ mods_display_description(@form).fields.first.label.should == "Note"
20
20
  end
21
21
  it "should get multiple lables for mixed content" do
22
- mods_display_description(@mixed).fields.map{|v| v.label }.should == ["Form", "Extent"]
22
+ mods_display_description(@mixed).fields.map{|v| v.label }.should == ["Note", "Digital origin"]
23
23
  end
24
24
  it "should get the display label from child elements" do
25
- mods_display_description(@child_display_label).fields.map{|f| f.label }.should == ["Form Label"]
25
+ mods_display_description(@child_display_label).fields.map{|f| f.label }.should == ["Note Label"]
26
26
  end
27
27
  end
28
28
 
29
29
  describe "fields" do
30
30
  it "should get the value from a field in physicalDescription" do
31
- mods_display_description(@form).fields.first.values.should == ["Form Note"]
31
+ mods_display_description(@form).fields.first.values.should == ["Description Note"]
32
32
  end
33
33
  it "should get multiple values for mixed content" do
34
- mods_display_description(@mixed).fields.map{|v| v.values }.should == [["Form Note"], ["Extent Note"]]
34
+ mods_display_description(@mixed).fields.map{|v| v.values }.should == [["Description Note"], ["Digital Origin Note"]]
35
35
  end
36
36
  end
37
37
  end
@@ -1,5 +1,4 @@
1
1
  require "spec_helper"
2
-
3
2
  def mods_display_format(mods)
4
3
  ModsDisplay::Format.new(mods, ModsDisplay::Configuration::Base.new, mock("controller"))
5
4
  end
@@ -7,23 +6,12 @@ end
7
6
  describe ModsDisplay::Format do
8
7
  before(:all) do
9
8
  @format = Stanford::Mods::Record.new.from_str("<mods><typeOfResource>Format</typeOfResource></mods>", false).typeOfResource
9
+ @duplicate_forms = Stanford::Mods::Record.new.from_str("<mods><physicalDescription><form>Map</form><form>Map</form></physicalDescription></mods>", false)
10
10
  @display_label = Stanford::Mods::Record.new.from_str("<mods><typeOfResource displayLabel='SpecialFormat'>Mixed Materials</typeOfResource></mods>", false).typeOfResource
11
11
  @space_format = Stanford::Mods::Record.new.from_str("<mods><typeOfResource>Mixed Materials</typeOfResource></mods>", false).typeOfResource
12
12
  @slash_format = Stanford::Mods::Record.new.from_str("<mods><typeOfResource>Manuscript/Archive</typeOfResource></mods>", false).typeOfResource
13
13
  end
14
-
15
- describe "labels" do
16
- it "should return the format label" do
17
- mods_display_format(@format).to_html.should match(/<dt title='Format'>Format:<\/dt>/)
18
- end
19
- it "should return the displayLabel when available" do
20
- mods_display_format(@display_label).to_html.should match(/<dt title='SpecialFormat'>SpecialFormat:<\/dt>/)
21
- end
22
- end
23
14
  describe "format_class" do
24
- it "should wrap the format in a span w/ the format class in it" do
25
- mods_display_format(@format).to_html.should match(/<span class='format'>Format<\/span>/)
26
- end
27
15
  it "should remove any spaces" do
28
16
  ModsDisplay::Format.send(:format_class, "Mixed Materials").should == "mixed_materials"
29
17
  end
@@ -31,5 +19,13 @@ describe ModsDisplay::Format do
31
19
  ModsDisplay::Format.send(:format_class, "Manuscript/Archive").should == "manuscript_archive"
32
20
  end
33
21
  end
34
-
22
+ describe "fields" do
23
+ describe "form" do
24
+ it "should remove duplicate values" do
25
+ fields = mods_display_format(@duplicate_forms).fields
26
+ fields.length.should == 1
27
+ fields.first.values.should == ["Map"]
28
+ end
29
+ end
30
+ end
35
31
  end
@@ -6,7 +6,8 @@ end
6
6
 
7
7
  describe ModsDisplay::Abstract do
8
8
  before(:all) do
9
- @genre = Stanford::Mods::Record.new.from_str("<mods><genre>Map Data</abstract></genre>", false).genre
9
+ @genre = Stanford::Mods::Record.new.from_str("<mods><genre>Map Data</genre></mods>", false).genre
10
+ @downcase = Stanford::Mods::Record.new.from_str("<mods><genre>map data</genre></mods>", false).genre
10
11
  @display_label = Stanford::Mods::Record.new.from_str("<mods><genre displayLabel='Special label'>Catographic</genre></mods>", false).genre
11
12
  end
12
13
  describe "labels" do
@@ -21,4 +22,11 @@ describe ModsDisplay::Abstract do
21
22
  fields.first.label.should == "Special label"
22
23
  end
23
24
  end
25
+ describe "fields" do
26
+ it "should capitalize the first letter in a genre" do
27
+ fields = mods_display_genre(@downcase).fields
28
+ fields.length.should == 1
29
+ fields.first.values.should == ["Map data"]
30
+ end
31
+ end
24
32
  end
@@ -4,7 +4,10 @@ require "fixtures/imprint_fixtures"
4
4
  include ImprintFixtures
5
5
 
6
6
  def mods_display_imprint(mods_record)
7
- ModsDisplay::Imprint.new(mods_record, ModsDisplay::Configuration::Base.new, mock("controller"))
7
+ ModsDisplay::Imprint.new(mods_record, ModsDisplay::Configuration::Imprint.new, mock("controller"))
8
+ end
9
+ def mods_display_format_date_imprint(mods_record)
10
+ ModsDisplay::Imprint.new(mods_record, ModsDisplay::Configuration::Imprint.new{full_date_format "(%Y) %B, %d"; short_date_format "%B (%Y)"}, mock("controller"))
8
11
  end
9
12
 
10
13
  describe ModsDisplay::Imprint do
@@ -29,6 +32,8 @@ describe ModsDisplay::Imprint do
29
32
  @qualified_imprint_date = Stanford::Mods::Record.new.from_str(qualified_imprint_date, false).origin_info
30
33
  @imprint_date_range = Stanford::Mods::Record.new.from_str(imprint_date_range, false).origin_info
31
34
  @encoded_place = Stanford::Mods::Record.new.from_str(encoded_place, false).origin_info
35
+ @encoded_dates = Stanford::Mods::Record.new.from_str(encoded_dates, false).origin_info
36
+ @bad_dates = Stanford::Mods::Record.new.from_str(bad_dates, false).origin_info
32
37
  end
33
38
 
34
39
  describe "labels" do
@@ -137,12 +142,68 @@ describe ModsDisplay::Imprint do
137
142
  fields.first.values.should == ["[1820]"]
138
143
  end
139
144
  end
145
+ describe "encoded dates" do
146
+ describe "W3CDTF" do
147
+ it "should handle single year dates properly" do
148
+ fields = mods_display_imprint(@encoded_dates).fields
149
+ fields.length.should == 4
150
+ fields.find do |field|
151
+ field.label == "Imprint"
152
+ end.values.should == ["2013"]
153
+ end
154
+ it "should handle month+year dates properly" do
155
+ fields = mods_display_imprint(@encoded_dates).fields
156
+ fields.length.should == 4
157
+ fields.find do |field|
158
+ field.label == "Date captured"
159
+ end.values.should == ["July 2013"]
160
+ end
161
+ it "should handle full dates properly" do
162
+ fields = mods_display_imprint(@encoded_dates).fields
163
+ fields.length.should == 4
164
+ fields.find do |field|
165
+ field.label == "Date created"
166
+ end.values.should == ["July 10, 2013"]
167
+ end
168
+ it "should not try to handle dates we can't parse" do
169
+ fields = mods_display_imprint(@encoded_dates).fields
170
+ fields.length.should == 4
171
+ fields.find do |field|
172
+ field.label == "Date modified"
173
+ end.values.should == ["Jul. 22, 2013"]
174
+ end
175
+ it "should accept date configurations" do
176
+ fields = mods_display_format_date_imprint(@encoded_dates).fields
177
+ fields.length.should == 4
178
+ fields.find do |field|
179
+ field.label == "Date created"
180
+ end.values.should == ["(2013) July, 10"]
181
+ fields.find do |field|
182
+ field.label == "Date captured"
183
+ end.values.should == ["July (2013)"]
184
+ end
185
+ end
186
+ end
187
+ describe "bad dates" do
188
+ it "should ignore date values" do
189
+ fields = mods_display_imprint(@bad_dates).fields
190
+ fields.length.should == 2
191
+ fields.each do |field|
192
+ field.values.join.should_not include "9999"
193
+ end
194
+ end
195
+ end
140
196
  end
141
197
  describe "place processing" do
142
198
  it "should exclude encoded places" do
143
199
  fields = mods_display_imprint(@encoded_place).fields
144
200
  fields.length.should == 1
145
- fields.first.values.should == ["[Amsterdam]", "[United States]"]
201
+ fields.first.values.should == ["[Amsterdam]", "[United States]", "Netherlands"]
202
+ end
203
+ it "should translate encoded place if there isn't a text (or non-typed) value available" do
204
+ fields = mods_display_imprint(@encoded_place).fields
205
+ fields.length.should == 1
206
+ fields.first.values.should include "Netherlands"
146
207
  end
147
208
  end
148
209
  describe "to_html" do
@@ -7,8 +7,9 @@ end
7
7
  describe ModsDisplay::Note do
8
8
  before(:all) do
9
9
  @location = Stanford::Mods::Record.new.from_str("<mods><location><physicalLocation>The Location</physicalLocation></location></mods>", false).location
10
+ @urls = Stanford::Mods::Record.new.from_str("<mods><location><url displayLabel='Stanford University Library'>http://library.stanford.edu</url></location><location displayLabel='PURL'><url>http://purl.stanford.edu</url></location></mods>", false).location
10
11
  @display_label = Stanford::Mods::Record.new.from_str("<mods><location displayLabel='Special Label'><shelfLocation>On Shelf A</shelfLocation></location></mods>", false).location
11
- @repository_label = Stanford::Mods::Record.new.from_str("<mods><location type='repository'><physicalLocation>Location Field</physicalLocation></location></mods>", false).location
12
+ @repository_label = Stanford::Mods::Record.new.from_str("<mods><location><physicalLocation type='repository'>Location Field</physicalLocation></location></mods>", false).location
12
13
  end
13
14
  describe "label" do
14
15
  it "should have a default label" do
@@ -17,9 +18,27 @@ describe ModsDisplay::Note do
17
18
  it "should use the displayLabel attribute when one is available" do
18
19
  mods_display_location(@display_label).fields.first.label.should == "Special Label"
19
20
  end
21
+ it "should handle the URL labels correctly" do
22
+ mods_display_location(@urls).fields.map{|f| f.label}.should == ["Location", "PURL"]
23
+ end
20
24
  it "should use get a label from a list of translations" do
21
25
  mods_display_location(@repository_label).fields.first.label.should == "Repository"
22
26
  end
23
27
  end
24
-
28
+ describe "fields" do
29
+ describe "URLs" do
30
+ it "should link and use the displayLabel as text" do
31
+ fields = mods_display_location(@urls).fields
32
+ fields.length.should == 2
33
+ field = fields.find{|f| f.label == "Location"}
34
+ field.values.should == ["<a href='http://library.stanford.edu'>Stanford University Library</a>"]
35
+ end
36
+ it "should link the URL itself in the absence of a displayLabel on the url element" do
37
+ fields = mods_display_location(@urls).fields
38
+ fields.length.should == 2
39
+ field = fields.find{|f| f.label == "PURL"}
40
+ field.values.should == ["<a href='http://purl.stanford.edu'>http://purl.stanford.edu</a>"]
41
+ end
42
+ end
43
+ end
25
44
  end
@@ -19,6 +19,10 @@ describe ModsDisplay::Language do
19
19
  @blank_name = Stanford::Mods::Record.new.from_str("<mods><name><namePart/><role><roleTerm></roleTerm></role></name></mods>", false).plain_name
20
20
  @conf_name = Stanford::Mods::Record.new.from_str("<mods><name type='conference'><namePart>John Doe</namePart></name></mods>", false).plain_name
21
21
  @contributor = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm>lithographer</roleTerm></role></name></mods>", false).plain_name
22
+ @encoded_role = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm type='code' authority='marcrelator'>ltg</roleTerm></role></name></mods>", false).plain_name
23
+ @mixed_role = Stanford::Mods::Record.new.from_str("<mods><name><role><roleTerm>publisher</roleTerm></role><namePart>John Doe</namePart><role><roleTerm type='text' authority='marcrelator'>engraver</roleTerm></role></name></mods>", false).plain_name
24
+ @numeral_toa = Stanford::Mods::Record.new.from_str("<mods><name><namePart>Unqualfieid</namePart><namePart type='termsOfAddress'>XVII, ToA</namePart><namePart type='date'>date1-date2</namePart><namePart type='given'>Given Name</namePart><namePart type='family'>Family Name</namePart></name></mods>", false).plain_name
25
+ @simple_toa = Stanford::Mods::Record.new.from_str("<mods><name><namePart>Unqualfieid</namePart><namePart type='termsOfAddress'>Ier, empereur</namePart><namePart type='date'>date1-date2</namePart><namePart type='given'>Given Name</namePart><namePart type='family'>Family Name</namePart></name></mods>", false).plain_name
22
26
  @display_form = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><displayForm>Mr. John Doe</displayForm></name></mods>", false).plain_name
23
27
  @collapse_label = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name><name><namePart>Jane Doe</namePart></name></mods>", false).plain_name
24
28
  @complex_labels = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name><name><namePart>Jane Doe</namePart></name><name type='conference'><namePart>John Dough</namePart></name><name><namePart>Jane Dough</namePart></name></mods>", false).plain_name
@@ -51,9 +55,35 @@ describe ModsDisplay::Language do
51
55
  fields.first.values.first.should be_a(ModsDisplay::Name::Person)
52
56
  fields.first.values.first.role.should == "Depicted"
53
57
  end
58
+ it "should decode encoded roleTerms when no text (or non-typed) roleTerm is available" do
59
+ fields = mods_display_name(@encoded_role).fields
60
+ fields.length.should == 1
61
+ fields.first.values.length.should == 1
62
+ fields.first.values.first.to_s.should == "John Doe (Lithographer)"
63
+ end
64
+ it "should get the type='text' role before an untyped role" do
65
+ fields = mods_display_name(@mixed_role).fields
66
+ fields.length.should == 1
67
+ fields.first.values.length.should == 1
68
+ fields.first.values.first.role.should == "engraver"
69
+ end
54
70
  it "should not add blank names" do
55
71
  mods_display_name(@blank_name).fields.should == []
56
72
  end
73
+ it "should not delimit given name and termsOfAddress (that begin w/ roman numerals) with a comma" do
74
+ fields = mods_display_name(@numeral_toa).fields
75
+ fields.length.should == 1
76
+ fields.first.values.length.should == 1
77
+ fields.first.values.first.to_s.should_not match /Given Name, XVII/
78
+ fields.first.values.first.to_s.should match /Given Name XVII/
79
+ end
80
+ it "should delimit given name and termsOfAddress (that DO NOT begin w/ roman numerals) with a comma" do
81
+ fields = mods_display_name(@simple_toa).fields
82
+ fields.length.should == 1
83
+ fields.first.values.length.should == 1
84
+ fields.first.values.first.to_s.should match /Given Name, Ier, empereur/
85
+ fields.first.values.first.to_s.should_not match /Given Name Ier, empereur/
86
+ end
57
87
  it "should collapse adjacent matching labels" do
58
88
  fields = mods_display_name(@collapse_label).fields
59
89
  fields.length.should == 1
@@ -10,6 +10,8 @@ describe ModsDisplay::RelatedItem do
10
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
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
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
13
15
  @blank_item = Stanford::Mods::Record.new.from_str("<mods><relatedItem><titleInfo><title></title></titleInfo><location><url></url></location></relatedItem></mods>", false).related_item
14
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
15
17
  end
@@ -17,6 +19,12 @@ describe ModsDisplay::RelatedItem do
17
19
  it "should default to Related Item" do
18
20
  mods_display_item(@item).fields.first.label.should == "Related item"
19
21
  end
22
+ it "should get the location label" do
23
+ mods_display_item(@location).fields.first.label.should == "Location"
24
+ end
25
+ it "should get the reference label" do
26
+ mods_display_item(@reference).fields.first.label.should == "Referenced by"
27
+ end
20
28
  it "should get the displayLabel if available" do
21
29
  mods_display_item(@display_label).fields.first.label.should == "Special Item"
22
30
  end
@@ -38,6 +46,11 @@ describe ModsDisplay::RelatedItem do
38
46
  it "should not return empty links when there is no title or link" do
39
47
  mods_display_item(@blank_item).fields.should == []
40
48
  end
49
+ it "should concat the isReferencedBy related item title with other metadata" do
50
+ fields = mods_display_item(@reference).fields
51
+ fields.length.should == 1
52
+ fields.first.values.should == ["The title DATE 124"]
53
+ end
41
54
  it "should collapse labels down into the same record" do
42
55
  fields = mods_display_item(@multi_items).fields
43
56
  fields.length.should == 1
@@ -7,6 +7,7 @@ end
7
7
  describe ModsDisplay::ResourceType do
8
8
  before(:all) do
9
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
10
11
  @display_label = Stanford::Mods::Record.new.from_str("<mods><typeOfResource displayLabel='Special label'>Resource Type</typeOfResource></mods>", false).typeOfResource
11
12
  end
12
13
  it "should default to a label of 'Type of resource'" do
@@ -19,4 +20,9 @@ describe ModsDisplay::ResourceType do
19
20
  fields.length.should == 1
20
21
  fields.first.label.should == "Special label"
21
22
  end
23
+ it "should capitalize the first letter of the values" do
24
+ fields = mods_display_resource_type(@downcase).fields
25
+ fields.length.should == 1
26
+ fields.first.values.should == ["Resource type"]
27
+ end
22
28
  end
@@ -204,10 +204,10 @@ module ImprintFixtures
204
204
  <mods>
205
205
  <originInfo>
206
206
  <place>
207
- <placeTerm type="code">ne</placeTerm>
207
+ <placeTerm type="code" authority="marccountry">ne</placeTerm>
208
208
  </place>
209
209
  <place>
210
- <placeTerm type="text">[Amsterdam]</placeTerm>
210
+ <placeTerm type="text" authority="marccountry">[Amsterdam]</placeTerm>
211
211
  </place>
212
212
  </originInfo>
213
213
  <originInfo>
@@ -216,6 +216,40 @@ module ImprintFixtures
216
216
  <placeTerm type="text">[United States]</placeTerm>
217
217
  </place>
218
218
  </originInfo>
219
+ <originInfo>
220
+ <place>
221
+ <placeTerm type="code" authority="marccountry">ne</placeTerm>
222
+ </place>
223
+ </originInfo>
224
+ </mods>
225
+ MODS
226
+ end
227
+ def encoded_dates
228
+ <<-MODS
229
+ <mods>
230
+ <originInfo>
231
+ <dateOther encoding="w3cDtF">2013</dateOther>
232
+ <dateCreated encoding="W3CdTf">2013-07-10</dateCreated>
233
+ <dateCaptured encoding="W3CDTF">2013-07</dateCaptured>
234
+ <dateModified encoding="w3cdtf">Jul. 22, 2013</dateModified>
235
+ </originInfo>
236
+ </mods>
237
+ MODS
238
+ end
239
+ def bad_dates
240
+ <<-MODS
241
+ <mods>
242
+ <originInfo>
243
+ <place>
244
+ <placeTerm>United States</placeTerm>
245
+ </place>
246
+ <dateIssued>
247
+ 9999
248
+ </dateIssued>
249
+ <dateModified>
250
+ 9999
251
+ </dateModified>
252
+ </originInfo>
219
253
  </mods>
220
254
  MODS
221
255
  end
@@ -1,5 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
+ class TestNoConfigController
4
+ include ModsDisplay::ControllerExtension
5
+ end
6
+
3
7
  class TestConfigController
4
8
  include ModsDisplay::ControllerExtension
5
9
 
@@ -24,8 +28,9 @@ describe "Configuration" do
24
28
  xml = "<mods><titleInfo><title>The Title of this Item</title></titleInfo><note type='contact'>jdoe@example.com</note></mods>"
25
29
  model = TestModel.new
26
30
  model.modsxml = xml
27
- controller = TestConfigController.new
28
- @html = controller.render_mods_display(model)
31
+ @no_config_controller = TestNoConfigController.new
32
+ @config_controller = TestConfigController.new
33
+ @html = @config_controller.render_mods_display(model)
29
34
  end
30
35
  it "should apply the label class" do
31
36
  @html.should match(/<dt class='label-class' title=/)
@@ -39,4 +44,11 @@ describe "Configuration" do
39
44
  it "should ignore fields if requested" do
40
45
  @html.scan(/jdoe@example\.com/).length.should == 0
41
46
  end
47
+ it "should get overriden configurations" do
48
+ @no_config_controller.mods_display_config.contact.ignore?.should be_false
49
+ @config_controller.mods_display_config.contact.ignore?.should be_true
50
+ end
51
+ it "should get default configurations when no controller configuration is supplied" do
52
+ @no_config_controller.mods_display_config.note.delimiter.should == "<br/>"
53
+ end
42
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mods_display
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-16 00:00:00.000000000 Z
12
+ date: 2013-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: stanford-mods
@@ -74,13 +74,19 @@ files:
74
74
  - Rakefile
75
75
  - lib/mods_display.rb
76
76
  - lib/mods_display/configuration.rb
77
+ - lib/mods_display/configuration/access_condition.rb
77
78
  - lib/mods_display/configuration/base.rb
79
+ - lib/mods_display/configuration/format.rb
80
+ - lib/mods_display/configuration/genre.rb
81
+ - lib/mods_display/configuration/imprint.rb
78
82
  - lib/mods_display/configuration/name.rb
79
83
  - lib/mods_display/configuration/note.rb
80
84
  - lib/mods_display/configuration/related_item.rb
81
85
  - lib/mods_display/configuration/subject.rb
82
86
  - lib/mods_display/controller_extension.rb
87
+ - lib/mods_display/country_codes.rb
83
88
  - lib/mods_display/fields/abstract.rb
89
+ - lib/mods_display/fields/access_condition.rb
84
90
  - lib/mods_display/fields/audience.rb
85
91
  - lib/mods_display/fields/cartographics.rb
86
92
  - lib/mods_display/fields/collection.rb
@@ -97,7 +103,6 @@ files:
97
103
  - lib/mods_display/fields/name.rb
98
104
  - lib/mods_display/fields/note.rb
99
105
  - lib/mods_display/fields/related_item.rb
100
- - lib/mods_display/fields/related_location.rb
101
106
  - lib/mods_display/fields/resource_type.rb
102
107
  - lib/mods_display/fields/sub_title.rb
103
108
  - lib/mods_display/fields/subject.rb
@@ -105,10 +110,13 @@ files:
105
110
  - lib/mods_display/fields/values.rb
106
111
  - lib/mods_display/html.rb
107
112
  - lib/mods_display/model_extension.rb
113
+ - lib/mods_display/relator_codes.rb
108
114
  - lib/mods_display/version.rb
109
115
  - mods_display.gemspec
116
+ - spec/configuration/access_condition_spec.rb
110
117
  - spec/configuration/base_spec.rb
111
118
  - spec/fields/abstract_spec.rb
119
+ - spec/fields/access_condition_spec.rb
112
120
  - spec/fields/audience_spec.rb
113
121
  - spec/fields/cartographics_spec.rb
114
122
  - spec/fields/collection_spec.rb
@@ -124,7 +132,6 @@ files:
124
132
  - spec/fields/name_spec.rb
125
133
  - spec/fields/note_spec.rb
126
134
  - spec/fields/related_item_spec.rb
127
- - spec/fields/related_location_spec.rb
128
135
  - spec/fields/resource_type_spec.rb
129
136
  - spec/fields/sub_title_spec.rb
130
137
  - spec/fields/subject_spec.rb
@@ -151,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
158
  version: '0'
152
159
  segments:
153
160
  - 0
154
- hash: 1044721319103259075
161
+ hash: 841363986478259673
155
162
  required_rubygems_version: !ruby/object:Gem::Requirement
156
163
  none: false
157
164
  requirements:
@@ -160,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
167
  version: '0'
161
168
  segments:
162
169
  - 0
163
- hash: 1044721319103259075
170
+ hash: 841363986478259673
164
171
  requirements: []
165
172
  rubyforge_project:
166
173
  rubygems_version: 1.8.25
@@ -170,8 +177,10 @@ summary: The MODS Display gem allows implementers to configure a customized disp
170
177
  of MODS metadata. This display implements the specifications defined at Stanford
171
178
  for how to display MODS.
172
179
  test_files:
180
+ - spec/configuration/access_condition_spec.rb
173
181
  - spec/configuration/base_spec.rb
174
182
  - spec/fields/abstract_spec.rb
183
+ - spec/fields/access_condition_spec.rb
175
184
  - spec/fields/audience_spec.rb
176
185
  - spec/fields/cartographics_spec.rb
177
186
  - spec/fields/collection_spec.rb
@@ -187,7 +196,6 @@ test_files:
187
196
  - spec/fields/name_spec.rb
188
197
  - spec/fields/note_spec.rb
189
198
  - spec/fields/related_item_spec.rb
190
- - spec/fields/related_location_spec.rb
191
199
  - spec/fields/resource_type_spec.rb
192
200
  - spec/fields/sub_title_spec.rb
193
201
  - spec/fields/subject_spec.rb