active-fedora 3.0.7 → 3.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|