stanford-mods 0.0.23 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +9 -9
- data/.gitignore +2 -0
- data/.travis.yml +6 -3
- data/README.rdoc +1 -0
- data/lib/stanford-mods/searchworks.rb +156 -136
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/searchworks_format_spec.rb +103 -0
- data/spec/searchworks_pub_dates_spec.rb +236 -0
- data/spec/searchworks_spec.rb +4 -0
- data/spec/searchworks_subject_raw_spec.rb +384 -0
- data/spec/searchworks_subject_spec.rb +358 -347
- metadata +9 -9
- data/.rvmrc +0 -1
- data/lib/stanford-mods/kolb.rb +0 -14
- data/spec/kolb_spec.rb +0 -234
- data/spec/searchworks_gdor_spec.rb +0 -771
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stanford-mods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
@@ -121,7 +121,6 @@ extra_rdoc_files:
|
|
121
121
|
- README.rdoc
|
122
122
|
files:
|
123
123
|
- .gitignore
|
124
|
-
- .rvmrc
|
125
124
|
- .travis.yml
|
126
125
|
- .yardopts
|
127
126
|
- Gemfile
|
@@ -130,14 +129,14 @@ files:
|
|
130
129
|
- Rakefile
|
131
130
|
- config/mappings_hash.rb
|
132
131
|
- lib/stanford-mods.rb
|
133
|
-
- lib/stanford-mods/kolb.rb
|
134
132
|
- lib/stanford-mods/searchworks.rb
|
135
133
|
- lib/stanford-mods/searchworks_languages.rb
|
136
134
|
- lib/stanford-mods/version.rb
|
137
|
-
- spec/kolb_spec.rb
|
138
135
|
- spec/name_spec.rb
|
139
|
-
- spec/
|
136
|
+
- spec/searchworks_format_spec.rb
|
137
|
+
- spec/searchworks_pub_dates_spec.rb
|
140
138
|
- spec/searchworks_spec.rb
|
139
|
+
- spec/searchworks_subject_raw_spec.rb
|
141
140
|
- spec/searchworks_subject_spec.rb
|
142
141
|
- spec/spec_helper.rb
|
143
142
|
- stanford-mods.gemspec
|
@@ -160,15 +159,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
159
|
version: '0'
|
161
160
|
requirements: []
|
162
161
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.0
|
162
|
+
rubygems_version: 2.2.0
|
164
163
|
signing_key:
|
165
164
|
specification_version: 4
|
166
165
|
summary: Stanford specific wrangling of MODS metadata
|
167
166
|
test_files:
|
168
|
-
- spec/kolb_spec.rb
|
169
167
|
- spec/name_spec.rb
|
170
|
-
- spec/
|
168
|
+
- spec/searchworks_format_spec.rb
|
169
|
+
- spec/searchworks_pub_dates_spec.rb
|
171
170
|
- spec/searchworks_spec.rb
|
171
|
+
- spec/searchworks_subject_raw_spec.rb
|
172
172
|
- spec/searchworks_subject_spec.rb
|
173
173
|
- spec/spec_helper.rb
|
174
174
|
has_rdoc:
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use ruby-1.9.3@stanford-mods --create
|
data/lib/stanford-mods/kolb.rb
DELETED
data/spec/kolb_spec.rb
DELETED
@@ -1,234 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'stanford-mods/kolb'
|
3
|
-
|
4
|
-
describe "Kolb Collection Mods Record" do
|
5
|
-
before(:all) do
|
6
|
-
@krec = Stanford::Mods::KolbRecord.new
|
7
|
-
@krec.from_str('<?xml version="1.0"?>
|
8
|
-
<ns3:mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.loc.gov/mods/v3" xmlns:ns2="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
|
9
|
-
<ns3:titleInfo>
|
10
|
-
<ns3:title>Edward VI, king of England,</ns3:title>
|
11
|
-
</ns3:titleInfo>
|
12
|
-
<ns3:language>
|
13
|
-
<ns3:languageTerm type="code" authority="iso639-2b">eng</ns3:languageTerm>
|
14
|
-
<ns3:languageTerm type="text">English</ns3:languageTerm>
|
15
|
-
</ns3:language>
|
16
|
-
<ns3:typeOfResource>still image</ns3:typeOfResource>
|
17
|
-
<ns3:originInfo>
|
18
|
-
<ns3:dateCreated>1537-1553.</ns3:dateCreated>
|
19
|
-
<ns3:dateCreated point="start">1537</ns3:dateCreated>
|
20
|
-
<ns3:dateCreated point="end">1553</ns3:dateCreated>
|
21
|
-
</ns3:originInfo>
|
22
|
-
<ns3:subject>
|
23
|
-
<ns3:name type="personal" authority="ingest">
|
24
|
-
<ns3:namePart type="family">Edward VI , king of England, </ns3:namePart>
|
25
|
-
<ns3:displayForm>Edward VI , king of England, 1537-1553</ns3:displayForm>
|
26
|
-
</ns3:name>
|
27
|
-
</ns3:subject>
|
28
|
-
<ns3:name type="personal" authority="ingest">
|
29
|
-
<ns3:role>
|
30
|
-
<ns3:roleTerm type="text" authority="marcrelator">creator</ns3:roleTerm>
|
31
|
-
<ns3:roleTerm type="code" authority="marcrelator">cre</ns3:roleTerm>
|
32
|
-
</ns3:role>
|
33
|
-
<ns3:namePart type="family">Holbein, Han, 1497-1543</ns3:namePart>
|
34
|
-
<ns3:displayForm>Holbein, Han, 1497-1543</ns3:displayForm>
|
35
|
-
</ns3:name>
|
36
|
-
<ns3:name type="personal" authority="ingest">
|
37
|
-
<ns3:role>
|
38
|
-
<ns3:roleTerm type="text" authority="marcrelator">creator</ns3:roleTerm>
|
39
|
-
<ns3:roleTerm type="code" authority="marcrelator">cre</ns3:roleTerm>
|
40
|
-
</ns3:role>
|
41
|
-
<ns3:namePart type="family">Sheppard, Robert, 1732-1737</ns3:namePart>
|
42
|
-
<ns3:displayForm>Sheppard, Robert, 1732-1737</ns3:displayForm>
|
43
|
-
</ns3:name>
|
44
|
-
<ns3:subject authority="ingest">
|
45
|
-
<ns3:topic>Ruler, English.Ruler, English.</ns3:topic>
|
46
|
-
</ns3:subject>
|
47
|
-
<ns3:abstract displayLabel="Scope and Contents note"/>
|
48
|
-
<ns3:physicalDescription>
|
49
|
-
<ns3:note displayLabel="Material Specific Details note">0395</ns3:note>
|
50
|
-
</ns3:physicalDescription>
|
51
|
-
</ns3:mods>')
|
52
|
-
end
|
53
|
-
|
54
|
-
context "for SearchWorks Solr" do
|
55
|
-
# from https://consul.stanford.edu/display/NGDE/Required+and+Recommended+Solr+Fields+for+SearchWorks+documents
|
56
|
-
|
57
|
-
context "required values" do
|
58
|
-
|
59
|
-
it "catch all text field" do
|
60
|
-
pending "to be implemented"
|
61
|
-
end
|
62
|
-
|
63
|
-
it "format" do
|
64
|
-
# sometimes from contentMetadata, o.w. see mods_mapper.is_a_map/image?
|
65
|
-
pending "to be implemented"
|
66
|
-
|
67
|
-
#<ns3:typeOfResource>still image</ns3:typeOfResource>
|
68
|
-
end
|
69
|
-
|
70
|
-
# FIXME: update per gryphDOR code / searcworks code / new schema
|
71
|
-
|
72
|
-
it "collection" do
|
73
|
-
pending "to be implemented"
|
74
|
-
# from solr_mapper.rb
|
75
|
-
# # Special treatment for collection objects
|
76
|
-
#if is_a_collection?
|
77
|
-
# solr_doc[:display_type] = "Collection"
|
78
|
-
# solr_doc[:collection_type] = "Digital Collection"
|
79
|
-
#else
|
80
|
-
# solr_doc[:display_type] = display_type
|
81
|
-
#end
|
82
|
-
|
83
|
-
#if collections # An array of the druids of any collections this object is part of
|
84
|
-
# solr_doc[:collection] = collections
|
85
|
-
# solr_doc[:collection_with_title] = collections_with_titles
|
86
|
-
#end
|
87
|
-
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
it "display_type" do
|
92
|
-
pending "to be implemented"
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context "strongly recommended" do
|
97
|
-
# access_facet has nothing to do with mods
|
98
|
-
context "title" do
|
99
|
-
context "for display and searching" do
|
100
|
-
it "short title" do
|
101
|
-
@krec.short_titles.should == ['Edward VI, king of England,']
|
102
|
-
end
|
103
|
-
it "full title" do
|
104
|
-
@krec.full_titles.should == ['Edward VI, king of England,']
|
105
|
-
end
|
106
|
-
it "alternative titles" do
|
107
|
-
@krec.alternative_titles.size.should == 0
|
108
|
-
end
|
109
|
-
end
|
110
|
-
it "sortable title" do
|
111
|
-
@krec.sort_title.should == 'Edward VI, king of England,'
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
context "recommended" do
|
117
|
-
context "publication date" do
|
118
|
-
it "for searching and facet" do
|
119
|
-
pending "to be implemented"
|
120
|
-
@krec.pub_date.should include('1537')
|
121
|
-
@krec.pub_date.should include('1545')
|
122
|
-
@krec.pub_date.should include('1553')
|
123
|
-
@krec.pub_date.should_not include('1554')
|
124
|
-
@krec.pub_date.should_not include('1536')
|
125
|
-
end
|
126
|
-
it "for sorting should be dateCreated start date" do
|
127
|
-
pending "to be implemented"
|
128
|
-
@krec.pub_date_sort.should == '1537'
|
129
|
-
end
|
130
|
-
it "for pub date grouping (hierarchical / date slider?)" do
|
131
|
-
pending "to be implemented"
|
132
|
-
@krec.pub_date_group_facet.should == 'More than 50 years ago'
|
133
|
-
end
|
134
|
-
end
|
135
|
-
context "language" do
|
136
|
-
it "facet should have a text value" do
|
137
|
-
@krec.sw_language_facet.should == ['English']
|
138
|
-
end
|
139
|
-
end
|
140
|
-
context "authors" do
|
141
|
-
it "personal_names" do
|
142
|
-
@krec.personal_names.size.should == 2
|
143
|
-
@krec.personal_names.should include('Holbein, Han, 1497-1543')
|
144
|
-
@krec.personal_names.should include('Sheppard, Robert, 1732-1737')
|
145
|
-
end
|
146
|
-
it "name object showing creator role" do
|
147
|
-
pending "to be implemented"
|
148
|
-
end
|
149
|
-
it "author sort" do
|
150
|
-
pending "to be implemented"
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
end # for SearchWorks Solr
|
156
|
-
|
157
|
-
context "abstract" do
|
158
|
-
# FIXME: move to stanford_mods, not kolb specific
|
159
|
-
it "should not include empty elements" do
|
160
|
-
pending "to be implemented"
|
161
|
-
# <ns3:abstract displayLabel="Scope and Contents note"/>
|
162
|
-
@krec.abstract.size.should == 0
|
163
|
-
@krec.scope_and_contents_note.size.should == 0
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context "physicalDescription" do
|
168
|
-
# <ns3:physicalDescription>
|
169
|
-
# <ns3:note displayLabel="Material Specific Details note">0395</ns3:note>
|
170
|
-
# </ns3:physicalDescription>
|
171
|
-
it "should be included in catch all text" do
|
172
|
-
pending "to be implemented"
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
context "subject" do
|
177
|
-
it "topic" do
|
178
|
-
@krec.subject.topic.map { |e| e.text }.should == ['Ruler, English.Ruler, English.']
|
179
|
-
end
|
180
|
-
it "name" do
|
181
|
-
pending "to be implemented"
|
182
|
-
@krec.subject.name.map { |e| e.text }.should == ['Edward VI , king of England, 1537-1553']
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
context "kolb record title issue" do
|
187
|
-
before(:all) do
|
188
|
-
@krec.from_str('<?xml version="1.0" encoding="UTF-8"?>
|
189
|
-
<ns3:mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.loc.gov/mods/v3" xmlns:ns2="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
|
190
|
-
<ns3:titleInfo>
|
191
|
-
<ns3:title>Elizabeth I, queen of England,</ns3:title>
|
192
|
-
</ns3:titleInfo>
|
193
|
-
<ns3:language>
|
194
|
-
<ns3:languageTerm type="code" authority="iso639-2b">eng</ns3:languageTerm>
|
195
|
-
<ns3:languageTerm type="text">English</ns3:languageTerm>
|
196
|
-
</ns3:language>
|
197
|
-
<ns3:typeOfResource>still image</ns3:typeOfResource>
|
198
|
-
<ns3:originInfo>
|
199
|
-
<ns3:dateCreated>1533-1603.</ns3:dateCreated>
|
200
|
-
<ns3:dateCreated point="start">1533</ns3:dateCreated>
|
201
|
-
<ns3:dateCreated point="end">1603</ns3:dateCreated>
|
202
|
-
</ns3:originInfo>
|
203
|
-
<ns3:subject>
|
204
|
-
<ns3:name type="personal" authority="ingest">
|
205
|
-
<ns3:namePart type="family">Elizabeth I, Queen of England</ns3:namePart>
|
206
|
-
<ns3:displayForm>Elizabeth I, Queen of England, 1533-1603</ns3:displayForm>
|
207
|
-
</ns3:name>
|
208
|
-
</ns3:subject>
|
209
|
-
<ns3:name type="personal" authority="ingest">
|
210
|
-
<ns3:role>
|
211
|
-
<ns3:roleTerm type="text" authority="marcrelator">creator</ns3:roleTerm>
|
212
|
-
<ns3:roleTerm type="code" authority="marcrelator">cre</ns3:roleTerm>
|
213
|
-
</ns3:role>
|
214
|
-
<ns3:namePart type="family">Houston, Richard, 1721?-1775</ns3:namePart>
|
215
|
-
<ns3:displayForm>Houston, Richard, 1721?-1775</ns3:displayForm>
|
216
|
-
</ns3:name>
|
217
|
-
<ns3:subject authority="ingest">
|
218
|
-
<ns3:topic>Ruler, English. W</ns3:topic>
|
219
|
-
</ns3:subject>
|
220
|
-
<ns3:abstract displayLabel="Scope and Contents note">Elisabetha D.G./Angliae,Franciae & Hiberniae,
|
221
|
-
Regina,./Printed for E.Bakewell & H.Parker; opposite Birchin Lane
|
222
|
-
in Cornhill.</ns3:abstract>
|
223
|
-
<ns3:physicalDescription>
|
224
|
-
<ns3:note displayLabel="Material Specific Details note">0411</ns3:note>
|
225
|
-
</ns3:physicalDescription>
|
226
|
-
</ns3:mods>')
|
227
|
-
end
|
228
|
-
it "should get full title" do
|
229
|
-
@krec.title_info.full_title.should == ['Elizabeth I, queen of England,']
|
230
|
-
@krec.full_titles.should == ['Elizabeth I, queen of England,']
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
end
|
@@ -1,771 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe "Searchworks mixin for Stanford::Mods::Record" do
|
5
|
-
|
6
|
-
before(:all) do
|
7
|
-
@smods_rec = Stanford::Mods::Record.new
|
8
|
-
@ns_decl = "xmlns='#{Mods::MODS_NS}'"
|
9
|
-
end
|
10
|
-
before :each do
|
11
|
-
@genre = 'genre top level'
|
12
|
-
@cart_coord = '6 00 S, 71 30 E'
|
13
|
-
@s_genre = 'genre in subject'
|
14
|
-
@geo = 'Somewhere'
|
15
|
-
@geo_code = 'us'
|
16
|
-
@hier_geo_country = 'France'
|
17
|
-
@s_name = 'name in subject'
|
18
|
-
@occupation = 'worker bee'
|
19
|
-
@temporal = 'temporal'
|
20
|
-
@s_title = 'title in subject'
|
21
|
-
@topic = 'topic'
|
22
|
-
m = "<mods #{@ns_decl}>
|
23
|
-
<genre>#{@genre}</genre>
|
24
|
-
<subject><cartographics><coordinates>#{@cart_coord}</coordinates></cartographics></subject>
|
25
|
-
<subject><genre>#{@s_genre}</genre></subject>
|
26
|
-
<subject><geographic>#{@geo}</geographic></subject>
|
27
|
-
<subject><geographicCode authority='iso3166'>#{@geo_code}</geographicCode></subject>
|
28
|
-
<subject><hierarchicalGeographic><country>#{@hier_geo_country}</country></hierarchicalGeographic></subject>
|
29
|
-
<subject><name><namePart>#{@s_name}</namePart></name></subject>
|
30
|
-
<subject><occupation>#{@occupation}</occupation></subject>
|
31
|
-
<subject><temporal>#{@temporal}</temporal></subject>
|
32
|
-
<subject><titleInfo><title>#{@s_title}</title></titleInfo></subject>
|
33
|
-
<subject><topic>#{@topic}</topic></subject>
|
34
|
-
</mods>"
|
35
|
-
@smods_rec = Stanford::Mods::Record.new
|
36
|
-
@smods_rec.from_str(m)
|
37
|
-
@ng_mods = Nokogiri::XML(m)
|
38
|
-
m_no_subject = "<mods #{@ns_decl}><note>notit</note></mods>"
|
39
|
-
@ng_mods_no_subject = Nokogiri::XML(m_no_subject)
|
40
|
-
end
|
41
|
-
|
42
|
-
context "sw author methods" do
|
43
|
-
before(:all) do
|
44
|
-
m = "<mods #{@ns_decl}>
|
45
|
-
|
46
|
-
</mods>"
|
47
|
-
@smods_rec = Stanford::Mods::Record.new
|
48
|
-
@smods_rec.from_str(m)
|
49
|
-
end
|
50
|
-
it 'should choose a date ending with CE if there are multiple dates' do
|
51
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>7192 AM (li-Adam) / 1684 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
52
|
-
@smods_rec = Stanford::Mods::Record.new
|
53
|
-
@smods_rec.from_str(m)
|
54
|
-
@smods_rec.pub_date.should == '1684'
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
context "search fields" do
|
60
|
-
|
61
|
-
context "topic_search" do
|
62
|
-
before :each do
|
63
|
-
@genre = 'genre top level'
|
64
|
-
@cart_coord = '6 00 S, 71 30 E'
|
65
|
-
@s_genre = 'genre in subject'
|
66
|
-
@geo = 'Somewhere'
|
67
|
-
@geo_code = 'us'
|
68
|
-
@hier_geo_country = 'France'
|
69
|
-
@s_name = 'name in subject'
|
70
|
-
@occupation = 'worker bee'
|
71
|
-
@temporal = 'temporal'
|
72
|
-
@s_title = 'title in subject'
|
73
|
-
@topic = 'topic'
|
74
|
-
m = "<mods #{@ns_decl}>
|
75
|
-
<genre>#{@genre}</genre>
|
76
|
-
<subject><cartographics><coordinates>#{@cart_coord}</coordinates></cartographics></subject>
|
77
|
-
<subject><genre>#{@s_genre}</genre></subject>
|
78
|
-
<subject><geographic>#{@geo}</geographic></subject>
|
79
|
-
<subject><geographicCode authority='iso3166'>#{@geo_code}</geographicCode></subject>
|
80
|
-
<subject><hierarchicalGeographic><country>#{@hier_geo_country}</country></hierarchicalGeographic></subject>
|
81
|
-
<subject><name><namePart>#{@s_name}</namePart></name></subject>
|
82
|
-
<subject><occupation>#{@occupation}</occupation></subject>
|
83
|
-
<subject><temporal>#{@temporal}</temporal></subject>
|
84
|
-
<subject><titleInfo><title>#{@s_title}</title></titleInfo></subject>
|
85
|
-
<subject><topic>#{@topic}</topic></subject>
|
86
|
-
</mods>"
|
87
|
-
@smods_rec = Stanford::Mods::Record.new
|
88
|
-
@smods_rec.from_str(m)
|
89
|
-
@ng_mods = Nokogiri::XML(m)
|
90
|
-
m_no_subject = "<mods #{@ns_decl}><note>notit</note></mods>"
|
91
|
-
@ng_mods_no_subject = Nokogiri::XML(m_no_subject)
|
92
|
-
end
|
93
|
-
it "should be nil if there are no values in the MODS" do
|
94
|
-
m = "<mods #{@ns_decl}></mods>"
|
95
|
-
@smods_rec = Stanford::Mods::Record.new
|
96
|
-
@smods_rec.from_str(m)
|
97
|
-
@smods_rec.topic_search.should == nil
|
98
|
-
end
|
99
|
-
it "should contain subject <topic> subelement data" do
|
100
|
-
@smods_rec.topic_search.should include(@topic)
|
101
|
-
end
|
102
|
-
it "should contain top level <genre> element data" do
|
103
|
-
@smods_rec.topic_search.should include(@genre)
|
104
|
-
end
|
105
|
-
it "should not contain other subject element data" do
|
106
|
-
@smods_rec.topic_search.should_not include(@cart_coord)
|
107
|
-
@smods_rec.topic_search.should_not include(@s_genre)
|
108
|
-
@smods_rec.topic_search.should_not include(@geo)
|
109
|
-
@smods_rec.topic_search.should_not include(@geo_code)
|
110
|
-
@smods_rec.topic_search.should_not include(@hier_geo_country)
|
111
|
-
@smods_rec.topic_search.should_not include(@s_name)
|
112
|
-
@smods_rec.topic_search.should_not include(@occupation)
|
113
|
-
@smods_rec.topic_search.should_not include(@temporal)
|
114
|
-
@smods_rec.topic_search.should_not include(@s_title)
|
115
|
-
end
|
116
|
-
it "should not be nil if there are only subject/topic elements (no <genre>)" do
|
117
|
-
m = "<mods #{@ns_decl}><subject><topic>#{@topic}</topic></subject></mods>"
|
118
|
-
@smods_rec = Stanford::Mods::Record.new
|
119
|
-
@smods_rec.from_str(m)
|
120
|
-
@smods_rec.topic_search.should == [@topic]
|
121
|
-
end
|
122
|
-
it "should not be nil if there are only <genre> elements (no subject/topic elements)" do
|
123
|
-
m = "<mods #{@ns_decl}><genre>#{@genre}</genre></mods>"
|
124
|
-
@smods_rec = Stanford::Mods::Record.new
|
125
|
-
@smods_rec.from_str(m)
|
126
|
-
@smods_rec.topic_search.should == [@genre]
|
127
|
-
end
|
128
|
-
context "topic subelement" do
|
129
|
-
it "should have a separate value for each topic element" do
|
130
|
-
m = "<mods #{@ns_decl}>
|
131
|
-
<subject>
|
132
|
-
<topic>first</topic>
|
133
|
-
<topic>second</topic>
|
134
|
-
</subject>
|
135
|
-
<subject><topic>third</topic></subject>
|
136
|
-
</mods>"
|
137
|
-
@smods_rec = Stanford::Mods::Record.new
|
138
|
-
@smods_rec.from_str(m)
|
139
|
-
@smods_rec.topic_search.should == ['first', 'second', 'third']
|
140
|
-
end
|
141
|
-
it "should be nil if there are only empty values in the MODS" do
|
142
|
-
m = "<mods #{@ns_decl}><subject><topic/></subject><note>notit</note></mods>"
|
143
|
-
@smods_rec = Stanford::Mods::Record.new
|
144
|
-
@smods_rec.from_str(m)
|
145
|
-
@smods_rec.topic_search.should == nil
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end # topic_search
|
149
|
-
|
150
|
-
context "geographic_search" do
|
151
|
-
it "should call sw_geographic_search (from stanford-mods gem)" do
|
152
|
-
m = "<mods #{@ns_decl}><subject><geographic>#{@geo}</geographic></subject></mods>"
|
153
|
-
@smods_rec = Stanford::Mods::Record.new
|
154
|
-
@smods_rec.from_str(m)
|
155
|
-
@smods_rec.should_receive(:sw_geographic_search)
|
156
|
-
@smods_rec.geographic_search
|
157
|
-
end
|
158
|
-
it "should log an info message when it encounters a geographicCode encoding it doesn't translate" do
|
159
|
-
m = "<mods #{@ns_decl}><subject><geographicCode authority='iso3166'>ca</geographicCode></subject></mods>"
|
160
|
-
@smods_rec = Stanford::Mods::Record.new
|
161
|
-
@smods_rec.from_str(m)
|
162
|
-
@smods_rec.sw_logger.should_receive(:info).with(/#{@fake_druid} has subject geographicCode element with untranslated encoding \(iso3166\): <geographicCode authority=.*>ca<\/geographicCode>/)
|
163
|
-
@smods_rec.geographic_search
|
164
|
-
end
|
165
|
-
end # geographic_search
|
166
|
-
|
167
|
-
context "subject_other_search" do
|
168
|
-
|
169
|
-
it "should call sw_subject_names (from stanford-mods gem)" do
|
170
|
-
@smods_rec.should_receive(:sw_subject_names)
|
171
|
-
@smods_rec.subject_other_search
|
172
|
-
end
|
173
|
-
it "should call sw_subject_titles (from stanford-mods gem)" do
|
174
|
-
@smods_rec.should_receive(:sw_subject_titles)
|
175
|
-
@smods_rec.subject_other_search
|
176
|
-
end
|
177
|
-
it "should be nil if there are no values in the MODS" do
|
178
|
-
m = "<mods #{@ns_decl}></mods>"
|
179
|
-
@smods_rec = Stanford::Mods::Record.new
|
180
|
-
@smods_rec.from_str(m)
|
181
|
-
@smods_rec.subject_other_search.should == nil
|
182
|
-
end
|
183
|
-
it "should contain subject <name> SUBelement data" do
|
184
|
-
@smods_rec.subject_other_search.should include(@s_name)
|
185
|
-
end
|
186
|
-
it "should contain subject <occupation> subelement data" do
|
187
|
-
@smods_rec.subject_other_search.should include(@occupation)
|
188
|
-
end
|
189
|
-
it "should contain subject <titleInfo> SUBelement data" do
|
190
|
-
@smods_rec.subject_other_search.should include(@s_title)
|
191
|
-
end
|
192
|
-
it "should not contain other subject element data" do
|
193
|
-
@smods_rec.subject_other_search.should_not include(@genre)
|
194
|
-
@smods_rec.subject_other_search.should_not include(@cart_coord)
|
195
|
-
@smods_rec.subject_other_search.should_not include(@s_genre)
|
196
|
-
@smods_rec.subject_other_search.should_not include(@geo)
|
197
|
-
@smods_rec.subject_other_search.should_not include(@geo_code)
|
198
|
-
@smods_rec.subject_other_search.should_not include(@hier_geo_country)
|
199
|
-
@smods_rec.subject_other_search.should_not include(@temporal)
|
200
|
-
@smods_rec.subject_other_search.should_not include(@topic)
|
201
|
-
end
|
202
|
-
it "should not be nil if there are only subject/name elements" do
|
203
|
-
m = "<mods #{@ns_decl}><subject><name><namePart>#{@s_name}</namePart></name></subject></mods>"
|
204
|
-
@smods_rec = Stanford::Mods::Record.new
|
205
|
-
@smods_rec.from_str(m)
|
206
|
-
@smods_rec.subject_other_search.should == [@s_name]
|
207
|
-
end
|
208
|
-
it "should not be nil if there are only subject/occupation elements" do
|
209
|
-
m = "<mods #{@ns_decl}><subject><occupation>#{@occupation}</occupation></subject></mods>"
|
210
|
-
@smods_rec = Stanford::Mods::Record.new
|
211
|
-
@smods_rec.from_str(m)
|
212
|
-
|
213
|
-
|
214
|
-
@smods_rec. subject_other_search.should == [@occupation]
|
215
|
-
end
|
216
|
-
it "should not be nil if there are only subject/titleInfo elements" do
|
217
|
-
m = "<mods #{@ns_decl}><subject><titleInfo><title>#{@s_title}</title></titleInfo></subject></mods>"
|
218
|
-
@smods_rec = Stanford::Mods::Record.new
|
219
|
-
@smods_rec.from_str(m)
|
220
|
-
|
221
|
-
|
222
|
-
@smods_rec. subject_other_search.should == [@s_title]
|
223
|
-
end
|
224
|
-
context "occupation subelement" do
|
225
|
-
it "should have a separate value for each occupation element" do
|
226
|
-
m = "<mods #{@ns_decl}>
|
227
|
-
<subject>
|
228
|
-
<occupation>first</occupation>
|
229
|
-
<occupation>second</occupation>
|
230
|
-
</subject>
|
231
|
-
<subject><occupation>third</occupation></subject>
|
232
|
-
</mods>"
|
233
|
-
@smods_rec = Stanford::Mods::Record.new
|
234
|
-
@smods_rec.from_str(m)
|
235
|
-
|
236
|
-
@smods_rec.subject_other_search.should == ['first', 'second', 'third']
|
237
|
-
end
|
238
|
-
it "should be nil if there are only empty values in the MODS" do
|
239
|
-
m = "<mods #{@ns_decl}><subject><occupation/></subject><note>notit</note></mods>"
|
240
|
-
@smods_rec = Stanford::Mods::Record.new
|
241
|
-
@smods_rec.from_str(m)
|
242
|
-
|
243
|
-
@smods_rec. subject_other_search.should == nil
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end # subject_other_search
|
247
|
-
|
248
|
-
context "subject_other_subvy_search" do
|
249
|
-
it "should be nil if there are no values in the MODS" do
|
250
|
-
@smods_rec = Stanford::Mods::Record.new
|
251
|
-
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
252
|
-
|
253
|
-
@smods_rec. subject_other_subvy_search.should == nil
|
254
|
-
end
|
255
|
-
it "should contain subject <temporal> subelement data" do
|
256
|
-
@smods_rec.subject_other_subvy_search.should include(@temporal)
|
257
|
-
end
|
258
|
-
it "should contain subject <genre> SUBelement data" do
|
259
|
-
@smods_rec.subject_other_subvy_search.should include(@s_genre)
|
260
|
-
end
|
261
|
-
it "should not contain other subject element data" do
|
262
|
-
@smods_rec.subject_other_subvy_search.should_not include(@genre)
|
263
|
-
@smods_rec.subject_other_subvy_search.should_not include(@cart_coord)
|
264
|
-
@smods_rec.subject_other_subvy_search.should_not include(@geo)
|
265
|
-
@smods_rec.subject_other_subvy_search.should_not include(@geo_code)
|
266
|
-
@smods_rec.subject_other_subvy_search.should_not include(@hier_geo_country)
|
267
|
-
@smods_rec.subject_other_subvy_search.should_not include(@s_name)
|
268
|
-
@smods_rec.subject_other_subvy_search.should_not include(@occupation)
|
269
|
-
@smods_rec.subject_other_subvy_search.should_not include(@topic)
|
270
|
-
@smods_rec.subject_other_subvy_search.should_not include(@s_title)
|
271
|
-
end
|
272
|
-
it "should not be nil if there are only subject/temporal elements (no subject/genre)" do
|
273
|
-
m = "<mods #{@ns_decl}><subject><temporal>#{@temporal}</temporal></subject></mods>"
|
274
|
-
@smods_rec = Stanford::Mods::Record.new
|
275
|
-
@smods_rec.from_str(m)
|
276
|
-
|
277
|
-
|
278
|
-
@smods_rec. subject_other_subvy_search.should == [@temporal]
|
279
|
-
end
|
280
|
-
it "should not be nil if there are only subject/genre elements (no subject/temporal)" do
|
281
|
-
m = "<mods #{@ns_decl}><subject><genre>#{@s_genre}</genre></subject></mods>"
|
282
|
-
@smods_rec = Stanford::Mods::Record.new
|
283
|
-
@smods_rec.from_str(m)
|
284
|
-
|
285
|
-
|
286
|
-
@smods_rec. subject_other_subvy_search.should == [@s_genre]
|
287
|
-
end
|
288
|
-
context "temporal subelement" do
|
289
|
-
it "should have a separate value for each temporal element" do
|
290
|
-
m = "<mods #{@ns_decl}>
|
291
|
-
<subject>
|
292
|
-
<temporal>1890-1910</temporal>
|
293
|
-
<temporal>20th century</temporal>
|
294
|
-
</subject>
|
295
|
-
<subject><temporal>another</temporal></subject>
|
296
|
-
</mods>"
|
297
|
-
@smods_rec = Stanford::Mods::Record.new
|
298
|
-
@smods_rec.from_str(m)
|
299
|
-
|
300
|
-
@smods_rec. subject_other_subvy_search.should == ['1890-1910', '20th century', 'another']
|
301
|
-
end
|
302
|
-
it "should log an info message when it encounters an encoding it doesn't translate" do
|
303
|
-
m = "<mods #{@ns_decl}><subject><temporal encoding='iso8601'>197505</temporal></subject></mods>"
|
304
|
-
@smods_rec = Stanford::Mods::Record.new
|
305
|
-
@smods_rec.from_str(m)
|
306
|
-
|
307
|
-
@smods_rec.sw_logger.should_receive(:info).with(/#{@fake_druid} has subject temporal element with untranslated encoding: <temporal encoding=.*>197505<\/temporal>/)
|
308
|
-
@smods_rec.subject_other_subvy_search
|
309
|
-
end
|
310
|
-
it "should be nil if there are only empty values in the MODS" do
|
311
|
-
m = "<mods #{@ns_decl}><subject><temporal/></subject><note>notit</note></mods>"
|
312
|
-
@smods_rec = Stanford::Mods::Record.new
|
313
|
-
@smods_rec.from_str(m)
|
314
|
-
|
315
|
-
@smods_rec. subject_other_subvy_search.should == nil
|
316
|
-
end
|
317
|
-
end
|
318
|
-
context "genre subelement" do
|
319
|
-
it "should have a separate value for each genre element" do
|
320
|
-
m = "<mods #{@ns_decl}>
|
321
|
-
<subject>
|
322
|
-
<genre>first</genre>
|
323
|
-
<genre>second</genre>
|
324
|
-
</subject>
|
325
|
-
<subject><genre>third</genre></subject>
|
326
|
-
</mods>"
|
327
|
-
@smods_rec = Stanford::Mods::Record.new
|
328
|
-
@smods_rec.from_str(m)
|
329
|
-
|
330
|
-
@smods_rec. subject_other_subvy_search.should == ['first', 'second', 'third']
|
331
|
-
end
|
332
|
-
it "should be nil if there are only empty values in the MODS" do
|
333
|
-
m = "<mods #{@ns_decl}><subject><genre/></subject><note>notit</note></mods>"
|
334
|
-
@smods_rec = Stanford::Mods::Record.new
|
335
|
-
@smods_rec.from_str(m)
|
336
|
-
|
337
|
-
@smods_rec. subject_other_subvy_search.should == nil
|
338
|
-
end
|
339
|
-
end
|
340
|
-
end # subject_other_subvy_search
|
341
|
-
|
342
|
-
context "subject_all_search" do
|
343
|
-
it "should be nil if there are no values in the MODS" do
|
344
|
-
@smods_rec = Stanford::Mods::Record.new
|
345
|
-
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
346
|
-
|
347
|
-
@smods_rec. subject_all_search.should == nil
|
348
|
-
end
|
349
|
-
it "should contain top level <genre> element data" do
|
350
|
-
@smods_rec.subject_all_search.should include(@genre)
|
351
|
-
end
|
352
|
-
it "should not contain cartographic sub element" do
|
353
|
-
@smods_rec.subject_all_search.should_not include(@cart_coord)
|
354
|
-
end
|
355
|
-
it "should not include codes from hierarchicalGeographic sub element" do
|
356
|
-
@smods_rec.subject_all_search.should_not include(@geo_code)
|
357
|
-
end
|
358
|
-
it "should contain all other subject subelement data" do
|
359
|
-
@smods_rec.subject_all_search.should include(@s_genre)
|
360
|
-
@smods_rec.subject_all_search.should include(@geo)
|
361
|
-
@smods_rec.subject_all_search.should include(@hier_geo_country)
|
362
|
-
@smods_rec.subject_all_search.should include(@s_name)
|
363
|
-
@smods_rec.subject_all_search.should include(@occupation)
|
364
|
-
@smods_rec.subject_all_search.should include(@temporal)
|
365
|
-
@smods_rec.subject_all_search.should include(@s_title)
|
366
|
-
@smods_rec.subject_all_search.should include(@topic)
|
367
|
-
end
|
368
|
-
end # subject_all_search
|
369
|
-
end # subject search fields
|
370
|
-
|
371
|
-
context "facet fields" do
|
372
|
-
context "topic_facet" do
|
373
|
-
it "should include topic subelement" do
|
374
|
-
@smods_rec.topic_facet.should include(@topic)
|
375
|
-
end
|
376
|
-
it "should include sw_subject_names" do
|
377
|
-
@smods_rec.topic_facet.should include(@s_name)
|
378
|
-
end
|
379
|
-
it "should include sw_subject_titles" do
|
380
|
-
@smods_rec.topic_facet.should include(@s_title)
|
381
|
-
end
|
382
|
-
it "should include occupation subelement" do
|
383
|
-
@smods_rec.topic_facet.should include(@occupation)
|
384
|
-
end
|
385
|
-
it "should have the trailing punctuation removed" do
|
386
|
-
m = "<mods #{@ns_decl}><subject>
|
387
|
-
<topic>comma,</topic>
|
388
|
-
<occupation>semicolon;</occupation>
|
389
|
-
<titleInfo><title>backslash \\</title></titleInfo>
|
390
|
-
<name><namePart>internal, punct;uation</namePart></name>
|
391
|
-
</subject></mods>"
|
392
|
-
@smods_rec = Stanford::Mods::Record.new
|
393
|
-
@smods_rec.from_str(m)
|
394
|
-
|
395
|
-
|
396
|
-
@smods_rec. topic_facet.should include('comma')
|
397
|
-
@smods_rec. topic_facet.should include('semicolon')
|
398
|
-
@smods_rec. topic_facet.should include('backslash')
|
399
|
-
@smods_rec. topic_facet.should include('internal, punct;uation')
|
400
|
-
end
|
401
|
-
it "should be nil if there are no values" do
|
402
|
-
@smods_rec = Stanford::Mods::Record.new
|
403
|
-
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
404
|
-
@smods_rec. topic_facet.should == nil
|
405
|
-
end
|
406
|
-
end
|
407
|
-
context "geographic_facet" do
|
408
|
-
it "should call geographic_search" do
|
409
|
-
@smods_rec.should_receive(:geographic_search)
|
410
|
-
@smods_rec.geographic_facet
|
411
|
-
end
|
412
|
-
it "should be like geographic_search with the trailing punctuation (and preceding spaces) removed" do
|
413
|
-
m = "<mods #{@ns_decl}><subject>
|
414
|
-
<geographic>comma,</geographic>
|
415
|
-
<geographic>semicolon;</geographic>
|
416
|
-
<geographic>backslash \\</geographic>
|
417
|
-
<geographic>internal, punct;uation</geographic>
|
418
|
-
</subject></mods>"
|
419
|
-
@smods_rec = Stanford::Mods::Record.new
|
420
|
-
@smods_rec.from_str(m)
|
421
|
-
|
422
|
-
|
423
|
-
@smods_rec. geographic_facet.should include('comma')
|
424
|
-
@smods_rec. geographic_facet.should include('semicolon')
|
425
|
-
@smods_rec. geographic_facet.should include('backslash')
|
426
|
-
@smods_rec. geographic_facet.should include('internal, punct;uation')
|
427
|
-
end
|
428
|
-
it "should be nil if there are no values" do
|
429
|
-
@smods_rec = Stanford::Mods::Record.new
|
430
|
-
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
431
|
-
@smods_rec. geographic_facet.should == nil
|
432
|
-
end
|
433
|
-
end
|
434
|
-
context "era_facet" do
|
435
|
-
it "should be temporal subelement with the trailing punctuation removed" do
|
436
|
-
m = "<mods #{@ns_decl}><subject>
|
437
|
-
<temporal>comma,</temporal>
|
438
|
-
<temporal>semicolon;</temporal>
|
439
|
-
<temporal>backslash \\</temporal>
|
440
|
-
<temporal>internal, punct;uation</temporal>
|
441
|
-
</subject></mods>"
|
442
|
-
@smods_rec = Stanford::Mods::Record.new
|
443
|
-
@smods_rec.from_str(m)
|
444
|
-
|
445
|
-
|
446
|
-
@smods_rec. era_facet.should include('comma')
|
447
|
-
@smods_rec. era_facet.should include('semicolon')
|
448
|
-
@smods_rec. era_facet.should include('backslash')
|
449
|
-
@smods_rec. era_facet.should include('internal, punct;uation')
|
450
|
-
end
|
451
|
-
it "should be nil if there are no values" do
|
452
|
-
@smods_rec = Stanford::Mods::Record.new
|
453
|
-
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
454
|
-
@smods_rec. era_facet.should == nil
|
455
|
-
end
|
456
|
-
|
457
|
-
end # subject facet fields
|
458
|
-
context "pub_dates" do
|
459
|
-
it "should choose the first date" do
|
460
|
-
m = "<mods #{@ns_decl}><originInfo>
|
461
|
-
<dateCreated>1904</dateCreated>
|
462
|
-
<dateCreated>1904</dateCreated>
|
463
|
-
<dateIssued>1906</dateIssued>
|
464
|
-
|
465
|
-
</originInfo></mods>"
|
466
|
-
@smods_rec = Stanford::Mods::Record.new
|
467
|
-
@smods_rec.from_str(m)
|
468
|
-
@smods_rec.pub_dates.should == ['1906','1904','1904']
|
469
|
-
end
|
470
|
-
end
|
471
|
-
end # context sw subject methods
|
472
|
-
context "pub_date" do
|
473
|
-
it "should choose the first date" do
|
474
|
-
m = "<mods #{@ns_decl}><originInfo>
|
475
|
-
<dateCreated>1904</dateCreated>
|
476
|
-
</originInfo></mods>"
|
477
|
-
@smods_rec = Stanford::Mods::Record.new
|
478
|
-
@smods_rec.from_str(m)
|
479
|
-
@smods_rec.pub_date.should == '1904'
|
480
|
-
end
|
481
|
-
it "should parse a date" do
|
482
|
-
m = "<mods #{@ns_decl}><originInfo>
|
483
|
-
<dateCreated>Aug. 3rd, 1886</dateCreated>
|
484
|
-
</originInfo></mods>"
|
485
|
-
@smods_rec = Stanford::Mods::Record.new
|
486
|
-
@smods_rec.from_str(m)
|
487
|
-
@smods_rec.pub_date.should == '1886'
|
488
|
-
end
|
489
|
-
it "should remove question marks and brackets" do
|
490
|
-
m = "<mods #{@ns_decl}><originInfo>
|
491
|
-
<dateCreated>Aug. 3rd, [18]86?</dateCreated>
|
492
|
-
</originInfo></mods>"
|
493
|
-
@smods_rec = Stanford::Mods::Record.new
|
494
|
-
@smods_rec.from_str(m)
|
495
|
-
@smods_rec.pub_date.should == '1886'
|
496
|
-
end
|
497
|
-
it 'should handle an s after the decade' do
|
498
|
-
m = "<mods #{@ns_decl}><originInfo>
|
499
|
-
<dateCreated>early 1890s</dateCreated>
|
500
|
-
</originInfo></mods>"
|
501
|
-
@smods_rec = Stanford::Mods::Record.new
|
502
|
-
@smods_rec.from_str(m)
|
503
|
-
@smods_rec.pub_date.should == '1890'
|
504
|
-
end
|
505
|
-
it 'should choose a date ending with CE if there are multiple dates' do
|
506
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>7192 AM (li-Adam) / 1684 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
507
|
-
@smods_rec = Stanford::Mods::Record.new
|
508
|
-
@smods_rec.from_str(m)
|
509
|
-
@smods_rec.pub_date.should == '1684'
|
510
|
-
end
|
511
|
-
it 'should handle hyphenated range dates' do
|
512
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>1282 AH / 1865-6 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
513
|
-
@smods_rec = Stanford::Mods::Record.new
|
514
|
-
@smods_rec.from_str(m)
|
515
|
-
@smods_rec.pub_date.should == '1865'
|
516
|
-
end
|
517
|
-
it 'should work with multiple 4 digit dates' do
|
518
|
-
m = "<mods #{@ns_decl}><originInfo><dateCreated>Text dated June 4, 1594; miniatures added by 1596</dateCreated></originInfo>"
|
519
|
-
@smods_rec = Stanford::Mods::Record.new
|
520
|
-
@smods_rec.from_str(m)
|
521
|
-
@smods_rec.pub_date.should == '1594'
|
522
|
-
end
|
523
|
-
it 'should work on 3 digit BC dates' do
|
524
|
-
m = "<mods #{@ns_decl}><originInfo><dateCreated>300 B.C.</dateCreated></originInfo>"
|
525
|
-
@smods_rec = Stanford::Mods::Record.new
|
526
|
-
@smods_rec.from_str(m)
|
527
|
-
@smods_rec.pub_year.should == '-700'
|
528
|
-
@smods_rec.pub_date.should == '-700'
|
529
|
-
@smods_rec.pub_date_sort.should =='-700'
|
530
|
-
@smods_rec.pub_date_facet.should == '300 B.C.'
|
531
|
-
end
|
532
|
-
it 'should handle century based dates' do
|
533
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>13th century AH / 19th CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
534
|
-
@smods_rec = Stanford::Mods::Record.new
|
535
|
-
@smods_rec.from_str(m)
|
536
|
-
@smods_rec.pub_date_facet.should == '19th century'
|
537
|
-
@smods_rec.pub_date_sort.should =='1800'
|
538
|
-
@smods_rec.pub_date.should == '18--'
|
539
|
-
end
|
540
|
-
it 'should handle multiple CE dates' do
|
541
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>6 Dhu al-Hijjah 923 AH / 1517 CE -- 7 Rabi I 924 AH / 1518 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
542
|
-
@smods_rec = Stanford::Mods::Record.new
|
543
|
-
@smods_rec.from_str(m)
|
544
|
-
@smods_rec.pub_date.should == '1517'
|
545
|
-
@smods_rec.pub_date_sort.should =='1517'
|
546
|
-
@smods_rec.pub_date_facet.should == '1517'
|
547
|
-
end
|
548
|
-
it 'should handle this case from walters' do
|
549
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>Late 14th or early 15th century CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
550
|
-
@smods_rec = Stanford::Mods::Record.new
|
551
|
-
@smods_rec.from_str(m)
|
552
|
-
@smods_rec.pub_date.should == '14--'
|
553
|
-
@smods_rec.pub_date_sort.should =='1400'
|
554
|
-
@smods_rec.pub_date_facet.should == '15th century'
|
555
|
-
end
|
556
|
-
it 'should work on 3 digit dates' do
|
557
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>966 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
558
|
-
@smods_rec = Stanford::Mods::Record.new
|
559
|
-
@smods_rec.from_str(m)
|
560
|
-
@smods_rec.pub_date.should == '966'
|
561
|
-
@smods_rec.pub_date_sort.should =='0966'
|
562
|
-
@smods_rec.pub_date_facet.should == '966'
|
563
|
-
end
|
564
|
-
it 'should work on 3 digit dates' do
|
565
|
-
m = "<mods #{@ns_decl}><originInfo><dateIssued>3rd century AH / 9th CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
566
|
-
@smods_rec = Stanford::Mods::Record.new
|
567
|
-
@smods_rec.from_str(m)
|
568
|
-
|
569
|
-
@smods_rec.pub_date.should == '8--'
|
570
|
-
@smods_rec.pub_date_sort.should =='0800'
|
571
|
-
@smods_rec.pub_date_facet.should == '9th century'
|
572
|
-
end
|
573
|
-
|
574
|
-
context "dates with u notation (e.g., 198u)" do
|
575
|
-
context "single digit u notation (e.g., 198u)" do
|
576
|
-
before(:each) do
|
577
|
-
m = "<mods #{@ns_decl}>
|
578
|
-
<originInfo>
|
579
|
-
<dateIssued encoding=\"marc\" point=\"start\" keyDate=\"yes\">198u</dateIssued>
|
580
|
-
<dateIssued encoding=\"marc\" point=\"end\">9999</dateIssued>
|
581
|
-
</originInfo></mods>"
|
582
|
-
@smods_rec = Stanford::Mods::Record.new
|
583
|
-
@smods_rec.from_str(m)
|
584
|
-
end
|
585
|
-
it "recognizes single digit u notation" do
|
586
|
-
dates = ["198u", "9999"]
|
587
|
-
uDate = @smods_rec.get_u_year dates
|
588
|
-
uDate.should eql("1980")
|
589
|
-
end
|
590
|
-
it 'pub_date: 198u = 1980' do
|
591
|
-
@smods_rec.pub_date.should == '1980'
|
592
|
-
end
|
593
|
-
it "pub_date_sort: 198u = 1980" do
|
594
|
-
@smods_rec.pub_date_sort.should =='1980'
|
595
|
-
end
|
596
|
-
it "pub_date_facet: 198u = 1980" do
|
597
|
-
@smods_rec.pub_date_facet.should == '1980'
|
598
|
-
end
|
599
|
-
end
|
600
|
-
context "double digit u notation (e.g., 19uu)" do
|
601
|
-
before(:each) do
|
602
|
-
m = "<mods #{@ns_decl}>
|
603
|
-
<originInfo>
|
604
|
-
<dateIssued encoding=\"marc\" point=\"start\" keyDate=\"yes\">19uu</dateIssued>
|
605
|
-
<dateIssued encoding=\"marc\" point=\"end\">9999</dateIssued>
|
606
|
-
</originInfo></mods>"
|
607
|
-
@smods_rec = Stanford::Mods::Record.new
|
608
|
-
@smods_rec.from_str(m)
|
609
|
-
end
|
610
|
-
it "recognizes double digit u notation" do
|
611
|
-
dates = ["19uu", "9999"]
|
612
|
-
uDate = @smods_rec.get_u_year dates
|
613
|
-
uDate.should eql("19--")
|
614
|
-
end
|
615
|
-
it 'pub_date: 19uu = 19--' do
|
616
|
-
@smods_rec.pub_date.should == '19--'
|
617
|
-
end
|
618
|
-
it "pub_date_sort: 19uu = 1900" do
|
619
|
-
@smods_rec.pub_date_sort.should =='1900'
|
620
|
-
end
|
621
|
-
it "pub_date_facet: 19uu = 20th century" do
|
622
|
-
@smods_rec.pub_date_facet.should == '20th century'
|
623
|
-
end
|
624
|
-
end
|
625
|
-
end
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
end #context pub_dates
|
632
|
-
context 'pub_date_sort' do
|
633
|
-
before :each do
|
634
|
-
m = "<mods #{@ns_decl}><originInfo>
|
635
|
-
<dateCreated>Aug. 3rd, 1886</dateCreated>
|
636
|
-
</originInfo></mods>"
|
637
|
-
@smods_rec = Stanford::Mods::Record.new
|
638
|
-
@smods_rec.from_str(m)
|
639
|
-
|
640
|
-
end
|
641
|
-
it 'should work on normal dates' do
|
642
|
-
@smods_rec.stub(:pub_date).and_return('1945')
|
643
|
-
@smods_rec.pub_date_sort.should == '1945'
|
644
|
-
end
|
645
|
-
it 'should work on 3 digit dates' do
|
646
|
-
@smods_rec.stub(:pub_date).and_return('945')
|
647
|
-
@smods_rec.pub_date_sort.should == '0945'
|
648
|
-
end
|
649
|
-
it 'should work on century dates' do
|
650
|
-
@smods_rec.stub(:pub_date).and_return('16--')
|
651
|
-
@smods_rec.pub_date_sort.should == '1600'
|
652
|
-
end
|
653
|
-
it 'should work on 3 digit century dates' do
|
654
|
-
@smods_rec.stub(:pub_date).and_return('9--')
|
655
|
-
@smods_rec.pub_date_sort.should == '0900'
|
656
|
-
end
|
657
|
-
end
|
658
|
-
|
659
|
-
context "format" do
|
660
|
-
it "should check genre as part of deciding format" do
|
661
|
-
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResouce><genre>thesis</genre></mods>"
|
662
|
-
@smods_rec = Stanford::Mods::Record.new
|
663
|
-
@smods_rec.from_str(m)
|
664
|
-
@smods_rec.format.should == ['Thesis']
|
665
|
-
end
|
666
|
-
it 'should work for datasets' do
|
667
|
-
m = "<mods #{@ns_decl}><typeOfResource>software, multimedia</typeOfResouce></mods>"
|
668
|
-
@smods_rec = Stanford::Mods::Record.new
|
669
|
-
@smods_rec.from_str(m)
|
670
|
-
@smods_rec.format.should == ['Computer File']
|
671
|
-
end
|
672
|
-
it 'should work for books' do
|
673
|
-
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResouce><originInfo><issuance>monographic</issueance></originInfo></mods>"
|
674
|
-
@smods_rec = Stanford::Mods::Record.new
|
675
|
-
@smods_rec.from_str(m)
|
676
|
-
@smods_rec.format.should == ['Book']
|
677
|
-
end
|
678
|
-
it "should work for a hydrus journal article" do
|
679
|
-
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResouce><genre>article</genre></mods>"
|
680
|
-
@smods_rec = Stanford::Mods::Record.new
|
681
|
-
@smods_rec.from_str(m)
|
682
|
-
@smods_rec.format.should == ['Journal/Periodical']
|
683
|
-
end
|
684
|
-
it "should choose the format" do
|
685
|
-
m = "<mods #{@ns_decl}><typeOfResource>still image</typeOfResouce></mods>"
|
686
|
-
@smods_rec = Stanford::Mods::Record.new
|
687
|
-
@smods_rec.from_str(m)
|
688
|
-
@smods_rec.format.should == ['Image']
|
689
|
-
end
|
690
|
-
# Student Project Reports: spec via email from Vitus, August 16, 2013
|
691
|
-
it "should give a format of Other for <genre>student project report</genre> and <typeOfResource>text</typeOfResouce>" do
|
692
|
-
m = "<mods #{@ns_decl}><genre>student project report</genre><typeOfResource>text</typeOfResouce></mods>"
|
693
|
-
@smods_rec = Stanford::Mods::Record.new
|
694
|
-
@smods_rec.from_str(m)
|
695
|
-
@smods_rec.format.should == ['Other']
|
696
|
-
end
|
697
|
-
# Hydrus mappings per GRYPHONDOR-207
|
698
|
-
it "should give a format of Computer File for <genre>game</genre> and <typeOfResource>software, multimedia</typeOfResouce>" do
|
699
|
-
m = "<mods #{@ns_decl}><genre>game</genre><typeOfResource>software, multimedia</typeOfResouce></mods>"
|
700
|
-
@smods_rec = Stanford::Mods::Record.new
|
701
|
-
@smods_rec.from_str(m)
|
702
|
-
@smods_rec.format.should == ['Computer File']
|
703
|
-
end
|
704
|
-
it "should give a format of Video for <genre>motion picture</genre> and <typeOfResource>moving image</typeOfResouce>" do
|
705
|
-
m = "<mods #{@ns_decl}><genre>motion picture</genre><typeOfResource>moving image</typeOfResouce></mods>"
|
706
|
-
@smods_rec = Stanford::Mods::Record.new
|
707
|
-
@smods_rec.from_str(m)
|
708
|
-
@smods_rec.format.should == ['Video']
|
709
|
-
end
|
710
|
-
it "should give a format of Sound Recording for <genre>sound</genre> and <typeOfResource>sound recording-nonmusical</typeOfResouce>" do
|
711
|
-
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording-nonmusical</typeOfResouce></mods>"
|
712
|
-
@smods_rec = Stanford::Mods::Record.new
|
713
|
-
@smods_rec.from_str(m)
|
714
|
-
@smods_rec.format.should == ['Sound Recording']
|
715
|
-
end
|
716
|
-
it "should give a format of Conference Proceedings for <genre>conference publication</genre> and <typeOfResource>text</typeOfResouce>" do
|
717
|
-
m = "<mods #{@ns_decl}><genre>conference publication</genre><typeOfResource>text</typeOfResouce></mods>"
|
718
|
-
@smods_rec = Stanford::Mods::Record.new
|
719
|
-
@smods_rec.from_str(m)
|
720
|
-
@smods_rec.format.should == ['Conference Proceedings']
|
721
|
-
end
|
722
|
-
it "should give a format of Book for <genre>technical report</genre> and <typeOfResource>text</typeOfResouce>" do
|
723
|
-
m = "<mods #{@ns_decl}><genre>technical report</genre><typeOfResource>text</typeOfResouce></mods>"
|
724
|
-
@smods_rec = Stanford::Mods::Record.new
|
725
|
-
@smods_rec.from_str(m)
|
726
|
-
@smods_rec.format.should == ['Book']
|
727
|
-
end
|
728
|
-
# end Hydrus mappings
|
729
|
-
it "should give a format of Music - Score for <typeOfResource>notated music</typeOfResouce>" do
|
730
|
-
m = "<mods #{@ns_decl}><typeOfResource>notated music</typeOfResouce></mods>"
|
731
|
-
@smods_rec = Stanford::Mods::Record.new
|
732
|
-
@smods_rec.from_str(m)
|
733
|
-
@smods_rec.format.should == ['Music - Score']
|
734
|
-
end
|
735
|
-
it "should return nothing if there is no format info" do
|
736
|
-
m = "<mods #{@ns_decl}><originInfo>
|
737
|
-
<dateCreated>1904</dateCreated>
|
738
|
-
</originInfo></mods>"
|
739
|
-
@smods_rec = Stanford::Mods::Record.new
|
740
|
-
@smods_rec.from_str(m)
|
741
|
-
@smods_rec.format.should == []
|
742
|
-
end
|
743
|
-
end#context format
|
744
|
-
context "pub_date_groups" do
|
745
|
-
it 'should generate the groups' do
|
746
|
-
m = "<mods #{@ns_decl}><originInfo>
|
747
|
-
<dateCreated>1904</dateCreated>
|
748
|
-
</originInfo></mods>"
|
749
|
-
@smods_rec = Stanford::Mods::Record.new
|
750
|
-
@smods_rec.from_str(m)
|
751
|
-
|
752
|
-
@smods_rec.pub_date_groups(1904).should == ['More than 50 years ago']
|
753
|
-
end
|
754
|
-
it 'should work for a modern date too' do
|
755
|
-
m = "<mods #{@ns_decl}><originInfo>
|
756
|
-
<dateCreated>1904</dateCreated>
|
757
|
-
</originInfo></mods>"
|
758
|
-
@smods_rec = Stanford::Mods::Record.new
|
759
|
-
@smods_rec.from_str(m)
|
760
|
-
@smods_rec.pub_date_groups(2013).should == ["This year"]
|
761
|
-
end
|
762
|
-
it 'should work ok given a nil date' do
|
763
|
-
m = "<mods #{@ns_decl}><originInfo>
|
764
|
-
<dateCreated>1904</dateCreated>
|
765
|
-
</originInfo></mods>"
|
766
|
-
@smods_rec = Stanford::Mods::Record.new
|
767
|
-
@smods_rec.from_str(m)
|
768
|
-
@smods_rec.pub_date_groups(nil).should == nil
|
769
|
-
end
|
770
|
-
end#context pub date groups
|
771
|
-
end
|