active-fedora 3.0.7 → 3.1.0.pre1
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.
- data/.rvmrc +1 -1
- data/Gemfile.lock +39 -10
- data/History.txt +0 -4
- data/active-fedora.gemspec +4 -3
- data/lib/active_fedora.rb +9 -9
- data/lib/active_fedora/base.rb +92 -163
- data/lib/active_fedora/datastream.rb +59 -60
- data/lib/active_fedora/datastream_hash.rb +18 -0
- data/lib/active_fedora/metadata_datastream.rb +3 -2
- data/lib/active_fedora/metadata_datastream_helper.rb +3 -15
- data/lib/active_fedora/model.rb +3 -3
- data/lib/active_fedora/nokogiri_datastream.rb +305 -302
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +24 -19
- data/lib/active_fedora/rels_ext_datastream.rb +39 -37
- data/lib/active_fedora/rubydora_connection.rb +40 -0
- data/lib/active_fedora/semantic_node.rb +1 -1
- data/lib/active_fedora/solr_service.rb +1 -1
- data/lib/active_fedora/version.rb +1 -1
- data/lib/ruby-fedora.rb +0 -8
- data/lib/tasks/active_fedora.rake +14 -9
- data/lib/tasks/active_fedora_dev.rake +23 -40
- data/spec/integration/base_loader_spec.rb +4 -21
- data/spec/integration/base_spec.rb +300 -310
- data/spec/integration/bug_spec.rb +9 -10
- data/spec/integration/datastream_spec.rb +12 -12
- data/spec/integration/metadata_datastream_helper_spec.rb +7 -10
- data/spec/integration/model_spec.rb +3 -2
- data/spec/integration/rels_ext_datastream_spec.rb +9 -15
- data/spec/spec_helper.rb +2 -29
- data/spec/unit/active_fedora_spec.rb +5 -5
- data/spec/unit/base_cma_spec.rb +0 -7
- data/spec/unit/base_datastream_management_spec.rb +8 -67
- data/spec/unit/base_delegate_spec.rb +26 -9
- data/spec/unit/base_extra_spec.rb +5 -3
- data/spec/unit/base_file_management_spec.rb +10 -17
- data/spec/unit/base_named_datastream_spec.rb +76 -199
- data/spec/unit/base_spec.rb +152 -69
- data/spec/unit/content_model_spec.rb +1 -1
- data/spec/unit/datastream_concurrency_spec.rb +5 -4
- data/spec/unit/datastream_spec.rb +28 -48
- data/spec/unit/has_many_collection_spec.rb +2 -0
- data/spec/unit/inheritance_spec.rb +6 -6
- data/spec/unit/metadata_datastream_spec.rb +12 -28
- data/spec/unit/model_spec.rb +10 -10
- data/spec/unit/nokogiri_datastream_spec.rb +31 -33
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +15 -15
- data/spec/unit/rels_ext_datastream_spec.rb +35 -29
- data/spec/unit/rubydora_connection_spec.rb +26 -0
- data/spec/unit/semantic_node_spec.rb +12 -17
- data/spec/unit/solr_config_options_spec.rb +13 -14
- data/spec/unit/solr_service_spec.rb +14 -17
- metadata +59 -55
- data/lib/fedora/base.rb +0 -38
- data/lib/fedora/connection.rb +0 -218
- data/lib/fedora/datastream.rb +0 -67
- data/lib/fedora/fedora_object.rb +0 -161
- data/lib/fedora/formats.rb +0 -30
- data/lib/fedora/generic_search.rb +0 -71
- data/lib/fedora/repository.rb +0 -298
- data/spec/integration/datastreams_crud_spec.rb +0 -208
- data/spec/integration/fedora_object_spec.rb +0 -77
- data/spec/integration/repository_spec.rb +0 -301
- data/spec/integration/rf_fedora_object_spec.rb +0 -95
- data/spec/unit/connection_spec.rb +0 -25
- data/spec/unit/fedora_object_spec.rb +0 -74
- data/spec/unit/repository_spec.rb +0 -143
- data/spec/unit/rf_datastream_spec.rb +0 -63
data/spec/unit/base_spec.rb
CHANGED
@@ -27,9 +27,16 @@ describe ActiveFedora::Base do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
before(:each) do
|
30
|
-
|
30
|
+
@mock_repo = mock("repository")
|
31
|
+
Rubydora::DigitalObject.any_instance.expects(:repository).returns(@mock_repo).at_least_once
|
32
|
+
@this_pid = increment_pid.to_s
|
33
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(@this_pid)
|
34
|
+
|
35
|
+
@mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'RELS-EXT'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
|
36
|
+
@mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'someData'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
|
37
|
+
@mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'withText2'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
|
38
|
+
@mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'withText'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
|
31
39
|
@test_object = ActiveFedora::Base.new
|
32
|
-
@test_object.new_object = true
|
33
40
|
@test_history = FooHistory.new
|
34
41
|
end
|
35
42
|
|
@@ -43,16 +50,18 @@ describe ActiveFedora::Base do
|
|
43
50
|
|
44
51
|
describe '#new' do
|
45
52
|
it "should create a new inner object" do
|
46
|
-
|
53
|
+
Rubydora::DigitalObject.any_instance.expects(:save).never
|
54
|
+
@mock_repo.expects(:datastreams).with(:pid => "test:1").returns("")
|
55
|
+
|
47
56
|
result = ActiveFedora::Base.new(:pid=>"test:1")
|
48
|
-
result.inner_object.should be_kind_of(
|
57
|
+
result.inner_object.should be_kind_of(Rubydora::DigitalObject)
|
49
58
|
end
|
50
59
|
|
51
60
|
it "should allow initialization with nil" do
|
52
61
|
# for doing AFObject.new(params[:foo]) when nothing is in params[:foo]
|
53
|
-
|
62
|
+
Rubydora::DigitalObject.any_instance.expects(:save).never
|
54
63
|
result = ActiveFedora::Base.new(nil)
|
55
|
-
result.inner_object.should be_kind_of(
|
64
|
+
result.inner_object.should be_kind_of(Rubydora::DigitalObject)
|
56
65
|
end
|
57
66
|
|
58
67
|
end
|
@@ -65,16 +74,21 @@ describe ActiveFedora::Base do
|
|
65
74
|
|
66
75
|
### Methods for ActiveModel::Conversions
|
67
76
|
it "should have to_param once it's saved" do
|
77
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
78
|
+
|
68
79
|
@test_object.to_param.should be_nil
|
69
80
|
@test_object.expects(:create).returns(true)
|
70
81
|
@test_object.save
|
82
|
+
@test_object.expects(:persisted?).returns(true).at_least_once
|
71
83
|
@test_object.to_param.should == @test_object.pid
|
72
84
|
end
|
73
85
|
|
74
86
|
it "should have to_key once it's saved" do
|
87
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
75
88
|
@test_object.to_key.should be_nil
|
76
89
|
@test_object.expects(:create).returns(true)
|
77
90
|
@test_object.save
|
91
|
+
@test_object.expects(:persisted?).returns(true).at_least_once
|
78
92
|
@test_object.to_key.should == [@test_object.pid]
|
79
93
|
end
|
80
94
|
|
@@ -98,22 +112,28 @@ describe ActiveFedora::Base do
|
|
98
112
|
|
99
113
|
describe "has_metadata" do
|
100
114
|
before :each do
|
115
|
+
@mock_repo.expects(:datastreams).with(:pid => "monkey:99").returns("")
|
116
|
+
@mock_repo.expects(:object).with(:pid => "monkey:99").returns("")
|
117
|
+
@mock_repo.expects(:ingest).with(:pid => "monkey:99").returns("monkey:99")
|
118
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'someData',:pid => 'monkey:99').returns('asdf')
|
119
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'someData'}
|
120
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText',:pid => 'monkey:99').returns('asdf')
|
121
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText'}
|
122
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText2',:pid => 'monkey:99').returns('asdf')
|
123
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText2'}
|
124
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => 'monkey:99').returns('asdf')
|
125
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
|
126
|
+
|
101
127
|
@n = FooHistory.new(:pid=>"monkey:99")
|
128
|
+
@n.expects(:update_index)
|
102
129
|
@n.save
|
103
130
|
end
|
104
131
|
|
105
|
-
after :each do
|
106
|
-
begin
|
107
|
-
@n.delete
|
108
|
-
rescue
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
132
|
it "should create specified datastreams with specified fields" do
|
113
133
|
@n.datastreams["someData"].should_not be_nil
|
114
134
|
@n.datastreams["someData"].fubar_values='bar'
|
115
135
|
@n.datastreams["someData"].fubar_values.should == ['bar']
|
116
|
-
@n.datastreams["withText2"].
|
136
|
+
@n.datastreams["withText2"].dsLabel.should == "withLabel"
|
117
137
|
end
|
118
138
|
|
119
139
|
end
|
@@ -136,6 +156,7 @@ describe ActiveFedora::Base do
|
|
136
156
|
end
|
137
157
|
|
138
158
|
it "should add self.class as the :active_fedora_model" do
|
159
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
139
160
|
fields = @test_object.fields
|
140
161
|
fields[:active_fedora_model][:values].should eql([@test_object.class.inspect])
|
141
162
|
end
|
@@ -147,6 +168,7 @@ describe ActiveFedora::Base do
|
|
147
168
|
mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
148
169
|
|
149
170
|
@test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2})
|
171
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
150
172
|
@test_object.fields
|
151
173
|
end
|
152
174
|
end
|
@@ -168,15 +190,6 @@ describe ActiveFedora::Base do
|
|
168
190
|
end
|
169
191
|
|
170
192
|
describe '.rels_ext' do
|
171
|
-
it 'should create the RELS-EXT datastream if it doesnt exist' do
|
172
|
-
mocker = mock("rels-ext")
|
173
|
-
ActiveFedora::RelsExtDatastream.expects(:new).returns(mocker)
|
174
|
-
@test_object.expects(:add_datastream).with(mocker)
|
175
|
-
# Make sure the RELS-EXT datastream does not exist yet
|
176
|
-
@test_object.datastreams["RELS-EXT"].should == nil
|
177
|
-
@test_object.rels_ext
|
178
|
-
# Assume that @test_object.add_datastream actually does its job and adds the datastream to the datastreams array. Not testing that here.
|
179
|
-
end
|
180
193
|
|
181
194
|
it 'should return the RelsExtDatastream object from the datastreams array' do
|
182
195
|
@test_object.expects(:datastreams).returns({"RELS-EXT" => "foo"}).at_least_once
|
@@ -212,7 +225,7 @@ describe ActiveFedora::Base do
|
|
212
225
|
end
|
213
226
|
|
214
227
|
it 'should add a relationship to an object only if it does not exist already' do
|
215
|
-
|
228
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
|
216
229
|
@test_object3 = ActiveFedora::Base.new
|
217
230
|
@test_object.add_relationship(:has_part,@test_object3)
|
218
231
|
r = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>@test_object3)
|
@@ -234,9 +247,9 @@ describe ActiveFedora::Base do
|
|
234
247
|
|
235
248
|
describe '#remove_relationship' do
|
236
249
|
it 'should remove a relationship from the relationships hash' do
|
237
|
-
|
250
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
|
238
251
|
@test_object3 = ActiveFedora::Base.new
|
239
|
-
|
252
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
|
240
253
|
@test_object4 = ActiveFedora::Base.new
|
241
254
|
@test_object.add_relationship(:has_part,@test_object3)
|
242
255
|
@test_object.add_relationship(:has_part,@test_object4)
|
@@ -268,14 +281,22 @@ describe ActiveFedora::Base do
|
|
268
281
|
|
269
282
|
|
270
283
|
it "should return true and set persisted if object and datastreams all save successfully" do
|
284
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => @this_pid).returns('asdf')
|
285
|
+
|
286
|
+
@mock_repo.expects(:ingest).with(:pid => @this_pid).returns(@this_pid)
|
287
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
288
|
+
@mock_repo.expects(:datastreams).with(:pid => @this_pid).returns("")
|
289
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
|
271
290
|
@test_object.persisted?.should be false
|
272
|
-
@test_object.expects(:
|
291
|
+
@test_object.expects(:update_index)
|
273
292
|
@test_object.save.should == true
|
293
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("<objectProfile><objOwnerId>fedoraAdmin</objOwnerId></objectProfile>")
|
274
294
|
@test_object.persisted?.should be true
|
275
295
|
end
|
276
296
|
|
277
297
|
|
278
298
|
it "should raise an exception if object fails to save" do
|
299
|
+
pending # Not using Fedora::Repository anymore
|
279
300
|
server_response = mock("Server Error")
|
280
301
|
Fedora::Repository.instance.expects(:save).with(@test_object.inner_object).raises(Fedora::ServerError, server_response)
|
281
302
|
lambda {@test_object.save}.should raise_error(Fedora::ServerError)
|
@@ -283,6 +304,7 @@ describe ActiveFedora::Base do
|
|
283
304
|
end
|
284
305
|
|
285
306
|
it "should raise an exception if any of the datastreams fail to save" do
|
307
|
+
pending # Not using Fedora::Repository anymore
|
286
308
|
Fedora::Repository.instance.expects(:save).with(@test_object.inner_object).returns(true)
|
287
309
|
Fedora::Repository.instance.expects(:save).with(kind_of(ActiveFedora::RelsExtDatastream)).raises(Fedora::ServerError, mock("Server Error"))
|
288
310
|
lambda {@test_object.save}.should raise_error(Fedora::ServerError)
|
@@ -291,71 +313,124 @@ describe ActiveFedora::Base do
|
|
291
313
|
it "should call .save on any datastreams that are dirty" do
|
292
314
|
to = FooHistory.new
|
293
315
|
to.expects(:update_index)
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
316
|
+
@mock_repo.expects(:ingest).with(:pid => @this_pid).returns(@this_pid)
|
317
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
318
|
+
@mock_repo.expects(:datastreams).with(:pid => @this_pid).returns("")
|
319
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText',:pid => @this_pid).returns('asdf')
|
320
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText2',:pid => @this_pid).returns('asdf')
|
321
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => @this_pid).returns('asdf')
|
322
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'someData',:pid => @this_pid).returns('asdf')
|
323
|
+
|
324
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText2'}
|
325
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText'}
|
326
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
|
327
|
+
|
328
|
+
|
329
|
+
to.datastreams["someData"].stubs(:changed?).returns(true)
|
299
330
|
to.datastreams["someData"].stubs(:new_object?).returns(true)
|
300
331
|
to.datastreams["someData"].expects(:save)
|
301
332
|
to.expects(:refresh)
|
302
333
|
to.save
|
303
334
|
end
|
304
335
|
it "should call .save on any datastreams that are new" do
|
305
|
-
|
336
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'ds_to_add',:pid => @this_pid).returns('asdf')
|
337
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => @this_pid).returns('asdf')
|
338
|
+
ds = ActiveFedora::Datastream.new(@test_object.inner_object, 'ds_to_add')
|
339
|
+
ds.content = "DS CONTENT"
|
306
340
|
@test_object.add_datastream(ds)
|
307
341
|
ds.expects(:save)
|
308
342
|
@test_object.instance_variable_set(:@new_object, false)
|
309
|
-
Fedora::Repository.instance.expects(:save).with(@test_object.inner_object)
|
310
|
-
#Fedora::Repository.instance.expects(:save).with(kind_of(ActiveFedora::RelsExtDatastream))
|
311
343
|
@test_object.expects(:refresh)
|
344
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("").at_least_once
|
345
|
+
@mock_repo.expects(:ingest).with(:pid => @test_object.pid)
|
346
|
+
@mock_repo.expects(:datastreams).with(:pid => @test_object.pid).returns("")
|
347
|
+
@mock_repo.expects(:add_datastream).with{ |x| x[:dsid] = "RELS-EXT"}
|
348
|
+
@test_object.expects(:update_index)
|
312
349
|
@test_object.save
|
313
350
|
end
|
314
351
|
it "should not call .save on any datastreams that are not dirty" do
|
315
352
|
@test_object = FooHistory.new
|
316
353
|
@test_object.expects(:update_index)
|
317
354
|
@test_object.expects(:refresh)
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
355
|
+
|
356
|
+
@mock_repo.expects(:ingest).with(:pid => @test_object.pid)
|
357
|
+
|
358
|
+
@test_object.inner_object.expects(:new?).returns(true).twice
|
359
|
+
@test_object.inner_object.expects(:datastreams).returns({'someData'=>mock('obj', :changed? => false)})
|
360
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'someData',:pid => @test_object.pid).returns('asdf')
|
361
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText',:pid => @test_object.pid).returns('asdf')
|
362
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'withText2',:pid => @test_object.pid).returns('asdf')
|
363
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => @test_object.pid).returns('asdf')
|
323
364
|
@test_object.datastreams["someData"].should_not be_nil
|
324
|
-
@test_object.datastreams['someData'].stubs(:
|
325
|
-
@test_object.datastreams['someData'].stubs(:
|
365
|
+
@test_object.datastreams['someData'].stubs(:changed?).returns(false)
|
366
|
+
@test_object.datastreams['someData'].stubs(:new?).returns(false)
|
326
367
|
@test_object.datastreams['someData'].expects(:save).never
|
368
|
+
@test_object.datastreams['withText2'].expects(:save)
|
369
|
+
@test_object.datastreams['withText'].expects(:save)
|
370
|
+
@test_object.datastreams['RELS-EXT'].expects(:save)
|
327
371
|
@test_object.save
|
328
372
|
end
|
329
373
|
it "should update solr index with all metadata if any MetadataDatastreams have changed" do
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
@
|
374
|
+
@mock_repo.expects(:ingest).with(:pid => nil)
|
375
|
+
@mock_repo.expects(:modify_datastream).with{ |x| x[:pid] == nil && x[:dsid] == 'RELS-EXT'}
|
376
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'RELS-EXT',:pid => nil).returns('asdf')
|
377
|
+
@mock_repo.expects(:datastream_dissemination).with(:dsid => 'ds1',:pid => nil).returns('asdf')
|
378
|
+
@mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'ds1'}
|
379
|
+
@mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'ds1'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
|
380
|
+
@test_object.inner_object.expects(:new?).returns(true).twice
|
381
|
+
@test_object.inner_object.expects(:datastreams).returns([])
|
382
|
+
@test_object.inner_object.expects(:pid).at_least_once
|
383
|
+
|
384
|
+
dirty_ds = ActiveFedora::MetadataDatastream.new(@test_object.inner_object, 'ds1')
|
385
|
+
rels_ds = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
|
386
|
+
rels_ds.expects(:new?).returns(false)
|
387
|
+
mock2 = mock("ds2")
|
388
|
+
mock2.stubs(:changed? => false)
|
389
|
+
mock2.expects(:serialize!)
|
390
|
+
@test_object.stubs(:datastreams).returns({:ds1 => dirty_ds, :ds2 => mock2, 'RELS-EXT'=>rels_ds})
|
336
391
|
@test_object.expects(:update_index)
|
337
392
|
@test_object.expects(:refresh)
|
338
393
|
|
339
394
|
@test_object.save
|
340
395
|
end
|
341
396
|
it "should NOT update solr index if no MetadataDatastreams have changed" do
|
342
|
-
|
343
|
-
mock1 = mock("ds1"
|
344
|
-
|
345
|
-
|
397
|
+
Rubydora::DigitalObject.any_instance.stubs(:save)
|
398
|
+
mock1 = mock("ds1")
|
399
|
+
mock1.expects( :changed?).returns(false).at_least_once
|
400
|
+
mock1.expects(:serialize!)
|
401
|
+
mock2 = mock("ds2")
|
402
|
+
mock2.expects( :changed?).returns(false).at_least_once
|
403
|
+
mock2.expects(:serialize!)
|
404
|
+
mock_rels_ext = mock("rels-ext")
|
405
|
+
mock_rels_ext.stubs(:dsid=>"RELS-EXT", :relationships=>{}, :add_relationship=>nil, :dirty= => nil)
|
406
|
+
mock_rels_ext.expects( :changed?).returns(false).at_least_once
|
407
|
+
mock_rels_ext.expects(:serialize!)
|
408
|
+
ActiveFedora::RelsExtDatastream.expects(:new).returns(mock_rels_ext)
|
409
|
+
@test_object.stubs(:datastreams).returns({:ds1 => mock1, :ds2 => mock2})
|
346
410
|
@test_object.expects(:update_index).never
|
347
411
|
@test_object.expects(:refresh)
|
348
412
|
@test_object.instance_variable_set(:@new_object, false)
|
349
|
-
|
413
|
+
|
414
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
415
|
+
|
350
416
|
@test_object.save
|
351
417
|
end
|
352
418
|
it "should update solr index if RELS-EXT datastream has changed" do
|
353
|
-
|
354
|
-
|
355
|
-
|
419
|
+
@mock_repo = mock('repository')
|
420
|
+
@mock_repo.expects(:ingest).with(:pid => @test_object.pid)
|
421
|
+
@test_object.inner_object.expects(:repository).returns(@mock_repo).at_least_once
|
422
|
+
@test_object.inner_object.expects(:new?).returns(true).twice
|
423
|
+
|
424
|
+
rels_ext = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
|
425
|
+
rels_ext.expects(:relationships_are_dirty).returns(true).at_least_once
|
426
|
+
rels_ext.expects(:new?).returns(true)
|
356
427
|
rels_ext.expects(:save).returns(true)
|
357
|
-
|
358
|
-
|
428
|
+
rels_ext.expects(:serialize!)
|
429
|
+
clean_ds = mock("ds2")
|
430
|
+
clean_ds.stubs(:dirty? => false, :changed? => false, :new? => false)
|
431
|
+
clean_ds.expects(:serialize!)
|
432
|
+
@test_object.inner_object.stubs(:datastreams).returns({"RELS-EXT" => rels_ext, :clean_ds => clean_ds})
|
433
|
+
@test_object.stubs(:datastreams).returns({"RELS-EXT" => rels_ext, :clean_ds => clean_ds})
|
359
434
|
@test_object.instance_variable_set(:@new_object, false)
|
360
435
|
@test_object.expects(:refresh)
|
361
436
|
@test_object.expects(:update_index)
|
@@ -380,10 +455,11 @@ describe ActiveFedora::Base do
|
|
380
455
|
end
|
381
456
|
|
382
457
|
it "should call .to_xml on all MetadataDatastreams and return the resulting document" do
|
383
|
-
ds1 = ActiveFedora::MetadataDatastream.new
|
384
|
-
ds2 = ActiveFedora::MetadataDatastream.new
|
458
|
+
ds1 = ActiveFedora::MetadataDatastream.new(@test_object.inner_object, 'ds1')
|
459
|
+
ds2 = ActiveFedora::MetadataDatastream.new(@test_object.inner_object, 'ds2')
|
385
460
|
[ds1,ds2].each {|ds| ds.expects(:to_xml)}
|
386
461
|
|
462
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
387
463
|
@test_object.expects(:datastreams).returns({:ds1 => ds1, :ds2 => ds2})
|
388
464
|
@test_object.to_xml
|
389
465
|
end
|
@@ -425,6 +501,7 @@ describe ActiveFedora::Base do
|
|
425
501
|
end
|
426
502
|
|
427
503
|
it "should add self.class as the :active_fedora_model" do
|
504
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
428
505
|
solr_doc = @test_history.to_solr
|
429
506
|
solr_doc["active_fedora_model_s"].should eql("FooHistory")
|
430
507
|
end
|
@@ -452,6 +529,7 @@ describe ActiveFedora::Base do
|
|
452
529
|
end
|
453
530
|
|
454
531
|
it "should call .to_solr on all MetadataDatastreams and NokogiriDatastreams, passing the resulting document to solr" do
|
532
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
455
533
|
mock1 = mock("ds1", :to_solr)
|
456
534
|
mock2 = mock("ds2", :to_solr)
|
457
535
|
ngds = mock("ngds", :to_solr)
|
@@ -464,8 +542,9 @@ describe ActiveFedora::Base do
|
|
464
542
|
@test_object.to_solr
|
465
543
|
end
|
466
544
|
it "should call .to_solr on the RELS-EXT datastream if it is dirty" do
|
545
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
467
546
|
@test_object.add_relationship(:has_collection_member, "foo member")
|
468
|
-
rels_ext = @test_object.
|
547
|
+
rels_ext = @test_object.rels_ext
|
469
548
|
rels_ext.dirty?.should == true
|
470
549
|
rels_ext.expects(:to_solr)
|
471
550
|
@test_object.to_solr
|
@@ -489,6 +568,7 @@ describe ActiveFedora::Base do
|
|
489
568
|
|
490
569
|
describe ".label=" do
|
491
570
|
it "should set the label of the inner object" do
|
571
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
492
572
|
@test_object.label.should_not == "foo label"
|
493
573
|
@test_object.label = "foo label"
|
494
574
|
@test_object.label.should == "foo label"
|
@@ -496,14 +576,14 @@ describe ActiveFedora::Base do
|
|
496
576
|
end
|
497
577
|
|
498
578
|
it "should get a pid but not save on init" do
|
499
|
-
|
500
|
-
|
579
|
+
Rubydora::DigitalObject.any_instance.expects(:save).never
|
580
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns('mooshoo:24')
|
501
581
|
f = FooHistory.new
|
502
582
|
f.pid.should_not be_nil
|
503
583
|
f.pid.should == 'mooshoo:24'
|
504
584
|
end
|
505
585
|
it "should not clobber a pid if i'm creating!" do
|
506
|
-
|
586
|
+
@mock_repo.expects(:datastreams).with(:pid => "numbnuts:1").returns("")
|
507
587
|
f = FooHistory.new(:pid=>'numbnuts:1')
|
508
588
|
f.pid.should == 'numbnuts:1'
|
509
589
|
|
@@ -512,7 +592,7 @@ describe ActiveFedora::Base do
|
|
512
592
|
describe "get_values_from_datastream" do
|
513
593
|
it "should look up the named datastream and call get_values with the given pointer/field_name" do
|
514
594
|
mock_ds = mock("Datastream", :get_values=>["value1", "value2"])
|
515
|
-
@test_object.stubs(:
|
595
|
+
@test_object.stubs(:datastreams).returns({"ds1"=>mock_ds})
|
516
596
|
@test_object.get_values_from_datastream("ds1", "--my xpath--").should == ["value1", "value2"]
|
517
597
|
end
|
518
598
|
end
|
@@ -528,12 +608,13 @@ describe ActiveFedora::Base do
|
|
528
608
|
"properties"=>{ "notes"=>"foo" }
|
529
609
|
}
|
530
610
|
m = FooHistory.new
|
531
|
-
m.stubs(:
|
611
|
+
m.stubs(:datastreams).returns(mock_ds_hash)
|
532
612
|
mock_desc_metadata.expects(:update_indexed_attributes).with( ds_values_hash['descMetadata'] )
|
533
613
|
mock_properties.expects(:update_indexed_attributes).with( ds_values_hash['properties'] )
|
534
614
|
m.update_datastream_attributes( ds_values_hash )
|
535
615
|
end
|
536
616
|
it "should not do anything and should return an empty hash if the specified datastream does not exist" do
|
617
|
+
@mock_repo.expects(:object).with(:pid => @this_pid).returns("")
|
537
618
|
ds_values_hash = {
|
538
619
|
"nonexistentDatastream"=>{ "notes"=>"foo" }
|
539
620
|
}
|
@@ -562,7 +643,9 @@ describe ActiveFedora::Base do
|
|
562
643
|
m = FooHistory.new
|
563
644
|
att= {"fubar"=>{"-1"=>"mork", "0"=>"york", "1"=>"mangle"}}
|
564
645
|
|
565
|
-
m.
|
646
|
+
m.datastreams['someData'].expects(:update_indexed_attributes)
|
647
|
+
m.datastreams["withText"].expects(:update_indexed_attributes)
|
648
|
+
m.datastreams['withText2'].expects(:update_indexed_attributes)
|
566
649
|
m.update_indexed_attributes(att)
|
567
650
|
end
|
568
651
|
it "should take a :datastreams argument" do
|
@@ -613,7 +696,7 @@ describe ActiveFedora::Base do
|
|
613
696
|
end
|
614
697
|
|
615
698
|
it 'should return current relationships by name' do
|
616
|
-
|
699
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
|
617
700
|
@test_object2 = MockNamedRelationships.new
|
618
701
|
@test_object2.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(MockNamedRelationships))
|
619
702
|
@test_object.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(ActiveFedora::Base))
|
@@ -634,7 +717,7 @@ describe ActiveFedora::Base do
|
|
634
717
|
end
|
635
718
|
|
636
719
|
it 'should append and remove using helper methods for each outbound relationship' do
|
637
|
-
|
720
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
|
638
721
|
@test_object2 = MockCreateNamedRelationshipMethodsBase.new
|
639
722
|
@test_object2.should respond_to(:testing_append)
|
640
723
|
@test_object2.should respond_to(:testing_remove)
|
@@ -20,7 +20,7 @@ describe ActiveFedora::ContentModel do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
before(:each) do
|
23
|
-
|
23
|
+
ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns("_nextid_")
|
24
24
|
@test_cmodel = ActiveFedora::ContentModel.new
|
25
25
|
end
|
26
26
|
|