hydra-pbcore 1.0.0 → 1.1.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.
Files changed (49) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +6 -0
  3. data/lib/hydra-pbcore.rb +60 -1
  4. data/lib/hydra-pbcore/behaviors.rb +4 -2
  5. data/lib/hydra-pbcore/conversions.rb +88 -0
  6. data/lib/hydra-pbcore/datastream/{digital_document.rb → deprecated/digital_document.rb} +3 -2
  7. data/lib/hydra-pbcore/datastream/deprecated/document.rb +310 -0
  8. data/lib/hydra-pbcore/datastream/deprecated/instantiation.rb +261 -0
  9. data/lib/hydra-pbcore/datastream/document.rb +37 -139
  10. data/lib/hydra-pbcore/datastream/instantiation.rb +184 -223
  11. data/lib/hydra-pbcore/methods.rb +23 -2
  12. data/lib/hydra-pbcore/templates.rb +116 -0
  13. data/lib/hydra-pbcore/version.rb +1 -1
  14. data/spec/{digital_document_spec.rb → deprecated/digital_document_spec.rb} +6 -26
  15. data/spec/deprecated/document_spec.rb +282 -0
  16. data/spec/deprecated/instantiation_spec.rb +214 -0
  17. data/spec/document_spec.rb +71 -194
  18. data/spec/fixtures/converted_digital_document_rrhof_1904.xml +53 -0
  19. data/spec/fixtures/converted_digital_document_rrhof_2405.xml +46 -0
  20. data/spec/fixtures/converted_document_rrhof_2439.xml +19 -0
  21. data/spec/fixtures/converted_document_rrhof_524.xml +45 -0
  22. data/spec/fixtures/converted_instantiation_rrhof_1184.xml +39 -0
  23. data/spec/fixtures/converted_rrhof_524.xml +45 -0
  24. data/spec/fixtures/converted_rrhof_524_instantiation.xml +18 -0
  25. data/spec/fixtures/{pbcore_digital_document_template.xml → deprecated/pbcore_digital_document_template.xml} +0 -0
  26. data/spec/fixtures/{pbcore_document_template.xml → deprecated/pbcore_document_template.xml} +0 -0
  27. data/spec/fixtures/{pbcore_instantiation_template.xml → deprecated/pbcore_instantiation_template.xml} +0 -0
  28. data/spec/fixtures/{pbcore_solr_digital_document_template.xml → deprecated/pbcore_solr_digital_document_template.xml} +0 -0
  29. data/spec/fixtures/{pbcore_solr_document_template.xml → deprecated/pbcore_solr_document_template.xml} +0 -0
  30. data/spec/fixtures/{pbcore_solr_instantiation_template.xml → deprecated/pbcore_solr_instantiation_template.xml} +0 -0
  31. data/spec/fixtures/digital_instantiation.xml +56 -0
  32. data/spec/fixtures/digital_instantiation_solr.xml +1913 -0
  33. data/spec/fixtures/digital_instantiation_template.xml +33 -0
  34. data/spec/fixtures/document.xml +72 -0
  35. data/spec/fixtures/document_solr.xml +582 -0
  36. data/spec/fixtures/document_template.xml +30 -0
  37. data/spec/fixtures/integration/digital_document_rrhof_1904.xml +63 -0
  38. data/spec/fixtures/integration/digital_document_rrhof_2405.xml +62 -0
  39. data/spec/fixtures/integration/document_rrhof_2439.xml +54 -0
  40. data/spec/fixtures/integration/document_rrhof_524.xml +80 -0
  41. data/spec/fixtures/integration/instantiation_rrhof_1184.xml +44 -0
  42. data/spec/fixtures/physical_instantiation.xml +20 -0
  43. data/spec/fixtures/physical_instantiation_solr.xml +441 -0
  44. data/spec/fixtures/physical_instantiation_template.xml +18 -0
  45. data/spec/instantiation_spec.rb +180 -132
  46. data/spec/integration/conversions_spec.rb +73 -0
  47. data/spec/spec_helper.rb +37 -9
  48. data/spec/templates_spec.rb +31 -0
  49. metadata +68 -17
@@ -0,0 +1,214 @@
1
+ require "spec_helper"
2
+
3
+ describe HydraPbcore::Datastream::Deprecated::Instantiation do
4
+
5
+ before(:each) do
6
+ @object_ds = HydraPbcore::Datastream::Deprecated::Instantiation.new(nil, nil)
7
+ end
8
+
9
+ describe ".update_indexed_attributes" do
10
+ it "should update all of the fields in #xml_template and fields not requiring additional inserted nodes" do
11
+ [
12
+ [:name],
13
+ [:location],
14
+ [:date],
15
+ [:generation],
16
+ [:media_type],
17
+ [:file_format],
18
+ [:size],
19
+ [:size_units],
20
+ [:colors],
21
+ [:duration],
22
+ [:rights_summary],
23
+ [:note],
24
+ [:checksum_type],
25
+ [:checksum_value],
26
+ [:device],
27
+ [:capture_soft],
28
+ [:trans_soft],
29
+ [:operator],
30
+ [:trans_note],
31
+ [:vendor],
32
+ [:condition],
33
+ [:cleaning],
34
+ [:color_space],
35
+ [:chroma],
36
+ [:video_standard],
37
+ [:video_encoding],
38
+ [:video_bit_rate],
39
+ [:video_bit_rate_units],
40
+ [:frame_rate],
41
+ [:frame_size],
42
+ [:video_bit_depth],
43
+ [:aspect_ratio],
44
+ [:audio_standard],
45
+ [:audio_encoding],
46
+ [:audio_bit_rate],
47
+ [:audio_bit_rate_units],
48
+ [:audio_sample_rate],
49
+ [:audio_sample_rate_units],
50
+ [:audio_bit_depth],
51
+ [:audio_channels],
52
+ ].each do |pointer|
53
+ test_val = "#{pointer.last.to_s} value"
54
+ @object_ds.update_indexed_attributes( {pointer=>{"0"=>test_val}} )
55
+ @object_ds.get_values(pointer).first.should == test_val
56
+ @object_ds.get_values(pointer).length.should == 1
57
+ end
58
+ end
59
+ end
60
+
61
+ describe "default fields" do
62
+
63
+ it "like media type should be 'Moving image'" do
64
+ @object_ds.get_values([:media_type]).first.should == "Moving image"
65
+ end
66
+
67
+ it "like colors should be 'Color'" do
68
+ @object_ds.get_values([:colors]).first.should == "Color"
69
+ end
70
+
71
+ end
72
+
73
+ describe "#xml_template" do
74
+ it "should return an empty xml document matching an exmplar" do
75
+
76
+ # insert optional fields
77
+ @object_ds.update_indexed_attributes({ [:checksum_type] => { 0 => "inserted" }} )
78
+ @object_ds.update_indexed_attributes({ [:note] => { 0 => "inserted" }} )
79
+ @object_ds.update_indexed_attributes({ [:checksum_value] => { 0 => "inserted" }} )
80
+ @object_ds.update_indexed_attributes({ [:device] => { 0 => "inserted" }} )
81
+ @object_ds.update_indexed_attributes({ [:capture_soft] => { 0 => "inserted" }} )
82
+ @object_ds.update_indexed_attributes({ [:trans_soft] => { 0 => "inserted" }} )
83
+ @object_ds.update_indexed_attributes({ [:operator] => { 0 => "inserted" }} )
84
+ @object_ds.update_indexed_attributes({ [:trans_note] => { 0 => "inserted" }} )
85
+ @object_ds.update_indexed_attributes({ [:vendor] => { 0 => "inserted" }} )
86
+ @object_ds.update_indexed_attributes({ [:condition] => { 0 => "inserted" }} )
87
+ @object_ds.update_indexed_attributes({ [:cleaning] => { 0 => "inserted" }} )
88
+ @object_ds.update_indexed_attributes({ [:color_space] => { 0 => "inserted" }} )
89
+ @object_ds.update_indexed_attributes({ [:chroma] => { 0 => "inserted" }} )
90
+ @object_ds.update_indexed_attributes({ [:standard] => { 0 => "inserted" }} )
91
+ @object_ds.update_indexed_attributes({ [:language] => { 0 => "inserted" }} )
92
+
93
+ # insert optional nodes using sample values
94
+ @object_ds.insert_next("inserted")
95
+ @object_ds.insert_previous("inserted")
96
+
97
+ # Load example deprecated_fixture
98
+ f = deprecated_fixture "pbcore_instantiation_template.xml"
99
+ ref_node = Nokogiri::XML(f)
100
+ f.close
101
+
102
+ # Nokogiri-fy our sample document and add in namespace
103
+ sample_node = Nokogiri::XML(@object_ds.to_xml)
104
+ with_namespace = HydraPbcore::Behaviors.insert_pbcore_namespace(sample_node)
105
+
106
+ # Save this for later...
107
+ out = File.new("tmp/pbcore_instantiation_sample.xml", "w")
108
+ out.write(with_namespace.to_s)
109
+ out.close
110
+
111
+ EquivalentXml.equivalent?(ref_node, with_namespace, opts = { :element_order => false, :normalize_whitespace => true }).should be_true
112
+
113
+ # TODO: reorder nodes on the instantiaion
114
+ #Rockhall::Pbcore.validate(with_namespace).should be_empty
115
+ end
116
+ end
117
+
118
+ describe "essence fields" do
119
+
120
+ it "shoud have different essenceTrackStandard nodes" do
121
+
122
+ # Standard
123
+ @object_ds.update_indexed_attributes({ [:video_standard] => { 0 => "video standard" }} )
124
+ @object_ds.update_indexed_attributes({ [:audio_standard] => { 0 => "audio standard" }} )
125
+ @object_ds.get_values([{:pbcoreInstantiation=>0}, {:instantiationEssenceTrack=>0}, :essenceTrackStandard]).first.should == "video standard"
126
+ @object_ds.get_values([{:pbcoreInstantiation=>0}, {:instantiationEssenceTrack=>1}, :essenceTrackStandard]).first.should == "audio standard"
127
+
128
+ end
129
+
130
+ end
131
+
132
+ describe ".to_solr" do
133
+
134
+ before(:each) do
135
+ [
136
+ "name",
137
+ "location",
138
+ "generation",
139
+ "media_type",
140
+ "file_format",
141
+ "size",
142
+ "size_units",
143
+ "colors",
144
+ "duration",
145
+ "rights_summary",
146
+ "note",
147
+ "checksum_type",
148
+ "checksum_value",
149
+ "device",
150
+ "capture_soft",
151
+ "trans_soft",
152
+ "operator",
153
+ "trans_note",
154
+ "vendor",
155
+ "condition",
156
+ "cleaning",
157
+ "color_space",
158
+ "chroma",
159
+ "video_standard",
160
+ "video_encoding",
161
+ "video_bit_rate",
162
+ "video_bit_rate_units",
163
+ "frame_rate",
164
+ "frame_size",
165
+ "video_bit_depth",
166
+ "aspect_ratio",
167
+ "audio_standard",
168
+ "audio_encoding",
169
+ "audio_bit_rate",
170
+ "audio_bit_rate_units",
171
+ "audio_sample_rate",
172
+ "audio_sample_rate_units",
173
+ "audio_bit_depth",
174
+ "audio_channels"
175
+ ].each do |field|
176
+ @object_ds.send("#{field}=".to_sym, field)
177
+ end
178
+
179
+ # Use a real date
180
+ @object_ds.date = "2012-11"
181
+ end
182
+
183
+ it "should match an exmplar" do
184
+ # Load example deprecated_fixture
185
+ f = deprecated_fixture "pbcore_solr_instantiation_template.xml"
186
+ ref_node = Nokogiri::XML(f)
187
+ f.close
188
+
189
+ # Nokogiri-fy our sample document
190
+ sample_node = Nokogiri::XML(@object_ds.to_solr.to_xml)
191
+
192
+ # Save this for later...
193
+ out = File.new("tmp/pbcore_solr_instantation_sample.xml", "w")
194
+ out.write(sample_node.to_s)
195
+ out.close
196
+
197
+ EquivalentXml.equivalent?(ref_node, sample_node, opts = { :element_order => false, :normalize_whitespace => true }).should be_true
198
+ end
199
+
200
+ it "should display dates as they were entered" do
201
+ @object_ds.to_solr["date_display"].should == ["2012-11"]
202
+ end
203
+
204
+ it "should have dates converted to ISO 8601" do
205
+ @object_ds.to_solr["date_dt"].should == ["2012-11-01T00:00:00Z"]
206
+ end
207
+
208
+ it "should not index dates as text" do
209
+ @object_ds.to_solr["date_t"].should be_nil
210
+ end
211
+
212
+ end
213
+
214
+ end
@@ -6,8 +6,15 @@ describe HydraPbcore::Datastream::Document do
6
6
  @object_ds = HydraPbcore::Datastream::Document.new(nil, nil)
7
7
  end
8
8
 
9
- describe ".update_indexed_attributes" do
10
- it "should update all of the fields in #xml_template and fields not requiring additional inserted nodes" do
9
+ describe "::xml_template" do
10
+ it "should match an exmplar" do
11
+ save_template @object_ds.to_xml, "document_template.xml"
12
+ equivalent_xml_files("document_template.xml").should be_true
13
+ end
14
+ end
15
+
16
+ describe "#update_indexed_attributes" do
17
+ it "should update the intitial fields" do
11
18
  [
12
19
  [:pbc_id],
13
20
  [:main_title],
@@ -28,36 +35,25 @@ describe HydraPbcore::Datastream::Document do
28
35
  [:lc_genre],
29
36
  [:lc_subject_genre],
30
37
  [:event_series],
31
- [:event_place],
32
38
  [:contributor_name],
33
39
  [:contributor_role],
34
40
  [:publisher_name],
35
41
  [:publisher_role],
36
42
  [:note],
37
- [:barcode],
38
- [:repository],
39
- [:format],
40
- [:standard],
41
- [:media_type],
42
- [:generation],
43
- [:language],
44
- [:colors],
43
+ [:rights_summary],
45
44
  [:archival_collection],
46
45
  [:archival_series],
47
46
  [:collection_number],
48
47
  [:accession_number],
49
- [:usage],
50
- [:condition_note],
51
- [:cleaning_note]
52
48
  ].each do |pointer|
53
- test_val = "#{pointer.last.to_s} value"
49
+ test_val = random_string
54
50
  @object_ds.update_values( {pointer=>{"0"=>test_val}} )
55
51
  @object_ds.get_values(pointer).first.should == test_val
56
52
  @object_ds.get_values(pointer).length.should == 1
57
53
  end
58
54
  end
59
55
 
60
- it "should work for fields that require added xml nodes" do
56
+ it "should update fields requiring inserted nodes" do
61
57
  @object_ds.insert_publisher
62
58
  @object_ds.insert_contributor
63
59
  [
@@ -86,74 +82,9 @@ describe HydraPbcore::Datastream::Document do
86
82
  @object_ds.get_values(:contributor_role)[0].should == "first contributor role"
87
83
  @object_ds.get_values(:contributor_role)[1].should == "second contributor role"
88
84
  end
89
-
90
- end
91
-
92
- describe "#xml_template" do
93
- it "should return an empty xml document matching a valid exmplar" do
94
- # insert additional nodes
95
- @object_ds.insert_publisher("inserted", "inserted")
96
- @object_ds.insert_contributor("inserted", "inserted")
97
- @object_ds.insert_publisher("inserted")
98
- @object_ds.insert_contributor("inserted")
99
- @object_ds.insert_contributor
100
-
101
- # update additional nodes that OM will insert automatically
102
- @object_ds.update_indexed_attributes({ [:alternative_title] => { 0 => "inserted" }} )
103
- @object_ds.update_indexed_attributes({ [:chapter] => { 0 => "inserted" }} )
104
- @object_ds.update_indexed_attributes({ [:episode] => { 0 => "inserted" }} )
105
- @object_ds.update_indexed_attributes({ [:label] => { 0 => "inserted" }} )
106
- @object_ds.update_indexed_attributes({ [:segment] => { 0 => "inserted" }} )
107
- @object_ds.update_indexed_attributes({ [:subtitle] => { 0 => "inserted" }} )
108
- @object_ds.update_indexed_attributes({ [:track] => { 0 => "inserted" }} )
109
- @object_ds.update_indexed_attributes({ [:translation] => { 0 => "inserted" }} )
110
- @object_ds.update_indexed_attributes({ [:lc_subject] => { 0 => "inserted" }} )
111
- @object_ds.update_indexed_attributes({ [:lc_name] => { 0 => "inserted" }} )
112
- @object_ds.update_indexed_attributes({ [:rh_subject] => { 0 => "inserted" }} )
113
- @object_ds.update_indexed_attributes({ [:getty_genre] => { 0 => "inserted" }} )
114
- @object_ds.update_indexed_attributes({ [:lc_genre] => { 0 => "inserted" }} )
115
- @object_ds.update_indexed_attributes({ [:lc_subject_genre] => { 0 => "inserted" }} )
116
- @object_ds.update_indexed_attributes({ [:subject] => { 0 => "inserted" }} )
117
- @object_ds.update_indexed_attributes({ [:genre] => { 0 => "inserted" }} )
118
- @object_ds.update_indexed_attributes({ [:condition_note] => { 0 => "inserted" }} )
119
- @object_ds.update_indexed_attributes({ [:cleaning_note] => { 0 => "inserted" }} )
120
-
121
- # Load example fixture
122
- f = fixture "pbcore_document_template.xml"
123
- ref_node = Nokogiri::XML(f)
124
- f.close
125
-
126
- # Nokogiri-fy our sample document and reorder nodes
127
- sample_node = Nokogiri::XML(@object_ds.to_xml)
128
- reordered = HydraPbcore::Behaviors.reorder_document(sample_node)
129
-
130
- # Save this for later...
131
- out = File.new("tmp/pbcore_document_sample.xml", "w")
132
- out.write(reordered.to_s)
133
- out.close
134
-
135
- EquivalentXml.equivalent?(ref_node, reordered, opts = { :element_order => false, :normalize_whitespace => true }).should be_true
136
- HydraPbcore::Behaviors.validate(reordered).should be_empty
137
-
138
- end
139
- end
140
-
141
- describe ".insert_node" do
142
-
143
- it "should return a node and index for a given template type" do
144
- pending "Don't need?"
145
- ["publisher", "contributor"].each do |type|
146
- node, index = @object_ds.insert_node(type.to_s)
147
- index.should == 0
148
- @object_ds.dirty?.should be_true
149
- node, index = @object_ds.insert_node(type.to_s)
150
- index.should == 1
151
- end
152
- end
153
-
154
85
  end
155
86
 
156
- describe ".remove_node" do
87
+ describe "#remove_node" do
157
88
  it "should remove a node a given type and index" do
158
89
  ["publisher", "contributor"].each do |type|
159
90
  @object_ds.send("insert_"+type)
@@ -165,133 +96,79 @@ describe HydraPbcore::Datastream::Document do
165
96
  @object_ds.find_by_terms(type.to_sym).count.should == 0
166
97
  end
167
98
  end
168
-
169
- end
170
-
171
- describe "default fields" do
172
-
173
- it "such as media type should be 'Moving image'" do
174
- @object_ds.get_values([:media_type]).first.should == "Moving image"
175
- end
176
-
177
- it "such as colors should be 'Color'" do
178
- @object_ds.get_values([:colors]).first.should == "Color"
179
- end
180
-
181
- it "such as generation should be 'Original'" do
182
- @object_ds.get_values([:generation]).first.should == "Original"
183
- end
184
-
185
99
  end
186
100
 
187
- describe ".to_solr" do
101
+ describe "sample" do
188
102
 
189
103
  before(:each) do
190
104
  # insert additional nodes
191
- @object_ds.insert_publisher
105
+ @object_ds.insert_publisher("inserted", "inserted")
106
+ @object_ds.insert_contributor("inserted", "inserted")
107
+ @object_ds.insert_publisher("inserted")
108
+ @object_ds.insert_contributor("inserted")
192
109
  @object_ds.insert_contributor
193
- [
194
- "main_title",
195
- "alternative_title",
196
- "chapter",
197
- "episode",
198
- "label",
199
- "segment",
200
- "subtitle",
201
- "track",
202
- "translation",
203
- "summary",
204
- "parts_list",
205
- "lc_subject",
206
- "lc_name",
207
- "rh_subject",
208
- "getty_genre",
209
- "lc_genre",
210
- "lc_subject_genre",
211
- "event_series",
212
- "event_place",
213
- "event_date",
214
- "contributor_name",
215
- "contributor_role",
216
- "publisher_name",
217
- "publisher_role",
218
- "note",
219
- "creation_date",
220
- "barcode",
221
- "repository",
222
- "format",
223
- "standard",
224
- "media_type",
225
- "generation",
226
- "language",
227
- "colors",
228
- "archival_collection",
229
- "archival_series",
230
- "collection_number",
231
- "accession_number",
232
- "usage",
233
- "condition_note",
234
- "cleaning_note"
235
- ].each do |field|
236
- @object_ds.send("#{field}=".to_sym, field)
237
- end
238
- # update additional nodes that OM will insert automatically
239
- @object_ds.update_indexed_attributes({ [:alternative_title] => { 0 => "inserted" }} )
240
- @object_ds.update_indexed_attributes({ [:chapter] => { 0 => "inserted" }} )
241
- @object_ds.update_indexed_attributes({ [:episode] => { 0 => "inserted" }} )
242
- @object_ds.update_indexed_attributes({ [:label] => { 0 => "inserted" }} )
243
- @object_ds.update_indexed_attributes({ [:segment] => { 0 => "inserted" }} )
244
- @object_ds.update_indexed_attributes({ [:subtitle] => { 0 => "inserted" }} )
245
- @object_ds.update_indexed_attributes({ [:track] => { 0 => "inserted" }} )
246
- @object_ds.update_indexed_attributes({ [:translation] => { 0 => "inserted" }} )
247
- @object_ds.update_indexed_attributes({ [:lc_subject] => { 0 => "inserted" }} )
248
- @object_ds.update_indexed_attributes({ [:lc_name] => { 0 => "inserted" }} )
249
- @object_ds.update_indexed_attributes({ [:rh_subject] => { 0 => "inserted" }} )
250
- @object_ds.update_indexed_attributes({ [:getty_genre] => { 0 => "inserted" }} )
251
- @object_ds.update_indexed_attributes({ [:lc_genre] => { 0 => "inserted" }} )
252
- @object_ds.update_indexed_attributes({ [:lc_subject_genre] => { 0 => "inserted" }} )
253
- @object_ds.update_indexed_attributes({ [:subject] => { 0 => "inserted" }} )
254
- @object_ds.update_indexed_attributes({ [:genre] => { 0 => "inserted" }} )
255
- @object_ds.update_indexed_attributes({ [:condition_note] => { 0 => "inserted" }} )
256
- @object_ds.update_indexed_attributes({ [:cleaning_note] => { 0 => "inserted" }} )
257
-
258
- # Use ISO 8601 dates
259
- @object_ds.event_date = "2012-11-11"
260
- @object_ds.creation_date = "2012"
110
+ @object_ds.insert_place("inserted")
111
+ @object_ds.insert_date("2012-11-11")
112
+
113
+ @object_ds.pbc_id = "inserted"
114
+ @object_ds.main_title = "inserted"
115
+ @object_ds.alternative_title = "inserted"
116
+ @object_ds.chapter = "inserted"
117
+ @object_ds.episode = "inserted"
118
+ @object_ds.label = "inserted"
119
+ @object_ds.segment = "inserted"
120
+ @object_ds.subtitle = "inserted"
121
+ @object_ds.track = "inserted"
122
+ @object_ds.translation = "inserted"
123
+ @object_ds.summary = "inserted"
124
+ @object_ds.parts_list = "inserted"
125
+ @object_ds.lc_subject = "inserted"
126
+ @object_ds.lc_name = "inserted"
127
+ @object_ds.rh_subject = "inserted"
128
+ @object_ds.getty_genre = "inserted"
129
+ @object_ds.lc_genre = "inserted"
130
+ @object_ds.lc_subject_genre = "inserted"
131
+ @object_ds.event_series = "inserted"
132
+ @object_ds.contributor_name = "inserted"
133
+ @object_ds.contributor_role = "inserted"
134
+ @object_ds.publisher_name = "inserted"
135
+ @object_ds.publisher_role = "inserted"
136
+ @object_ds.note = "inserted"
137
+ @object_ds.rights_summary = "inserted"
138
+ @object_ds.archival_collection = "inserted"
139
+ @object_ds.archival_series = "inserted"
140
+ @object_ds.collection_number = "inserted"
141
+ @object_ds.accession_number = "inserted"
261
142
  end
262
143
 
263
- it "should match an exmplar" do
264
- # Load example fixture
265
- f = fixture "pbcore_solr_document_template.xml"
266
- ref_node = Nokogiri::XML(f)
267
- f.close
268
-
269
- # Nokogiri-fy our sample document
270
- sample_node = Nokogiri::XML(@object_ds.to_solr.to_xml)
144
+ it "solr document should match an exmplar" do
145
+ save_template @object_ds.to_solr.to_xml, "document_solr.xml"
146
+ equivalent_xml_files("document_solr.xml").should be_true
147
+ end
271
148
 
272
- # Save this for later...
273
- out = File.new("tmp/pbcore_solr_document_sample.xml", "w")
274
- out.write(sample_node.to_s)
275
- out.close
149
+ describe "solr dates" do
150
+ it "should be indexed for display" do
151
+ @object_ds.to_solr["event_date_display"].should == ["2012-11-11"]
152
+ end
276
153
 
277
- EquivalentXml.equivalent?(ref_node, sample_node, opts = { :element_order => false, :normalize_whitespace => true }).should be_true
278
- end
154
+ it "should be converted to ISO 8601" do
155
+ @object_ds.to_solr["event_date_dt"].should == ["2012-11-11T00:00:00Z"]
156
+ end
279
157
 
280
- it "should display dates as they were entered" do
281
- @object_ds.to_solr["creation_date_display"].should == ["2012"]
282
- @object_ds.to_solr["event_date_display"].should == ["2012-11-11"]
158
+ it "should not be searchable as strings" do
159
+ @object_ds.to_solr["event_date_t"].should be_nil
160
+ end
283
161
  end
284
162
 
285
- it "should have dates converted to ISO 8601" do
286
- @object_ds.to_solr["creation_date_dt"].should == ["2012-01-01T00:00:00Z"]
287
- @object_ds.to_solr["event_date_dt"].should == ["2012-11-11T00:00:00Z"]
163
+ it "xml document should match an exmplar" do
164
+ save_template @object_ds.to_xml, "document.xml"
165
+ equivalent_xml_files("document.xml").should be_true
288
166
  end
289
167
 
290
- it "should not index dates as text" do
291
- @object_ds.to_solr["creation_date_t"].should be_nil
292
- @object_ds.to_solr["event_date_t"].should be_nil
168
+ it "xml document should validate against the PBCore schema" do
169
+ save_template @object_ds.to_pbcore_xml, "document_valid.xml"
170
+ @object_ds.valid?.should == []
293
171
  end
294
-
295
- end
172
+ end
296
173
 
297
174
  end