active-fedora 4.0.0.rc1 → 4.0.0.rc2
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/Gemfile.lock +2 -11
- data/History.txt +4 -1
- data/active-fedora.gemspec +2 -2
- data/lib/active_fedora/associations/association_collection.rb +1 -1
- data/lib/active_fedora/associations/belongs_to_association.rb +1 -1
- data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +1 -1
- data/lib/active_fedora/base.rb +10 -6
- data/lib/active_fedora/file_management.rb +1 -1
- data/lib/active_fedora/fixture_loader.rb +1 -1
- data/lib/active_fedora/model.rb +39 -38
- data/lib/active_fedora/nokogiri_datastream.rb +1 -1
- data/lib/active_fedora/persistence.rb +9 -11
- data/lib/active_fedora/predicates.rb +2 -2
- data/lib/active_fedora/rdf_datastream.rb +49 -7
- data/lib/active_fedora/relationships.rb +6 -9
- data/lib/active_fedora/service_definitions.rb +1 -1
- data/lib/active_fedora/solr_service.rb +15 -8
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora.rake +3 -5
- data/lib/tasks/active_fedora_dev.rake +2 -1
- data/spec/fixtures/solr_rdf_descMetadata.nt +7 -0
- data/spec/integration/base_file_management_spec.rb +1 -1
- data/spec/integration/base_find_by_fields_spec.rb +16 -14
- data/spec/integration/base_spec.rb +10 -9
- data/spec/integration/datastream_collections_spec.rb +5 -5
- data/spec/integration/datastream_spec.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +1 -1
- data/spec/integration/model_spec.rb +14 -11
- data/spec/integration/mods_article_integration_spec.rb +2 -2
- data/spec/integration/nokogiri_datastream_spec.rb +1 -1
- data/spec/integration/ntriples_datastream_spec.rb +1 -0
- data/spec/integration/rels_ext_datastream_spec.rb +5 -6
- data/spec/integration/semantic_node_spec.rb +0 -1
- data/spec/integration/solr_service_spec.rb +8 -8
- data/spec/unit/base_extra_spec.rb +47 -7
- data/spec/unit/base_file_management_spec.rb +1 -1
- data/spec/unit/base_spec.rb +44 -15
- data/spec/unit/model_spec.rb +16 -29
- data/spec/unit/ntriples_datastream_spec.rb +152 -1
- data/spec/unit/relationships_spec.rb +16 -18
- data/spec/unit/solr_config_options_spec.rb +1 -3
- data/spec/unit/solr_service_spec.rb +12 -24
- metadata +68 -86
- data/spec/integration/base_loader_spec.rb +0 -40
@@ -31,24 +31,27 @@ describe ActiveFedora::Model do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
describe '#find' do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
describe "with :all" do
|
35
|
+
it "should return an array of instances of the calling Class" do
|
36
|
+
result = ModelIntegrationSpec::Basic.find(:all)
|
37
|
+
result.should be_instance_of(Array)
|
38
|
+
# this test is meaningless if the array length is zero
|
39
|
+
result.length.should > 0
|
40
|
+
result.each do |obj|
|
41
|
+
obj.class.should == ModelIntegrationSpec::Basic
|
42
|
+
end
|
41
43
|
end
|
42
44
|
end
|
45
|
+
describe "#find with a valid pid" do
|
46
|
+
subject { ActiveFedora::Base.find('hydrangea:fixture_mods_article1') }
|
47
|
+
it { should be_instance_of HydrangeaArticle}
|
48
|
+
end
|
43
49
|
end
|
44
50
|
|
45
|
-
describe "#find_document with a valid pid" do
|
46
|
-
subject { ActiveFedora::Base.find_document('hydrangea:fixture_mods_article1') }
|
47
|
-
it { should be_instance_of HydrangeaArticle}
|
48
|
-
end
|
49
51
|
|
50
52
|
describe '#load_instance' do
|
51
53
|
it "should return an object of the given Model whose inner object is nil" do
|
54
|
+
ActiveSupport::Deprecation.expects(:warn).with("load_instance is deprecated. Use find instead")
|
52
55
|
result = ModelIntegrationSpec::Basic.load_instance(@test_instance.pid)
|
53
56
|
result.class.should == ModelIntegrationSpec::Basic
|
54
57
|
result.inner_object.new?.should be_false
|
@@ -21,7 +21,7 @@ describe ActiveFedora::Base do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
before(:each) do
|
24
|
-
@test_article = HydrangeaArticle.
|
24
|
+
@test_article = HydrangeaArticle.find("hydrangea:fixture_mods_article1")
|
25
25
|
end
|
26
26
|
|
27
27
|
describe ".update_indexed_attributes" do
|
@@ -37,7 +37,7 @@ describe ActiveFedora::Base do
|
|
37
37
|
@test_article.update_indexed_attributes(test_args[:params], test_args[:opts])
|
38
38
|
@test_article.get_values_from_datastream("descMetadata", [{:person=>0}, :first_name]).should == ["Replacement FirstName"]
|
39
39
|
@test_article.save
|
40
|
-
retrieved_article = HydrangeaArticle.
|
40
|
+
retrieved_article = HydrangeaArticle.find("hydrangea:fixture_mods_article1")
|
41
41
|
retrieved_article.get_values_from_datastream("descMetadata", [{:person=>0}, :first_name]).should == ["Replacement FirstName"]
|
42
42
|
end
|
43
43
|
end
|
@@ -26,7 +26,7 @@ describe ActiveFedora::NokogiriDatastream do
|
|
26
26
|
before do
|
27
27
|
@pid = "hydrangea:fixture_mods_article1"
|
28
28
|
@test_solr_object = HydrangeaArticle2.load_instance_from_solr(@pid)
|
29
|
-
@test_object = HydrangeaArticle2.
|
29
|
+
@test_object = HydrangeaArticle2.find(@pid)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should return the same values whether getting from solr or Fedora" do
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe ActiveFedora::NtriplesRDFDatastream do
|
4
4
|
before do
|
5
5
|
class MyDatastream < ActiveFedora::NtriplesRDFDatastream
|
6
|
+
register_vocabularies RDF::DC, RDF::FOAF, RDF::RDFS
|
6
7
|
map_predicates do |map|
|
7
8
|
map.title(:in => RDF::DC)
|
8
9
|
map.part(:to => "hasPart", :in => RDF::DC)
|
@@ -73,8 +73,7 @@ describe ActiveFedora::RelsExtDatastream do
|
|
73
73
|
@test_object.save
|
74
74
|
# make sure that _something_ was actually added to the object's relationships hash
|
75
75
|
@test_object.ids_for_outbound(:is_member_of).size.should == 1
|
76
|
-
|
77
|
-
new_rels = ActiveFedora::Base.load_instance(@test_object.pid).relationships
|
76
|
+
new_rels = ActiveFedora::Base.find(@test_object.pid).relationships
|
78
77
|
new_rels.should == @test_object.relationships
|
79
78
|
end
|
80
79
|
|
@@ -115,16 +114,16 @@ describe ActiveFedora::RelsExtDatastream do
|
|
115
114
|
model_rel = MockAFRelsSolr.to_class_uri
|
116
115
|
#check inbound correct, testing goes to :has_part and testing2 goes to :has_member
|
117
116
|
#get solr doc for @test_object2
|
118
|
-
solr_doc = MockAFRelsSolr.find_by_solr(@test_object2.pid).
|
117
|
+
solr_doc = MockAFRelsSolr.find_by_solr(@test_object2.pid).first
|
119
118
|
test_from_solr_object2 = MockAFRelsSolr.new
|
120
119
|
test_from_solr_object2.rels_ext.from_solr(solr_doc)
|
121
|
-
solr_doc = MockAFRelsSolr.find_by_solr(@test_object3.pid).
|
120
|
+
solr_doc = MockAFRelsSolr.find_by_solr(@test_object3.pid).first
|
122
121
|
test_from_solr_object3 = MockAFRelsSolr.new
|
123
122
|
test_from_solr_object3.rels_ext.from_solr(solr_doc)
|
124
|
-
solr_doc = MockAFRelsSolr.find_by_solr(@test_object4.pid).
|
123
|
+
solr_doc = MockAFRelsSolr.find_by_solr(@test_object4.pid).first
|
125
124
|
test_from_solr_object4 = MockAFRelsSolr.new
|
126
125
|
test_from_solr_object4.rels_ext.from_solr(solr_doc)
|
127
|
-
solr_doc = MockAFRelsSolr.find_by_solr(@test_object5.pid).
|
126
|
+
solr_doc = MockAFRelsSolr.find_by_solr(@test_object5.pid).first
|
128
127
|
test_from_solr_object5 = MockAFRelsSolr.new
|
129
128
|
test_from_solr_object5.rels_ext.from_solr(solr_doc)
|
130
129
|
|
@@ -152,7 +152,6 @@ describe ActiveFedora::SemanticNode do
|
|
152
152
|
collection_members.first.pid.should == @test_object.pid
|
153
153
|
collection_members.first.class.should == @test_object.class
|
154
154
|
end
|
155
|
-
it "should create useable inbound finders if :inbound is set to true"
|
156
155
|
end
|
157
156
|
|
158
157
|
describe "inbound relationship finders" do
|
@@ -43,12 +43,12 @@ describe ActiveFedora::SolrService do
|
|
43
43
|
@foo_content = @foo_object.datastreams['descMetadata'].content
|
44
44
|
end
|
45
45
|
after(:all) do
|
46
|
-
@test_object.delete
|
47
|
-
@foo_object.delete
|
46
|
+
# @test_object.delete
|
47
|
+
# @foo_object.delete
|
48
48
|
end
|
49
49
|
it "should return an array of objects that are of the class stored in active_fedora_model_s" do
|
50
50
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@test_object.pid)} OR id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
51
|
-
solr_result = ActiveFedora::SolrService.
|
51
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
52
52
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result)
|
53
53
|
result.length.should == 2
|
54
54
|
result.each do |r|
|
@@ -58,7 +58,7 @@ describe ActiveFedora::SolrService do
|
|
58
58
|
|
59
59
|
it 'should load objects from solr data if a :load_from_solr option is passed in' do
|
60
60
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@test_object.pid)} OR id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
61
|
-
solr_result = ActiveFedora::SolrService.
|
61
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
62
62
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result,{:load_from_solr=>true})
|
63
63
|
result.length.should == 2
|
64
64
|
result.each do |r|
|
@@ -75,7 +75,7 @@ describe ActiveFedora::SolrService do
|
|
75
75
|
|
76
76
|
it 'should #reify a lightweight object as a new instance' do
|
77
77
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
78
|
-
solr_result = ActiveFedora::SolrService.
|
78
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
79
79
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result,{:load_from_solr=>true})
|
80
80
|
solr_foo = result.first
|
81
81
|
real_foo = solr_foo.reify
|
@@ -87,7 +87,7 @@ describe ActiveFedora::SolrService do
|
|
87
87
|
|
88
88
|
it 'should #reify! a lightweight object within the same instance' do
|
89
89
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
90
|
-
solr_result = ActiveFedora::SolrService.
|
90
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
91
91
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result,{:load_from_solr=>true})
|
92
92
|
solr_foo = result.first
|
93
93
|
solr_foo.inner_object.should be_a(ActiveFedora::SolrDigitalObject)
|
@@ -98,7 +98,7 @@ describe ActiveFedora::SolrService do
|
|
98
98
|
|
99
99
|
it 'should raise an exception when attempting to reify a first-class object' do
|
100
100
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
101
|
-
solr_result = ActiveFedora::SolrService.
|
101
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
102
102
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result,{:load_from_solr=>true})
|
103
103
|
solr_foo = result.first
|
104
104
|
lambda {solr_foo.reify}.should_not raise_exception
|
@@ -109,7 +109,7 @@ describe ActiveFedora::SolrService do
|
|
109
109
|
|
110
110
|
it 'should call load_instance_from_solr if :load_from_solr option passed in' do
|
111
111
|
query = "id\:#{ActiveFedora::SolrService.escape_uri_for_query(@test_object.pid)} OR id\:#{ActiveFedora::SolrService.escape_uri_for_query(@foo_object.pid)}"
|
112
|
-
solr_result = ActiveFedora::SolrService.
|
112
|
+
solr_result = ActiveFedora::SolrService.query(query)
|
113
113
|
ActiveFedora::Base.expects(:load_instance_from_solr).times(1)
|
114
114
|
FooObject.expects(:load_instance_from_solr).times(1)
|
115
115
|
result = ActiveFedora::SolrService.reify_solr_results(solr_result,{:load_from_solr=>true})
|
@@ -68,15 +68,26 @@ describe ActiveFedora::Base do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
describe ".update_index" do
|
71
|
+
before do
|
72
|
+
mock_conn = mock("SolrConnection")
|
73
|
+
mock_conn.expects(:add)
|
74
|
+
mock_conn.expects(:commit)
|
75
|
+
mock_ss = mock("SolrService")
|
76
|
+
mock_ss.stubs(:conn).returns(mock_conn)
|
77
|
+
ActiveFedora::SolrService.stubs(:instance).returns(mock_ss)
|
78
|
+
end
|
79
|
+
|
71
80
|
it "should call .to_solr on all MetadataDatastreams AND RelsExtDatastreams and pass the resulting document to solr" do
|
72
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock("SolrConnection", :update)))
|
73
81
|
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
74
82
|
mock1 = mock("ds1", :to_solr)
|
75
83
|
mock2 = mock("ds2", :to_solr)
|
76
84
|
mock3 = mock("RELS-EXT")
|
77
85
|
|
78
86
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
79
|
-
mock_datastreams.values.each
|
87
|
+
mock_datastreams.values.each do |ds|
|
88
|
+
ds.stubs(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
89
|
+
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
90
|
+
end
|
80
91
|
mock1.expects(:solrize_profile)
|
81
92
|
mock2.expects(:solrize_profile)
|
82
93
|
mock3.expects(:solrize_profile)
|
@@ -88,12 +99,36 @@ describe ActiveFedora::Base do
|
|
88
99
|
@test_object.expects(:datastreams).returns(mock_datastreams)
|
89
100
|
@test_object.expects(:solrize_profile)
|
90
101
|
@test_object.expects(:solrize_relationships)
|
91
|
-
@test_object.
|
102
|
+
@test_object.update_index
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should call .to_solr on all RDFDatastreams and pass the resulting document to solr" do
|
106
|
+
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
107
|
+
mock1 = mock("ds1", :to_solr)
|
108
|
+
mock2 = mock("ds2", :to_solr)
|
109
|
+
mock3 = mock("RELS-EXT")
|
110
|
+
|
111
|
+
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
112
|
+
mock_datastreams.values.each do |ds|
|
113
|
+
ds.stubs(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
|
114
|
+
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
115
|
+
end
|
116
|
+
mock1.expects(:solrize_profile)
|
117
|
+
mock2.expects(:solrize_profile)
|
118
|
+
mock3.expects(:solrize_profile)
|
119
|
+
mock1.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
120
|
+
mock2.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
121
|
+
mock3.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
122
|
+
#mock3.expects(:kind_of?).with(ActiveFedora::RelsExtDatastream).returns(true)
|
123
|
+
|
124
|
+
@test_object.expects(:datastreams).returns(mock_datastreams)
|
125
|
+
@test_object.expects(:solrize_profile)
|
126
|
+
@test_object.expects(:solrize_relationships)
|
127
|
+
@test_object.update_index
|
92
128
|
end
|
93
129
|
|
94
|
-
it "should retrieve a solr Connection and call Connection.
|
95
|
-
|
96
|
-
@test_object.send :update_index
|
130
|
+
it "should retrieve a solr Connection and call Connection.add" do
|
131
|
+
@test_object.update_index
|
97
132
|
end
|
98
133
|
|
99
134
|
end
|
@@ -104,8 +139,13 @@ describe ActiveFedora::Base do
|
|
104
139
|
end
|
105
140
|
|
106
141
|
it "should delete object from repository and index" do
|
107
|
-
ActiveFedora::SolrService.instance.conn.expects(:delete).with("__DO_NOT_USE__")
|
108
142
|
@test_object.inner_object.stubs(:delete)
|
143
|
+
mock_conn = mock("SolrConnection")
|
144
|
+
mock_conn.expects(:delete_by_id).with("__DO_NOT_USE__")
|
145
|
+
mock_conn.expects(:commit)
|
146
|
+
mock_ss = mock("SolrService")
|
147
|
+
mock_ss.stubs(:conn).returns(mock_conn)
|
148
|
+
ActiveFedora::SolrService.stubs(:instance).returns(mock_ss)
|
109
149
|
@test_object.expects(:inbound_relationships).returns({})
|
110
150
|
@test_object.delete
|
111
151
|
end
|
@@ -30,7 +30,7 @@ describe ActiveFedora::Base do
|
|
30
30
|
mock_child = mock("object")
|
31
31
|
mock_child.expects(:add_relationship).with(:is_part_of, @base)
|
32
32
|
mock_child.expects(:save)
|
33
|
-
ActiveFedora::Base.expects(:
|
33
|
+
ActiveFedora::Base.expects(:find).with("_PID_").returns(mock_child)
|
34
34
|
@base.file_objects_append("_PID_")
|
35
35
|
end
|
36
36
|
end
|
data/spec/unit/base_spec.rb
CHANGED
@@ -328,8 +328,6 @@ describe ActiveFedora::Base do
|
|
328
328
|
end
|
329
329
|
|
330
330
|
describe '.save' do
|
331
|
-
|
332
|
-
|
333
331
|
it "should return true and set persisted if object and datastreams all save successfully" do
|
334
332
|
stub_get(@this_pid)
|
335
333
|
stub_add_ds(@this_pid, ['RELS-EXT'])
|
@@ -403,6 +401,19 @@ describe ActiveFedora::Base do
|
|
403
401
|
|
404
402
|
@test_object.save
|
405
403
|
end
|
404
|
+
it "should update solr index with all metadata if any RDFDatastreams have changed" do
|
405
|
+
stub_ingest(@this_pid)
|
406
|
+
stub_add_ds(@this_pid, ['ds1', 'RELS-EXT'])
|
407
|
+
|
408
|
+
dirty_ds = ActiveFedora::NtriplesRDFDatastream.new(@test_object.inner_object, 'ds1')
|
409
|
+
rels_ds = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
|
410
|
+
rels_ds.model = @test_object
|
411
|
+
@test_object.add_datastream(rels_ds)
|
412
|
+
@test_object.add_datastream(dirty_ds)
|
413
|
+
@test_object.expects(:update_index)
|
414
|
+
|
415
|
+
@test_object.save
|
416
|
+
end
|
406
417
|
it "should NOT update solr index if no MetadataDatastreams have changed" do
|
407
418
|
pending "Rels-ext is getting automatically added so we can't test this."
|
408
419
|
ActiveFedora::DigitalObject.any_instance.stubs(:save)
|
@@ -497,11 +508,11 @@ describe ActiveFedora::Base do
|
|
497
508
|
end
|
498
509
|
|
499
510
|
it "should add pid, system_create_date and system_modified_date from object attributes" do
|
500
|
-
@test_object.expects(:create_date).returns("
|
501
|
-
@test_object.expects(:modified_date).returns("
|
511
|
+
@test_object.expects(:create_date).returns("2012-03-06T03:12:02Z")
|
512
|
+
@test_object.expects(:modified_date).returns("2012-03-07T03:12:02Z")
|
502
513
|
solr_doc = @test_object.to_solr
|
503
|
-
solr_doc["system_create_dt"].should eql("
|
504
|
-
solr_doc["system_modified_dt"].should eql("
|
514
|
+
solr_doc["system_create_dt"].should eql("2012-03-06T03:12:02Z")
|
515
|
+
solr_doc["system_modified_dt"].should eql("2012-03-07T03:12:02Z")
|
505
516
|
solr_doc[:id].should eql("#{@test_object.pid}")
|
506
517
|
end
|
507
518
|
|
@@ -526,11 +537,11 @@ describe ActiveFedora::Base do
|
|
526
537
|
end
|
527
538
|
|
528
539
|
it "should add pid, system_create_date and system_modified_date from object attributes" do
|
529
|
-
@test_object.expects(:create_date).returns("
|
530
|
-
@test_object.expects(:modified_date).returns("
|
540
|
+
@test_object.expects(:create_date).returns("2012-03-04T03:12:02Z")
|
541
|
+
@test_object.expects(:modified_date).returns("2012-03-07T03:12:02Z")
|
531
542
|
solr_doc = @test_object.to_solr
|
532
|
-
solr_doc["system_create_dt"].should eql("
|
533
|
-
solr_doc["system_modified_dt"].should eql("
|
543
|
+
solr_doc["system_create_dt"].should eql("2012-03-04T03:12:02Z")
|
544
|
+
solr_doc["system_modified_dt"].should eql("2012-03-07T03:12:02Z")
|
534
545
|
solr_doc[:id].should eql("#{@test_object.pid}")
|
535
546
|
end
|
536
547
|
|
@@ -552,8 +563,8 @@ describe ActiveFedora::Base do
|
|
552
563
|
end
|
553
564
|
|
554
565
|
it "should use mappings.yml to decide names of solr fields" do
|
555
|
-
cdate = "2008-07-02T05:09:
|
556
|
-
mdate = "2009-07-07T23:37:
|
566
|
+
cdate = "2008-07-02T05:09:42Z"
|
567
|
+
mdate = "2009-07-07T23:37:18Z"
|
557
568
|
@test_object.stubs(:create_date).returns(cdate)
|
558
569
|
@test_object.stubs(:modified_date).returns(mdate)
|
559
570
|
solr_doc = @test_object.to_solr
|
@@ -575,18 +586,36 @@ describe ActiveFedora::Base do
|
|
575
586
|
|
576
587
|
it "should call .to_solr on all MetadataDatastreams and NokogiriDatastreams, passing the resulting document to solr" do
|
577
588
|
mock1 = mock("ds1", :to_solr)
|
578
|
-
mock1.expects(:solrize_profile)
|
579
589
|
mock2 = mock("ds2", :to_solr)
|
580
|
-
|
581
|
-
ngds = mock("ngds")
|
590
|
+
ngds = mock("ngds", :to_solr)
|
582
591
|
ngds.expects(:solrize_profile)
|
592
|
+
mock1.expects(:solrize_profile)
|
593
|
+
mock2.expects(:solrize_profile)
|
594
|
+
mock1.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
595
|
+
mock1.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
583
596
|
mock1.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
597
|
+
mock2.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
598
|
+
mock2.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
584
599
|
mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
600
|
+
ngds.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
601
|
+
ngds.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
585
602
|
|
586
603
|
@test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
|
604
|
+
@test_object.expects(:solrize_profile)
|
605
|
+
@test_object.expects(:solrize_relationships)
|
606
|
+
@test_object.to_solr
|
607
|
+
end
|
608
|
+
it "should call .to_solr on all RDFDatastreams, passing the resulting document to solr" do
|
609
|
+
mock = mock("ds1", :to_solr)
|
610
|
+
mock.expects(:solrize_profile)
|
611
|
+
mock.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
612
|
+
|
613
|
+
@test_object.expects(:datastreams).returns({:ds1 => mock})
|
614
|
+
@test_object.expects(:solrize_profile)
|
587
615
|
@test_object.expects(:solrize_relationships)
|
588
616
|
@test_object.to_solr
|
589
617
|
end
|
618
|
+
|
590
619
|
it "should call .to_solr on the relationships rels-ext is dirty" do
|
591
620
|
@test_object.add_relationship(:has_collection_member, "info:fedora/foo:member")
|
592
621
|
rels_ext = @test_object.rels_ext
|
data/spec/unit/model_spec.rb
CHANGED
@@ -75,38 +75,29 @@ describe ActiveFedora::Model do
|
|
75
75
|
describe '#find' do
|
76
76
|
|
77
77
|
it "(:all) should query solr for all objects with :active_fedora_model_s of self.class" do
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
mock_solr.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic', :rows=>1001).returns(mock_result)
|
82
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
83
|
-
SpecModel::Basic.expects(:load_instance).with("changeme:30").returns("Fake Object1")
|
84
|
-
SpecModel::Basic.expects(:load_instance).with("changeme:22").returns("Fake Object2")
|
78
|
+
ActiveFedora::SolrService.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic', :rows=>1001).returns([{"id" => "changeme:30"}, {"id" => "changeme:22"}])
|
79
|
+
SpecModel::Basic.expects(:find_one).with("changeme:30").returns("Fake Object1")
|
80
|
+
SpecModel::Basic.expects(:find_one).with("changeme:22").returns("Fake Object2")
|
85
81
|
SpecModel::Basic.find(:all, :rows=>1001).should == ["Fake Object1", "Fake Object2"]
|
86
82
|
end
|
87
|
-
|
88
|
-
|
89
|
-
SpecModel::Basic.expects(:
|
90
|
-
SpecModel::Basic.
|
83
|
+
it "should use SpecModel::Basic.allocate.init_with to instantiate an object" do
|
84
|
+
ActiveFedora::ContentModel.expects(:known_models_for).returns([SpecModel::Basic])
|
85
|
+
SpecModel::Basic.any_instance.expects(:init_with).returns(mock("Model", :adapt_to=>SpecModel::Basic ))
|
86
|
+
SpecModel::Basic.expects(:connection_for_pid).with("_PID_")
|
87
|
+
SpecModel::Basic.find("_PID_")
|
91
88
|
end
|
92
89
|
end
|
93
90
|
|
94
91
|
describe '#count' do
|
95
92
|
|
96
93
|
it "should return a count" do
|
97
|
-
|
98
|
-
|
99
|
-
mock_result.expects(:total_hits).returns(7)
|
100
|
-
mock_solr.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic', :rows=>0).returns(mock_result)
|
101
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
94
|
+
mock_result = {'response'=>{'numFound'=>7}}
|
95
|
+
ActiveFedora::SolrService.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic', :rows=>0, :raw=>true).returns(mock_result)
|
102
96
|
SpecModel::Basic.count.should == 7
|
103
97
|
end
|
104
98
|
it "should allow conditions" do
|
105
|
-
|
106
|
-
|
107
|
-
mock_result.expects(:total_hits).returns(7)
|
108
|
-
mock_solr.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic AND foo:bar', :rows=>0).returns(mock_result)
|
109
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
99
|
+
mock_result = {'response'=>{'numFound'=>7}}
|
100
|
+
ActiveFedora::SolrService.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic AND foo:bar', :rows=>0, :raw=>true).returns(mock_result)
|
110
101
|
SpecModel::Basic.count(:conditions=>'foo:bar').should == 7
|
111
102
|
end
|
112
103
|
end
|
@@ -118,18 +109,14 @@ describe ActiveFedora::Model do
|
|
118
109
|
|
119
110
|
describe '#find_by_solr' do
|
120
111
|
it "(:all) should query solr for all objects with :active_fedora_model_s of self.class and return a Solr result" do
|
121
|
-
mock_solr = mock("SolrConnection")
|
122
112
|
mock_response = mock("SolrResponse")
|
123
|
-
|
124
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
113
|
+
ActiveFedora::SolrService.expects(:query).with('active_fedora_model_s:SpecModel\:\:Basic', {}).returns(mock_response)
|
125
114
|
|
126
115
|
SpecModel::Basic.find_by_solr(:all).should equal(mock_response)
|
127
116
|
end
|
128
117
|
it "(String) should query solr for an object with the given id and return the Solr Result" do
|
129
|
-
mock_solr = mock("SolrConnection")
|
130
118
|
mock_response = mock("SolrResponse")
|
131
|
-
|
132
|
-
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
119
|
+
ActiveFedora::SolrService.expects(:query).with('id:changeme\:30', {}).returns(mock_response)
|
133
120
|
|
134
121
|
SpecModel::Basic.find_by_solr("changeme:30").should equal(mock_response)
|
135
122
|
end
|
@@ -137,8 +124,8 @@ describe ActiveFedora::Model do
|
|
137
124
|
|
138
125
|
describe "load_instance" do
|
139
126
|
it "should use SpecModel::Basic.allocate.init_with to instantiate an object" do
|
140
|
-
|
141
|
-
SpecModel::Basic.expects(:
|
127
|
+
ActiveSupport::Deprecation.expects(:warn).with("load_instance is deprecated. Use find instead")
|
128
|
+
SpecModel::Basic.expects(:find).with("_PID_")
|
142
129
|
SpecModel::Basic.load_instance("_PID_")
|
143
130
|
end
|
144
131
|
end
|