stanford-mods 1.3.4 → 1.4.0

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.
@@ -8,6 +8,7 @@ describe "Format fields (searchworks.rb)" do
8
8
  @ns_decl = "xmlns='#{Mods::MODS_NS}'"
9
9
  end
10
10
 
11
+ # @deprecated: this is no longer used in SW, Revs or Spotlight Jan 2016
11
12
  context "format" do
12
13
  context "Book:" do
13
14
  context "typeOfResource text," do
@@ -4,211 +4,228 @@ require 'spec_helper'
4
4
  describe "Date methods (searchworks.rb)" do
5
5
 
6
6
  let(:ns_decl) { "xmlns='#{Mods::MODS_NS}'" }
7
+ let(:smods_rec) { Stanford::Mods::Record.new }
7
8
 
8
- context "pub_dates" do
9
- it "puts dateIssued values before dateCreated values" do
9
+ # NOTE: walters dates are now:
10
+ # dateIssued: 1500 CE
11
+ # dateIssued: 15th century CE
12
+ # dateIssued: Ca. 1580 CE
13
+ # or
14
+ # dateCreated: 4 digit year
15
+ # and they should go in spec/fixtures searchworks_pub_date_data.rb
16
+
17
+
18
+ # @deprecated: need to switch to pub_year_int, or pub_date_sortable_string if you must have a string (why?)
19
+ context '#pub_date_sort (deprecated)' do
20
+ it 'four digits' do
21
+ allow(smods_rec).to receive(:pub_date).and_return('1945')
22
+ expect(smods_rec.pub_date_sort).to eq('1945')
23
+ end
24
+ it '3 digits' do
25
+ allow(smods_rec).to receive(:pub_date).and_return('945')
26
+ expect(smods_rec.pub_date_sort).to eq('0945')
27
+ end
28
+ it '16--' do
29
+ allow(smods_rec).to receive(:pub_date).and_return('16--')
30
+ expect(smods_rec.pub_date_sort).to eq('1600')
31
+ end
32
+ it '9--' do
33
+ allow(smods_rec).to receive(:pub_date).and_return('9--')
34
+ expect(smods_rec.pub_date_sort).to eq('0900')
35
+ end
36
+ it '1980 for 198u' do
37
+ m = "<mods #{ns_decl}>
38
+ <originInfo>
39
+ <dateIssued>198u</dateIssued>
40
+ </originInfo></mods>"
41
+ smods_rec.from_str(m)
42
+ expect(smods_rec.pub_date_sort).to eq('1980')
43
+ end
44
+ it '1900 for 19uu' do
45
+ m = "<mods #{ns_decl}>
46
+ <originInfo>
47
+ <dateIssued>19uu</dateIssued>
48
+ </originInfo></mods>"
49
+ smods_rec.from_str(m)
50
+ expect(smods_rec.pub_date_sort).to eq('1900')
51
+ end
52
+ it '-700 for 300 B.C.' do
10
53
  m = "<mods #{ns_decl}><originInfo>
11
- <dateCreated>1904</dateCreated>
12
- <dateCreated>1904</dateCreated>
13
- <dateIssued>1906</dateIssued>
54
+ <dateCreated>300 B.C.</dateCreated>
14
55
  </originInfo></mods>"
15
- smods_rec = Stanford::Mods::Record.new
16
56
  smods_rec.from_str(m)
17
- expect(smods_rec.pub_dates).to eq(['1906', '1904', '1904'])
57
+ expect(smods_rec.pub_date_sort).to eq('-700')
18
58
  end
19
- end
20
-
21
- context "pub_date" do
22
- let(:smods_rec) { Stanford::Mods::Record.new }
23
-
24
- it "uses dateCreated if no dateIssued" do
59
+ it '0966 for 966' do
25
60
  m = "<mods #{ns_decl}><originInfo>
26
- <dateCreated>1904</dateCreated>
61
+ <dateIssued>966</dateIssued>
27
62
  </originInfo></mods>"
28
63
  smods_rec.from_str(m)
29
- expect(smods_rec.pub_date).to eq('1904')
64
+ expect(smods_rec.pub_date_sort).to eq('0966')
30
65
  end
31
- it "parses date" do
66
+ it '0800 for 9th century' do
32
67
  m = "<mods #{ns_decl}><originInfo>
33
- <dateCreated>Aug. 3rd, 1886</dateCreated>
68
+ <dateIssued>9th century</dateIssued>
34
69
  </originInfo></mods>"
35
70
  smods_rec.from_str(m)
36
- expect(smods_rec.pub_date).to eq('1886')
71
+ expect(smods_rec.pub_date_sort).to eq('0800')
37
72
  end
38
- it "ignores question marks and square brackets" do
73
+ end
74
+
75
+ context '#pub_date_facet' do
76
+ it '1980 for 198u' do
77
+ m = "<mods #{ns_decl}>
78
+ <originInfo>
79
+ <dateIssued>198u</dateIssued>
80
+ </originInfo></mods>"
81
+ smods_rec.from_str(m)
82
+ expect(smods_rec.pub_date_facet).to eq('1980')
83
+ end
84
+ it '20th century for 19uu' do
85
+ m = "<mods #{ns_decl}>
86
+ <originInfo>
87
+ <dateIssued>19uu</dateIssued>
88
+ </originInfo></mods>"
89
+ smods_rec.from_str(m)
90
+ expect(smods_rec.pub_date_facet).to eq('20th century')
91
+ end
92
+ it '3000 B.C. for 300 B.C.' do
39
93
  m = "<mods #{ns_decl}><originInfo>
40
- <dateCreated>Aug. 3rd, [18]86?</dateCreated>
94
+ <dateCreated>300 B.C.</dateCreated>
41
95
  </originInfo></mods>"
42
96
  smods_rec.from_str(m)
43
- expect(smods_rec.pub_date).to eq('1886')
97
+ expect(smods_rec.pub_date_facet).to eq('300 B.C.')
44
98
  end
45
- it 'handles an s after the decade' do
99
+ it '966 for 966' do
46
100
  m = "<mods #{ns_decl}><originInfo>
47
- <dateCreated>early 1890s</dateCreated>
101
+ <dateIssued>966</dateIssued>
48
102
  </originInfo></mods>"
49
103
  smods_rec.from_str(m)
50
- expect(smods_rec.pub_date).to eq('1890')
104
+ expect(smods_rec.pub_date_facet).to eq('966')
51
105
  end
52
- it 'chooses date ending with CE if there are other choices' do
106
+ it '9th century for 9th century' do
53
107
  m = "<mods #{ns_decl}><originInfo>
54
- <dateIssued>7192 AM (li-Adam) / 1684 CE</dateIssued>
108
+ <dateIssued>9th century</dateIssued>
55
109
  </originInfo></mods>"
56
110
  smods_rec.from_str(m)
57
- expect(smods_rec.pub_date).to eq('1684')
111
+ expect(smods_rec.pub_date_facet).to eq('9th century')
58
112
  end
59
- it 'handles 1865-6 (hyphenated range dates)' do
113
+ end
114
+
115
+ context 'uses dateIssued with marc encoding for sorting and faceting' do
116
+ it '1860' do
60
117
  m = "<mods #{ns_decl}><originInfo>
61
- <dateIssued>1282 AH / 1865-6 CE</dateIssued>
118
+ <dateIssued>1844</dateIssued>
119
+ <dateIssued encoding=\"marc\">1860</dateIssued>
62
120
  </originInfo></mods>"
63
121
  smods_rec.from_str(m)
64
- expect(smods_rec.pub_date).to eq('1865')
122
+ expect(smods_rec.pub_date_sort).to eq('1860') # @deprecated: need to switch to pub_year_int, or pub_date_sortable_string if you must have a string (why?)
123
+ expect(smods_rec.pub_date_facet).to eq('1860')
65
124
  end
66
- it 'takes first occurring 4 digit date in string' do
125
+ it '186?' do
67
126
  m = "<mods #{ns_decl}><originInfo>
68
- <dateCreated>Text dated June 4, 1594; miniatures added by 1596</dateCreated>
127
+ <dateIssued>1844</dateIssued>
128
+ <dateIssued encoding=\"marc\">186?</dateIssued>
69
129
  </originInfo></mods>"
70
130
  smods_rec.from_str(m)
71
- expect(smods_rec.pub_date).to eq('1594')
131
+ expect(smods_rec.pub_date_sort).to eq('1860') # @deprecated: need to switch to pub_year_int, or pub_date_sortable_string if you must have a string (why?)
132
+ expect(smods_rec.pub_date_facet).to eq('1860')
72
133
  end
73
- it '3 digit BC dates are "B.C." in pub_date_facet and negative in pub_date_sort, pub_year, and pub_date' do
134
+ end
135
+
136
+ context '#pub_year (protected)' do
137
+ it '-700 for 300 B.C.' do
74
138
  m = "<mods #{ns_decl}><originInfo>
75
139
  <dateCreated>300 B.C.</dateCreated>
76
140
  </originInfo></mods>"
77
141
  smods_rec.from_str(m)
78
- expect(smods_rec.pub_year).to eq('-700')
79
- expect(smods_rec.pub_date).to eq('-700')
80
- expect(smods_rec.pub_date_sort).to eq('-700')
81
- expect(smods_rec.pub_date_facet).to eq('300 B.C.')
142
+ expect(smods_rec.send(:pub_year)).to eq('-700')
82
143
  end
83
- it '"19th CE" becomes 1800 for pub_date_sort, 19th centruy for pub_date_facet' do
144
+ end
145
+
146
+ context "#pub_date (protected)" do
147
+ it "uses dateCreated if no dateIssued" do
84
148
  m = "<mods #{ns_decl}><originInfo>
85
- <dateIssued>13th century AH / 19th CE</dateIssued>
149
+ <dateCreated>1904</dateCreated>
86
150
  </originInfo></mods>"
87
151
  smods_rec.from_str(m)
88
- expect(smods_rec.pub_date_facet).to eq('19th century')
89
- expect(smods_rec.pub_date_sort).to eq('1800')
90
- expect(smods_rec.pub_date).to eq('18--')
152
+ expect(smods_rec.send(:pub_date)).to eq('1904')
91
153
  end
92
- it 'takes first of multiple CE dates' do
154
+ it "gets year from text date" do
93
155
  m = "<mods #{ns_decl}><originInfo>
94
- <dateIssued>6 Dhu al-Hijjah 923 AH / 1517 CE -- 7 Rabi I 924 AH / 1518 CE</dateIssued>
156
+ <dateCreated>Aug. 3rd, 1886</dateCreated>
95
157
  </originInfo></mods>"
96
158
  smods_rec.from_str(m)
97
- expect(smods_rec.pub_date).to eq('1517')
98
- expect(smods_rec.pub_date_sort).to eq('1517')
99
- expect(smods_rec.pub_date_facet).to eq('1517')
159
+ expect(smods_rec.send(:pub_date)).to eq('1886')
100
160
  end
101
- it 'handles "Late 14th or early 15th century CE" from walters' do
161
+ it "ignores question marks and square brackets" do
102
162
  m = "<mods #{ns_decl}><originInfo>
103
- <dateIssued>Late 14th or early 15th century CE</dateIssued>
163
+ <dateCreated>Aug. 3rd, [18]86?</dateCreated>
104
164
  </originInfo></mods>"
105
165
  smods_rec.from_str(m)
106
- expect(smods_rec.pub_date).to eq('14--')
107
- expect(smods_rec.pub_date_sort).to eq('1400')
108
- expect(smods_rec.pub_date_facet).to eq('15th century')
166
+ expect(smods_rec.send(:pub_date)).to eq('1886')
109
167
  end
110
- it 'explicit 3 digit dates have correct pub_date_sort and pub_date_facet' do
168
+ it '1890 for 1890s' do
111
169
  m = "<mods #{ns_decl}><originInfo>
112
- <dateIssued>966 CE</dateIssued>
170
+ <dateCreated>early 1890s</dateCreated>
113
171
  </originInfo></mods>"
114
172
  smods_rec.from_str(m)
115
- expect(smods_rec.pub_date).to eq('966')
116
- expect(smods_rec.pub_date_sort).to eq('0966')
117
- expect(smods_rec.pub_date_facet).to eq('966')
173
+ expect(smods_rec.send(:pub_date)).to eq('1890')
118
174
  end
119
- it 'single digit century dates have correct pub_date_sort and pub_date_facet' do
175
+ it 'takes first occurring 4 digit date in string' do
120
176
  m = "<mods #{ns_decl}><originInfo>
121
- <dateIssued>3rd century AH / 9th CE</dateIssued>
177
+ <dateCreated>Text dated June 4, 1594; miniatures added by 1596</dateCreated>
122
178
  </originInfo></mods>"
123
179
  smods_rec.from_str(m)
124
- expect(smods_rec.pub_date).to eq('8--')
125
- expect(smods_rec.pub_date_sort).to eq('0800')
126
- expect(smods_rec.pub_date_facet).to eq('9th century')
180
+ expect(smods_rec.send(:pub_date)).to eq('1594')
127
181
  end
128
- it 'uses dateIssued without marc encoding for pub_date_display and the one with marc encoding for indexing, sorting and faceting' do
182
+ it '1980 for 198u' do
129
183
  m = "<mods #{ns_decl}><originInfo>
130
- <dateIssued>[186-?]</dateIssued><dateIssued encoding=\"marc\">1860</dateIssued>
184
+ <dateIssued >198u</dateIssued>
131
185
  </originInfo></mods>"
132
186
  smods_rec.from_str(m)
133
- expect(smods_rec.pub_date_display).to eq('[186-?]')
134
- expect(smods_rec.pub_date).to eq('1860')
135
- expect(smods_rec.pub_date_sort).to eq('1860')
136
- expect(smods_rec.pub_date_facet).to eq('1860')
187
+ expect(smods_rec.send(:pub_date)).to eq('1980')
188
+ end
189
+ it '19-- for 19uu' do
190
+ m = "<mods #{ns_decl}>
191
+ <originInfo>
192
+ <dateIssued>19uu</dateIssued>
193
+ </originInfo></mods>"
194
+ smods_rec.from_str(m)
195
+ expect(smods_rec.send(:pub_date)).to eq('19--')
137
196
  end
138
- it 'uses dateIssued without marc encoding for pub_date_display and the one with marc encoding for indexing, sorting and faceting' do
197
+ it '-700 for 300 B.C.' do
139
198
  m = "<mods #{ns_decl}><originInfo>
140
- <dateIssued>1860?]</dateIssued><dateIssued encoding=\"marc\">186?</dateIssued>
199
+ <dateCreated>300 B.C.</dateCreated>
141
200
  </originInfo></mods>"
142
201
  smods_rec.from_str(m)
143
- expect(smods_rec.pub_date_display).to eq('1860?]')
144
- expect(smods_rec.pub_date).to eq('1860')
145
- expect(smods_rec.pub_date_sort).to eq('1860')
146
- expect(smods_rec.pub_date_facet).to eq('1860')
202
+ expect(smods_rec.send(:pub_date)).to eq('-700')
147
203
  end
148
- end # pub_date
149
-
150
- context "dates with u notation (198u, 19uu)" do
151
- context "single digit u notation (198u)" do
152
- let(:smods_rec) do
153
- m = "<mods #{ns_decl}>
154
- <originInfo>
155
- <dateIssued encoding=\"marc\" point=\"start\" keyDate=\"yes\">198u</dateIssued>
156
- <dateIssued encoding=\"marc\" point=\"end\">9999</dateIssued>
157
- </originInfo></mods>"
158
- smr = Stanford::Mods::Record.new
159
- smr.from_str(m)
160
- smr
161
- end
162
- it 'pub_date: 198u = 1980' do
163
- expect(smods_rec.pub_date).to eq('1980')
164
- end
165
- it "pub_date_sort: 198u = 1980" do
166
- expect(smods_rec.pub_date_sort).to eq('1980')
167
- end
168
- it "pub_date_facet: 198u = 1980" do
169
- expect(smods_rec.pub_date_facet).to eq('1980')
170
- end
171
- end
172
- context "double digit u notation (19uu)" do
173
- let(:smods_rec) do
174
- m = "<mods #{ns_decl}>
175
- <originInfo>
176
- <dateIssued encoding=\"marc\" point=\"start\" keyDate=\"yes\">19uu</dateIssued>
177
- <dateIssued encoding=\"marc\" point=\"end\">9999</dateIssued>
178
- </originInfo></mods>"
179
- smr = Stanford::Mods::Record.new
180
- smr.from_str(m)
181
- smr
182
- end
183
- it 'pub_date: 19uu = 19--' do
184
- expect(smods_rec.pub_date).to eq('19--')
185
- end
186
- it "pub_date_sort: 19uu = 1900" do
187
- expect(smods_rec.pub_date_sort).to eq('1900')
188
- end
189
- it "pub_date_facet: 19uu = 20th century" do
190
- expect(smods_rec.pub_date_facet).to eq('20th century')
191
- end
192
- end
193
- end # u notation
194
-
195
- context 'pub_date_sort' do
196
- let(:smods_rec) { Stanford::Mods::Record.new }
197
- it 'four digits' do
198
- allow(smods_rec).to receive(:pub_date).and_return('1945')
199
- expect(smods_rec.pub_date_sort).to eq('1945')
200
- end
201
- it '3 digits' do
202
- allow(smods_rec).to receive(:pub_date).and_return('945')
203
- expect(smods_rec.pub_date_sort).to eq('0945')
204
+ it '966 for 966' do
205
+ m = "<mods #{ns_decl}><originInfo>
206
+ <dateIssued>966</dateIssued>
207
+ </originInfo></mods>"
208
+ smods_rec.from_str(m)
209
+ expect(smods_rec.send(:pub_date)).to eq('966')
204
210
  end
205
- it '16--' do
206
- allow(smods_rec).to receive(:pub_date).and_return('16--')
207
- expect(smods_rec.pub_date_sort).to eq('1600')
211
+ it '8-- for 9th century' do
212
+ m = "<mods #{ns_decl}><originInfo>
213
+ <dateIssued>9th century</dateIssued>
214
+ </originInfo></mods>"
215
+ smods_rec.from_str(m)
216
+ expect(smods_rec.send(:pub_date)).to eq('8--')
208
217
  end
209
- it '9--' do
210
- allow(smods_rec).to receive(:pub_date).and_return('9--')
211
- expect(smods_rec.pub_date_sort).to eq('0900')
218
+ end # pub_date
219
+ context "pub_dates (protected)" do
220
+ it "puts dateIssued values before dateCreated values" do
221
+ m = "<mods #{ns_decl}><originInfo>
222
+ <dateCreated>1904</dateCreated>
223
+ <dateCreated>1904</dateCreated>
224
+ <dateIssued>1906</dateIssued>
225
+ </originInfo></mods>"
226
+ smods_rec = Stanford::Mods::Record.new
227
+ smods_rec.from_str(m)
228
+ expect(smods_rec.send(:pub_dates)).to eq(['1906', '1904', '1904'])
212
229
  end
213
230
  end
214
231
 
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: 1.3.4
4
+ version: 1.4.0
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: 2016-01-05 00:00:00.000000000 Z
12
+ date: 2016-01-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mods