active-fedora 3.1.0.rc3 → 3.1.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,9 @@ require 'active_fedora/metadata_datastream'
6
6
  describe ActiveFedora::Base do
7
7
 
8
8
  before(:each) do
9
+ stub_get('__nextid__')
9
10
  ActiveFedora::RubydoraConnection.instance.expects(:nextid).returns("__nextid__")
11
+ Rubydora::Repository.any_instance.stubs(:client).returns(@mock_client)
10
12
  @test_object = ActiveFedora::Base.new
11
13
  end
12
14
 
@@ -71,16 +73,17 @@ describe ActiveFedora::Base do
71
73
  # Actually uses self.to_solr internally to gather solr info from all metadata datastreams
72
74
  mock1 = mock("ds1", :to_solr)
73
75
  mock2 = mock("ds2", :to_solr)
74
- mock3 = mock("RELS-EXT", :to_solr)
76
+ mock3 = mock("RELS-EXT")
75
77
 
76
78
  mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
77
79
  mock_datastreams.values.each {|ds| ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)}
78
80
  mock1.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
79
81
  mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
80
82
  mock3.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
81
- mock3.expects(:kind_of?).with(ActiveFedora::RelsExtDatastream).returns(true)
83
+ #mock3.expects(:kind_of?).with(ActiveFedora::RelsExtDatastream).returns(true)
82
84
 
83
85
  @test_object.expects(:datastreams).returns(mock_datastreams)
86
+ @test_object.expects(:solrize_relationships)
84
87
  @test_object.update_index
85
88
  end
86
89
 
@@ -243,7 +243,7 @@ describe ActiveFedora::Base do
243
243
  it 'should create a datastream object from a string' do
244
244
  ds = @test_object.create_datastream("ActiveFedora::Datastream", 'NAME', {:blob=>"My file data"})
245
245
  ds.class.should == ActiveFedora::Datastream
246
- ds.dsLabel.should == ""
246
+ ds.dsLabel.should == nil
247
247
  ds.mimeType.should == "application/octet-stream"
248
248
  end
249
249
  end
@@ -27,16 +27,11 @@ describe ActiveFedora::Base do
27
27
  end
28
28
 
29
29
  before(:each) do
30
- @mock_repo = mock("repository")
31
- ActiveFedora::DigitalObject.any_instance.expects(:repository).returns(@mock_repo).at_least_once
32
30
  @this_pid = increment_pid.to_s
33
- @mock_repo.stubs(:datastream_dissemination)
31
+ stub_get(@this_pid)
32
+ Rubydora::Repository.any_instance.stubs(:client).returns(@mock_client)
34
33
  ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(@this_pid)
35
34
 
36
- @mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'RELS-EXT'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
37
- @mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'someData'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
38
- @mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'withText2'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
39
- @mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'withText'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
40
35
  @test_object = ActiveFedora::Base.new
41
36
  @test_history = FooHistory.new
42
37
  end
@@ -52,7 +47,12 @@ describe ActiveFedora::Base do
52
47
  describe '#new' do
53
48
  it "should create a new inner object" do
54
49
  Rubydora::DigitalObject.any_instance.expects(:save).never
55
- @mock_repo.expects(:datastreams).with(:pid => "test:1").returns("")
50
+ #@mock_repo.expects(:datastreams).with(:pid => "test:1").returns("")
51
+ @mock_client.stubs(:[]).with("objects/test%3A1/datastreams?format=xml").returns(@getter)
52
+ ['someData', 'withText', 'withText2', 'RELS-EXT'].each do |dsid|
53
+ @mock_client.stubs(:[]).with {|params| /objects\/test%3A1\/datastreams\/#{dsid}/.match(params)}.returns(@getter)
54
+ # @mock_client.stubs(:[]).with {|params| /objects\/test%3A1\/datastreams\/#{dsid}\/content/.match(params)}.returns(stub(:post=>'test:1'))
55
+ end
56
56
 
57
57
  result = ActiveFedora::Base.new(:pid=>"test:1")
58
58
  result.inner_object.should be_kind_of(Rubydora::DigitalObject)
@@ -75,24 +75,19 @@ describe ActiveFedora::Base do
75
75
 
76
76
  ### Methods for ActiveModel::Conversions
77
77
  it "should have to_param once it's saved" do
78
- @mock_repo.expects(:object).raises(RuntimeError)
78
+
79
79
  @test_object.to_param.should be_nil
80
- @test_object.expects(:create).returns(true)
81
- @test_object.save
82
- @test_object.expects(:persisted?).returns(true).at_least_once
80
+ @test_object.inner_object.expects(:new?).returns(false).at_least_once
83
81
  @test_object.to_param.should == @test_object.pid
84
82
  end
85
83
 
86
84
  it "should have to_key once it's saved" do
87
- @mock_repo.expects(:object).raises(RuntimeError)
88
85
  @test_object.to_key.should be_nil
89
- @test_object.expects(:create).returns(true)
90
- @test_object.save
91
- @test_object.expects(:persisted?).returns(true).at_least_once
86
+ @test_object.inner_object.expects(:new?).returns(false).at_least_once
92
87
  @test_object.to_key.should == [@test_object.pid]
93
88
  end
94
89
 
95
- it "should have to_model" do
90
+ it "should have to_model when it's saved" do
96
91
  @test_object.to_model.should be @test_object
97
92
  end
98
93
  ### end ActiveModel::Conversions
@@ -112,16 +107,18 @@ describe ActiveFedora::Base do
112
107
 
113
108
  describe "has_metadata" do
114
109
  before :each do
115
- @mock_repo.expects(:datastreams).with(:pid => "monkey:99").returns("")
116
- @mock_repo.expects(:object).with(:pid => "monkey:99").raises(RuntimeError)
117
- @mock_repo.expects(:ingest).with(:pid => "monkey:99").returns("monkey:99")
118
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'someData'}
119
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText'}
120
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText2'}
121
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
122
- @mock_repo.expects(:datastream_dissemination).with(:pid => 'monkey:99', :dsid => 'RELS-EXT')
110
+ @mock_client.stubs(:[]).with("objects/monkey%3A99/datastreams?format=xml").returns(@getter)
111
+ @mock_client.stubs(:[]).with("objects/monkey%3A99/datastreams/RELS-EXT/content").returns(@getter)
112
+
113
+ #Update record
114
+ @mock_client.stubs(:[]).with("objects/monkey%3A99").returns(stub('post', :post=>'monkey:99'))
115
+ #Update datastream
116
+ ['someData', 'withText', 'withText2', 'RELS-EXT'].each do |dsid|
117
+ @mock_client.stubs(:[]).with {|params| /objects\/monkey%3A99\/datastreams\/#{dsid}/.match(params)}.returns(stub('post', :post=>'monkey:99', :get=>''))
118
+ end
123
119
 
124
120
  @n = FooHistory.new(:pid=>"monkey:99")
121
+ @n.datastreams['RELS-EXT'].expects(:changed?).returns(true).at_least_once
125
122
  @n.expects(:update_index)
126
123
  @n.save
127
124
  end
@@ -153,7 +150,6 @@ describe ActiveFedora::Base do
153
150
  end
154
151
 
155
152
  it "should add self.class as the :active_fedora_model" do
156
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
157
153
  fields = @test_object.fields
158
154
  fields[:active_fedora_model][:values].should eql([@test_object.class.inspect])
159
155
  end
@@ -165,7 +161,6 @@ describe ActiveFedora::Base do
165
161
  mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
166
162
 
167
163
  @test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2})
168
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
169
164
  @test_object.fields
170
165
  end
171
166
  end
@@ -219,7 +214,10 @@ describe ActiveFedora::Base do
219
214
  end
220
215
 
221
216
  it 'should add a relationship to an object only if it does not exist already' do
222
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
217
+ next_pid = increment_pid.to_s
218
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(next_pid)
219
+ stub_get(next_pid)
220
+
223
221
  @test_object3 = ActiveFedora::Base.new
224
222
  @test_object.add_relationship(:has_part,@test_object3)
225
223
  r = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>@test_object3)
@@ -241,9 +239,13 @@ describe ActiveFedora::Base do
241
239
 
242
240
  describe '#remove_relationship' do
243
241
  it 'should remove a relationship from the relationships hash' do
244
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
242
+ next_pid = increment_pid.to_s
243
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(next_pid)
244
+ stub_get(next_pid)
245
245
  @test_object3 = ActiveFedora::Base.new
246
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
246
+ next_pid = increment_pid.to_s
247
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(next_pid)
248
+ stub_get(next_pid)
247
249
  @test_object4 = ActiveFedora::Base.new
248
250
  @test_object.add_relationship(:has_part,@test_object3)
249
251
  @test_object.add_relationship(:has_part,@test_object4)
@@ -273,14 +275,12 @@ describe ActiveFedora::Base do
273
275
 
274
276
 
275
277
  it "should return true and set persisted if object and datastreams all save successfully" do
276
- @mock_repo.expects(:ingest).with(:pid => @this_pid).returns(@this_pid)
277
- @mock_repo.expects(:object).with(:pid => @this_pid).raises(RuntimeError)
278
- @mock_repo.expects(:datastreams).with(:pid => @this_pid).returns("")
279
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
280
- @test_object.persisted?.should be false
278
+ stub_ingest(@this_pid)
279
+ stub_add_ds(@this_pid, ['RELS-EXT'])
280
+ @test_object.persisted?.should be false
281
281
  @test_object.expects(:update_index)
282
+ stub_get(@this_pid, true)
282
283
  @test_object.save.should == true
283
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("<objectProfile><objOwnerId>fedoraAdmin</objOwnerId></objectProfile>")
284
284
  @test_object.persisted?.should be true
285
285
  end
286
286
 
@@ -301,16 +301,10 @@ describe ActiveFedora::Base do
301
301
  end
302
302
 
303
303
  it "should call .save on any datastreams that are dirty" do
304
+ stub_ingest(@test_object.pid)
305
+ stub_add_ds(@test_object.pid, ['withText2', 'withText', 'RELS-EXT'])
304
306
  to = FooHistory.new
305
307
  to.expects(:update_index)
306
- @mock_repo.expects(:ingest).with(:pid => @this_pid).returns(@this_pid)
307
- @mock_repo.expects(:object).with(:pid => @this_pid).raises(RuntimeError)
308
- @mock_repo.expects(:datastreams).with(:pid => @this_pid).returns("")
309
-
310
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText2'}
311
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'withText'}
312
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'RELS-EXT'}
313
-
314
308
 
315
309
  to.datastreams["someData"].stubs(:changed?).returns(true)
316
310
  to.datastreams["someData"].stubs(:new_object?).returns(true)
@@ -319,28 +313,23 @@ describe ActiveFedora::Base do
319
313
  to.save
320
314
  end
321
315
  it "should call .save on any datastreams that are new" do
316
+ stub_ingest(@test_object.pid)
317
+ stub_add_ds(@test_object.pid, ['RELS-EXT'])
322
318
  ds = ActiveFedora::Datastream.new(@test_object.inner_object, 'ds_to_add')
323
319
  ds.content = "DS CONTENT"
324
320
  @test_object.add_datastream(ds)
325
321
  ds.expects(:save)
326
322
  @test_object.instance_variable_set(:@new_object, false)
327
323
  @test_object.expects(:refresh)
328
- @mock_repo.expects(:object).with(:pid => @this_pid).raises(RuntimeError).at_least_once
329
- @mock_repo.expects(:ingest).with(:pid => @test_object.pid)
330
- @mock_repo.expects(:datastreams).with(:pid => @test_object.pid).returns("")
331
- @mock_repo.expects(:add_datastream).with{ |x| x[:dsid] = "RELS-EXT"}
332
324
  @test_object.expects(:update_index)
333
325
  @test_object.save
334
326
  end
335
327
  it "should not call .save on any datastreams that are not dirty" do
328
+ stub_ingest(@test_object.pid)
336
329
  @test_object = FooHistory.new
337
330
  @test_object.expects(:update_index)
338
331
  @test_object.expects(:refresh)
339
332
 
340
- @mock_repo.expects(:ingest).with(:pid => @test_object.pid)
341
-
342
- @test_object.inner_object.expects(:new?).returns(true).twice
343
- @test_object.inner_object.expects(:datastreams).returns({'someData'=>mock('obj', :changed? => false)})
344
333
  @test_object.datastreams["someData"].should_not be_nil
345
334
  @test_object.datastreams['someData'].stubs(:changed?).returns(false)
346
335
  @test_object.datastreams['someData'].stubs(:new?).returns(false)
@@ -351,28 +340,21 @@ describe ActiveFedora::Base do
351
340
  @test_object.save
352
341
  end
353
342
  it "should update solr index with all metadata if any MetadataDatastreams have changed" do
354
- @mock_repo.expects(:ingest).with(:pid => nil)
355
- @mock_repo.expects(:modify_datastream).with{ |x| x[:pid] == nil && x[:dsid] == 'RELS-EXT'}
356
- @mock_repo.expects(:add_datastream).with {|params| params[:dsid] == 'ds1'}
357
- @mock_repo.expects(:datastream).with{ |x| x[:dsid] == 'ds1'}.returns("").at_least_once #raises(RuntimeError, "Fake Not found")
358
- @test_object.inner_object.expects(:new?).returns(true).twice
359
- @test_object.inner_object.expects(:datastreams).returns([])
360
- @test_object.inner_object.expects(:pid).at_least_once
343
+ # rels_ds.expects(:new?).returns(false).twice
344
+ stub_ingest(@test_object.pid)
345
+ stub_add_ds(@test_object.pid, ['ds1', 'RELS-EXT'])
361
346
 
362
347
  dirty_ds = ActiveFedora::MetadataDatastream.new(@test_object.inner_object, 'ds1')
363
348
  rels_ds = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
364
- rels_ds.expects(:new?).returns(false)
365
349
  rels_ds.model = @test_object
366
- mock2 = mock("ds2")
367
- mock2.stubs(:changed? => false)
368
- mock2.expects(:serialize!)
369
- @test_object.stubs(:datastreams).returns({:ds1 => dirty_ds, :ds2 => mock2, 'RELS-EXT'=>rels_ds})
350
+ @test_object.add_datastream(rels_ds)
351
+ @test_object.add_datastream(dirty_ds)
370
352
  @test_object.expects(:update_index)
371
- @test_object.expects(:refresh)
372
353
 
373
354
  @test_object.save
374
355
  end
375
356
  it "should NOT update solr index if no MetadataDatastreams have changed" do
357
+ pending ## Rels-ext is getting automatically added so we can't test this.
376
358
  ActiveFedora::DigitalObject.any_instance.stubs(:save)
377
359
  mock1 = mock("ds1")
378
360
  mock1.expects( :changed?).returns(false).at_least_once
@@ -380,12 +362,6 @@ describe ActiveFedora::Base do
380
362
  mock2 = mock("ds2")
381
363
  mock2.expects( :changed?).returns(false).at_least_once
382
364
  mock2.expects(:serialize!)
383
- mock_rels_ext = mock("rels-ext")
384
- mock_rels_ext.stubs(:dsid=>"RELS-EXT", :relationships=>{}, :add_relationship=>nil, :dirty= => nil)
385
- mock_rels_ext.expects( :changed?).returns(false).at_least_once
386
- mock_rels_ext.expects(:serialize!)
387
- mock_rels_ext.expects(:model=).with(@test_object)
388
- ActiveFedora::RelsExtDatastream.expects(:new).returns(mock_rels_ext)
389
365
  @test_object.stubs(:datastreams).returns({:ds1 => mock1, :ds2 => mock2})
390
366
  @test_object.expects(:update_index).never
391
367
  @test_object.expects(:refresh)
@@ -400,8 +376,8 @@ describe ActiveFedora::Base do
400
376
 
401
377
  rels_ext = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
402
378
  rels_ext.model = @test_object
403
- rels_ext.expects(:changed?).returns(true).times(3) # FIXME Rubydora is holding one object, while we have a different one.
404
- rels_ext.expects(:save).returns(true).twice #TODO why two times?
379
+ rels_ext.expects(:changed?).returns(true).twice
380
+ rels_ext.expects(:save).returns(true)
405
381
  rels_ext.expects(:serialize!)
406
382
  clean_ds = mock("ds2")
407
383
  clean_ds.stubs(:dirty? => false, :changed? => false, :new? => false)
@@ -436,7 +412,6 @@ describe ActiveFedora::Base do
436
412
  ds2 = ActiveFedora::MetadataDatastream.new(@test_object.inner_object, 'ds2')
437
413
  [ds1,ds2].each {|ds| ds.expects(:to_xml)}
438
414
 
439
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
440
415
  @test_object.expects(:datastreams).returns({:ds1 => ds1, :ds2 => ds2})
441
416
  @test_object.to_xml
442
417
  end
@@ -478,7 +453,7 @@ describe ActiveFedora::Base do
478
453
  end
479
454
 
480
455
  it "should add self.class as the :active_fedora_model" do
481
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
456
+ stub_get_content(@this_pid, ['someData', 'withText2', 'withText'])
482
457
  solr_doc = @test_history.to_solr
483
458
  solr_doc["active_fedora_model_s"].should eql("FooHistory")
484
459
  end
@@ -506,24 +481,21 @@ describe ActiveFedora::Base do
506
481
  end
507
482
 
508
483
  it "should call .to_solr on all MetadataDatastreams and NokogiriDatastreams, passing the resulting document to solr" do
509
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
510
484
  mock1 = mock("ds1", :to_solr)
511
485
  mock2 = mock("ds2", :to_solr)
512
- ngds = mock("ngds", :to_solr)
486
+ ngds = mock("ngds")
513
487
  mock1.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
514
488
  mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
515
- ngds.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
516
- ngds.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
517
489
 
518
490
  @test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
491
+ @test_object.expects(:solrize_relationships)
519
492
  @test_object.to_solr
520
493
  end
521
- it "should call .to_solr on the RELS-EXT datastream if it is dirty" do
522
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
494
+ it "should call .to_solr on the relationships rels-ext is dirty" do
523
495
  @test_object.add_relationship(:has_collection_member, "info:fedora/foo:member")
524
496
  rels_ext = @test_object.rels_ext
525
497
  rels_ext.dirty?.should == true
526
- rels_ext.expects(:to_solr)
498
+ @test_object.expects(:solrize_relationships)
527
499
  @test_object.to_solr
528
500
  end
529
501
 
@@ -545,7 +517,6 @@ describe ActiveFedora::Base do
545
517
 
546
518
  describe ".label=" do
547
519
  it "should set the label of the inner object" do
548
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
549
520
  @test_object.label.should_not == "foo label"
550
521
  @test_object.label = "foo label"
551
522
  @test_object.label.should == "foo label"
@@ -555,12 +526,20 @@ describe ActiveFedora::Base do
555
526
  it "should get a pid but not save on init" do
556
527
  Rubydora::DigitalObject.any_instance.expects(:save).never
557
528
  ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns('mooshoo:24')
529
+ @mock_client.stubs(:[]).with("objects/mooshoo%3A24/datastreams?format=xml").returns(@getter)
530
+ ['someData', 'withText', 'withText2', 'RELS-EXT'].each do |dsid|
531
+ @mock_client.stubs(:[]).with {|params| /objects\/mooshoo%3A24\/datastreams\/#{dsid}/.match(params)}.returns(@getter)
532
+ end
558
533
  f = FooHistory.new
559
534
  f.pid.should_not be_nil
560
535
  f.pid.should == 'mooshoo:24'
561
536
  end
562
537
  it "should not clobber a pid if i'm creating!" do
563
- @mock_repo.expects(:datastreams).with(:pid => "numbnuts:1").returns("")
538
+ @mock_client.stubs(:[]).with("objects/numbnuts%3A1/datastreams?format=xml").returns(@getter)
539
+
540
+ ['someData', 'withText', 'withText2', 'RELS-EXT'].each do |dsid|
541
+ @mock_client.stubs(:[]).with {|params| /objects\/numbnuts%3A1\/datastreams\/#{dsid}/.match(params)}.returns(@getter)
542
+ end
564
543
  f = FooHistory.new(:pid=>'numbnuts:1')
565
544
  f.pid.should == 'numbnuts:1'
566
545
 
@@ -591,7 +570,6 @@ describe ActiveFedora::Base do
591
570
  m.update_datastream_attributes( ds_values_hash )
592
571
  end
593
572
  it "should not do anything and should return an empty hash if the specified datastream does not exist" do
594
- @mock_repo.expects(:object).with(:pid => @this_pid).returns("")
595
573
  ds_values_hash = {
596
574
  "nonexistentDatastream"=>{ "notes"=>"foo" }
597
575
  }
@@ -628,6 +606,9 @@ describe ActiveFedora::Base do
628
606
  it "should take a :datastreams argument" do
629
607
  att= {"fubar"=>{"-1"=>"mork", "0"=>"york", "1"=>"mangle"}}
630
608
  m = FooHistory.new
609
+ ['withText', 'someData', 'withText2'].each do |dsid|
610
+ @mock_client.stubs(:[]).with {|params| /objects\/#{@this_pid}\/datastreams\/#{dsid}\/content/.match(params)}.returns(stub('getter/setter', :get=>'', :post=>@this_pid))
611
+ end
631
612
  m.update_indexed_attributes(att, :datastreams=>"withText")
632
613
  m.should_not be_nil
633
614
  m.datastreams['someData'].fubar_values.should == []
@@ -673,7 +654,9 @@ describe ActiveFedora::Base do
673
654
  end
674
655
 
675
656
  it 'should return current relationships by name' do
676
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
657
+ next_pid = increment_pid.to_s
658
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(next_pid)
659
+ stub_get(next_pid)
677
660
  @test_object2 = MockNamedRelationships.new
678
661
  @test_object2.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(MockNamedRelationships))
679
662
  @test_object.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(ActiveFedora::Base))
@@ -694,7 +677,9 @@ describe ActiveFedora::Base do
694
677
  end
695
678
 
696
679
  it 'should append and remove using helper methods for each outbound relationship' do
697
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(increment_pid.to_s)
680
+ next_pid = increment_pid.to_s
681
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(next_pid)
682
+ stub_get(next_pid)
698
683
  @test_object2 = MockCreateNamedRelationshipMethodsBase.new
699
684
  @test_object2.should respond_to(:testing_append)
700
685
  @test_object2.should respond_to(:testing_remove)
@@ -710,4 +695,22 @@ describe ActiveFedora::Base do
710
695
  @test_object2.relationships_by_name.should == {:self=>{"testing"=>[],"collection_members"=>[], "part_of"=>[], "parts_outbound"=>[]}}
711
696
  end
712
697
  end
698
+
699
+ describe ".solrize_relationships" do
700
+ it "should serialize the relationships into a Hash" do
701
+ graph = RDF::Graph.new
702
+ subject = RDF::URI.new "info:fedora/test:sample_pid"
703
+ graph.insert RDF::Statement.new(subject, ActiveFedora::Base.new.find_graph_predicate(:is_member_of), RDF::URI.new('info:fedora/demo:10'))
704
+ graph.insert RDF::Statement.new(subject, ActiveFedora::Base.new.find_graph_predicate(:is_part_of), RDF::URI.new('info:fedora/demo:11'))
705
+ graph.insert RDF::Statement.new(subject, ActiveFedora::Base.new.find_graph_predicate(:has_part), RDF::URI.new('info:fedora/demo:12'))
706
+ graph.insert RDF::Statement.new(subject, ActiveFedora::Base.new.find_graph_predicate(:conforms_to), "AnInterface")
707
+
708
+ @test_object.expects(:relationships).returns(graph)
709
+ solr_doc = @test_object.solrize_relationships
710
+ solr_doc["is_member_of_s"].should == ["info:fedora/demo:10"]
711
+ solr_doc["is_part_of_s"].should == ["info:fedora/demo:11"]
712
+ solr_doc["has_part_s"].should == ["info:fedora/demo:12"]
713
+ solr_doc["conforms_to_s"].should == ["AnInterface"]
714
+ end
715
+ end
713
716
  end
@@ -20,7 +20,9 @@ describe ActiveFedora::ContentModel do
20
20
  end
21
21
 
22
22
  before(:each) do
23
- ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns("_nextid_")
23
+ stub_get('__nextid__')
24
+ ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns("__nextid__")
25
+ Rubydora::Repository.any_instance.stubs(:client).returns(@mock_client)
24
26
  @test_cmodel = ActiveFedora::ContentModel.new
25
27
  end
26
28
 
@@ -18,33 +18,15 @@ describe ActiveFedora::Datastream do
18
18
  @test_datastream.to_param.should == 'foo%2ebar'
19
19
  end
20
20
 
21
- it 'should provide #save, #before_save and #after_save' do
22
- @test_datastream.should respond_to(:save)
23
- @test_datastream.should respond_to(:before_save)
24
- @test_datastream.should respond_to(:after_save)
25
- end
26
-
27
21
  describe '#save' do
28
- it 'should call #before_save and #after_save' do
29
- @mock_repo = mock('repository')
30
- @mock_repo.stubs(:add_datastream).with(:versionable => true, :pid => nil, :dsid => 'abcd', :controlGroup => 'M', :dsState => 'A', :content => 'hi there', :checksumType => 'DISABLED')
31
- @mock_repo.expects(:datastream).with(:dsid => 'abcd', :pid => nil)
32
- @test_object.inner_object.stubs(:repository).returns(@mock_repo)
33
- @test_object.inner_object.stubs(:pid).returns(@pid)
34
-
35
- @test_datastream.stubs(:last_modified_in_repository)
36
- @test_datastream.expects(:before_save)
37
- @test_datastream.expects(:after_save)
38
- @test_datastream.save
39
- end
40
-
41
- it "should set @dirty to false" do
22
+ it "should set dirty? to false" do
42
23
  @mock_repo = mock('repository')
43
24
  @mock_repo.stubs(:add_datastream).with(:versionable => true, :pid => @test_object.pid, :dsid => 'abcd', :controlGroup => 'M', :dsState => 'A', :content => 'hi there', :checksumType => 'DISABLED')
44
25
  @mock_repo.expects(:datastream).with(:dsid => 'abcd', :pid => @test_object.pid)
45
26
  @test_object.inner_object.stubs(:repository).returns(@mock_repo)
46
- @test_datastream.expects(:dirty=).with(false)
27
+ @test_datastream.dirty?.should be_true
47
28
  @test_datastream.save
29
+ @test_datastream.dirty?.should be_false
48
30
  end
49
31
  end
50
32
 
@@ -61,10 +43,11 @@ describe ActiveFedora::Datastream do
61
43
  end
62
44
 
63
45
  describe ".dirty?" do
64
- it "should return the value of the @dirty attribute" do
65
- @test_datastream.dirty.should equal(@test_datastream.dirty?)
46
+ it "should return the value of the @dirty attribute or changed?" do
47
+ @test_datastream.expects(:changed?).returns(false)
48
+ @test_datastream.dirty?.should be_false
66
49
  @test_datastream.dirty = "boo"
67
- @test_datastream.dirty?.should == "boo"
50
+ @test_datastream.dirty?.should be_true
68
51
  end
69
52
  end
70
53