active-fedora 8.2.1 → 8.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/active-fedora.gemspec +1 -2
- data/lib/active_fedora/datastream_collections.rb +4 -8
- data/lib/active_fedora/datastreams.rb +7 -9
- data/lib/active_fedora/version.rb +1 -1
- data/spec/config_helper.rb +3 -3
- data/spec/integration/associations_spec.rb +76 -76
- data/spec/integration/auditable_spec.rb +7 -7
- data/spec/integration/autosave_association_spec.rb +3 -3
- data/spec/integration/base_spec.rb +51 -51
- data/spec/integration/belongs_to_association_spec.rb +27 -27
- data/spec/integration/bug_spec.rb +1 -1
- data/spec/integration/collection_association_spec.rb +2 -2
- data/spec/integration/complex_rdf_datastream_spec.rb +32 -32
- data/spec/integration/datastream_collections_spec.rb +42 -42
- data/spec/integration/datastream_spec.rb +19 -19
- data/spec/integration/datastreams_spec.rb +25 -25
- data/spec/integration/delete_all_spec.rb +5 -5
- data/spec/integration/fedora_solr_sync_spec.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +9 -9
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +46 -47
- data/spec/integration/has_many_associations_spec.rb +17 -17
- data/spec/integration/json_serialization_spec.rb +2 -2
- data/spec/integration/load_from_solr_spec.rb +1 -1
- data/spec/integration/model_spec.rb +9 -9
- data/spec/integration/nested_attribute_spec.rb +17 -17
- data/spec/integration/ntriples_datastream_spec.rb +43 -43
- data/spec/integration/om_datastream_spec.rb +37 -37
- data/spec/integration/persistence_spec.rb +1 -1
- data/spec/integration/rdf_nested_attributes_spec.rb +9 -9
- data/spec/integration/relation_delegation_spec.rb +7 -7
- data/spec/integration/relation_spec.rb +2 -2
- data/spec/integration/rels_ext_datastream_spec.rb +3 -3
- data/spec/integration/scoped_query_spec.rb +14 -14
- data/spec/integration/solr_service_spec.rb +24 -24
- data/spec/support/mock_fedora.rb +9 -10
- data/spec/unit/active_fedora_spec.rb +20 -20
- data/spec/unit/attributes_spec.rb +24 -24
- data/spec/unit/base_active_model_spec.rb +6 -6
- data/spec/unit/base_cma_spec.rb +2 -2
- data/spec/unit/base_datastream_management_spec.rb +7 -7
- data/spec/unit/base_extra_spec.rb +20 -20
- data/spec/unit/base_spec.rb +141 -141
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +1 -1
- data/spec/unit/callback_spec.rb +12 -12
- data/spec/unit/code_configurator_spec.rb +7 -7
- data/spec/unit/config_spec.rb +2 -2
- data/spec/unit/content_model_spec.rb +19 -20
- data/spec/unit/core_spec.rb +1 -1
- data/spec/unit/datastream_collections_spec.rb +101 -101
- data/spec/unit/datastream_spec.rb +12 -12
- data/spec/unit/datastreams_spec.rb +39 -39
- data/spec/unit/file_configurator_spec.rb +117 -117
- data/spec/unit/has_and_belongs_to_many_collection_spec.rb +16 -16
- data/spec/unit/has_many_collection_spec.rb +5 -5
- data/spec/unit/inheritance_spec.rb +5 -5
- data/spec/unit/model_spec.rb +5 -5
- data/spec/unit/nom_datastream_spec.rb +5 -5
- data/spec/unit/ntriples_datastream_spec.rb +56 -56
- data/spec/unit/om_datastream_spec.rb +99 -99
- data/spec/unit/persistence_spec.rb +2 -2
- data/spec/unit/predicates_spec.rb +28 -28
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +10 -10
- data/spec/unit/query_spec.rb +66 -66
- data/spec/unit/rdf_datastream_spec.rb +10 -10
- data/spec/unit/rdf_resource_datastream_spec.rb +2 -2
- data/spec/unit/rdf_xml_writer_spec.rb +3 -3
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +9 -9
- data/spec/unit/relationship_graph_spec.rb +31 -31
- data/spec/unit/reload_on_save_spec.rb +3 -3
- data/spec/unit/rels_ext_datastream_spec.rb +28 -28
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +7 -7
- data/spec/unit/rubydora_connection_spec.rb +3 -3
- data/spec/unit/semantic_node_spec.rb +17 -17
- data/spec/unit/serializers_spec.rb +1 -1
- data/spec/unit/service_definitions_spec.rb +11 -11
- data/spec/unit/simple_datastream_spec.rb +6 -6
- data/spec/unit/solr_config_options_spec.rb +10 -10
- data/spec/unit/solr_digital_object_spec.rb +4 -4
- data/spec/unit/solr_service_spec.rb +41 -41
- data/spec/unit/unsaved_digital_object_spec.rb +8 -8
- data/spec/unit/validations_spec.rb +6 -6
- metadata +4 -4
@@ -11,17 +11,17 @@ describe RSpec::Matchers, "have_many_associated_active_fedora_objects_matcher" d
|
|
11
11
|
let(:association) { :association }
|
12
12
|
|
13
13
|
it 'should match when association is properly stored in fedora' do
|
14
|
-
subject.class.
|
15
|
-
subject.
|
16
|
-
subject.
|
14
|
+
expect(subject.class).to receive(:find).with(pid).and_return(subject)
|
15
|
+
expect(subject).to receive(association).and_return([object1,object2])
|
16
|
+
expect(subject).to have_many_associated_active_fedora_objects(association).with_objects([object1, object2])
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should not match when association is different' do
|
20
|
-
subject.class.
|
21
|
-
subject.
|
22
|
-
|
23
|
-
subject.
|
24
|
-
}.
|
20
|
+
expect(subject.class).to receive(:find).with(pid).and_return(subject)
|
21
|
+
expect(subject).to receive(association).and_return([object1,object3])
|
22
|
+
expect {
|
23
|
+
expect(subject).to have_many_associated_active_fedora_objects(association).with_objects([object1, object2])
|
24
|
+
}.to (
|
25
25
|
raise_error(
|
26
26
|
RSpec::Expectations::ExpectationNotMetError,
|
27
27
|
/expected #{subject.class} PID=#{pid} association: #{association.inspect}/
|
@@ -30,9 +30,9 @@ describe RSpec::Matchers, "have_many_associated_active_fedora_objects_matcher" d
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should require :with_objects option' do
|
33
|
-
|
34
|
-
subject.
|
35
|
-
}.
|
33
|
+
expect {
|
34
|
+
expect(subject).to have_many_associated_active_fedora_objects(association)
|
35
|
+
}.to(
|
36
36
|
raise_error(
|
37
37
|
ArgumentError,
|
38
38
|
"subject.should have_many_associated_active_fedora_objects(<association_name>).with_objects(<objects[]>)"
|
@@ -11,17 +11,17 @@ describe RSpec::Matchers, "have_predicate_matcher" do
|
|
11
11
|
let(:predicate) { :predicate }
|
12
12
|
|
13
13
|
it 'should match when relationship is "what we have in Fedora"' do
|
14
|
-
subject.class.
|
15
|
-
subject.
|
16
|
-
subject.
|
14
|
+
expect(subject.class).to receive(:find).with(pid).and_return(subject)
|
15
|
+
expect(subject).to receive(:relationships).with(predicate).and_return([object1,object2])
|
16
|
+
expect(subject).to have_predicate(predicate).with_objects([object1, object2])
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should not match when relationship is different' do
|
20
|
-
subject.class.
|
21
|
-
subject.
|
22
|
-
|
23
|
-
subject.
|
24
|
-
}.
|
20
|
+
expect(subject.class).to receive(:find).with(pid).and_return(subject)
|
21
|
+
expect(subject).to receive(:relationships).with(predicate).and_return([object1,object3])
|
22
|
+
expect {
|
23
|
+
expect(subject).to have_predicate(predicate).with_objects([object1, object2])
|
24
|
+
}.to (
|
25
25
|
raise_error(
|
26
26
|
RSpec::Expectations::ExpectationNotMetError,
|
27
27
|
/expected #{subject.class} PID=#{pid} relationship: #{predicate.inspect}/
|
@@ -30,9 +30,9 @@ describe RSpec::Matchers, "have_predicate_matcher" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should require :with_objects option' do
|
33
|
-
|
34
|
-
subject.
|
35
|
-
}.
|
33
|
+
expect {
|
34
|
+
expect(subject).to have_predicate(predicate)
|
35
|
+
}.to(
|
36
36
|
raise_error(
|
37
37
|
ArgumentError,
|
38
38
|
"subject.should have_predicate(<predicate>).with_objects(<objects[]>)"
|
@@ -15,14 +15,14 @@ describe RSpec::Matchers, "match_fedora_datastream" do
|
|
15
15
|
|
16
16
|
it 'should match based on request' do
|
17
17
|
stub_request(:get, datastream_url).to_return(:body => expected_xml, :status => 200)
|
18
|
-
subject.
|
18
|
+
expect(subject).to match_fedora_datastream(datastream_name).with(expected_xml)
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should handle non-matching requests' do
|
22
22
|
stub_request(:get, datastream_url).to_return(:body => "<parent>#{expected_xml}</parent>", :status => 200)
|
23
|
-
|
24
|
-
subject.
|
25
|
-
}.
|
23
|
+
expect {
|
24
|
+
expect(subject).to match_fedora_datastream(datastream_name).with(expected_xml)
|
25
|
+
}.to(
|
26
26
|
raise_error(
|
27
27
|
RSpec::Expectations::ExpectationNotMetError,
|
28
28
|
/expected #{subject.class} PID=#{pid} datastream: #{datastream_name.inspect} to match Fedora/
|
@@ -32,9 +32,9 @@ describe RSpec::Matchers, "match_fedora_datastream" do
|
|
32
32
|
|
33
33
|
it 'should require :with option' do
|
34
34
|
stub_request(:get, datastream_url).to_return(:body => "<parent>#{expected_xml}</parent>", :status => 200)
|
35
|
-
|
36
|
-
subject.
|
37
|
-
}.
|
35
|
+
expect {
|
36
|
+
expect(subject).to match_fedora_datastream(datastream_name)
|
37
|
+
}.to(
|
38
38
|
raise_error(
|
39
39
|
ArgumentError,
|
40
40
|
"match_fedora_datastream(<datastream_name>).with(<expected_xml>)"
|
@@ -5,9 +5,9 @@ describe ActiveFedora::RubydoraConnection do
|
|
5
5
|
describe 'initialize' do
|
6
6
|
it "should pass through valid options" do
|
7
7
|
@instance = ActiveFedora::RubydoraConnection.new :timeout => 3600, :fake_option => :missing, :force => true, :validateChecksum=>true
|
8
|
-
@instance.connection.client.options[:timeout].
|
9
|
-
@instance.connection.config[:validateChecksum].
|
10
|
-
@instance.connection.client.options.has_key?(:fake_option).
|
8
|
+
expect(@instance.connection.client.options[:timeout]).to eq(3600)
|
9
|
+
expect(@instance.connection.config[:validateChecksum]).to eq(true)
|
10
|
+
expect(@instance.connection.client.options.has_key?(:fake_option)).to be_falsey
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -22,7 +22,7 @@ describe ActiveFedora::SemanticNode do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
@node = SpecNode.new
|
25
|
-
@node.
|
25
|
+
allow(@node).to receive(:rels_ext).and_return(double("rels_ext", :content_will_change! => true, :content=>''))
|
26
26
|
@node.pid = increment_pid
|
27
27
|
end
|
28
28
|
|
@@ -32,37 +32,37 @@ describe ActiveFedora::SemanticNode do
|
|
32
32
|
|
33
33
|
describe "pid_from_uri" do
|
34
34
|
it "should strip the info:fedora/ out of a given string" do
|
35
|
-
SpecNode.pid_from_uri("info:fedora/FOO:BAR").
|
35
|
+
expect(SpecNode.pid_from_uri("info:fedora/FOO:BAR")).to eq("FOO:BAR")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
describe ".add_relationship" do
|
40
40
|
it "should add relationship to the relationships graph" do
|
41
41
|
@node.add_relationship("isMemberOf", 'demo:9')
|
42
|
-
@node.ids_for_outbound("isMemberOf").
|
42
|
+
expect(@node.ids_for_outbound("isMemberOf")).to eq(['demo:9'])
|
43
43
|
end
|
44
44
|
it "should not be written into the graph until it is saved" do
|
45
45
|
@n1 = ActiveFedora::Base.new
|
46
46
|
@node.add_relationship(:has_part, @n1)
|
47
|
-
@node.relationships.statements.to_a.first.object.to_s.
|
47
|
+
expect(@node.relationships.statements.to_a.first.object.to_s).to eq('info:fedora/')
|
48
48
|
@n1.save
|
49
|
-
@node.relationships.statements.to_a.first.object.to_s.
|
49
|
+
expect(@node.relationships.statements.to_a.first.object.to_s).to eq(@n1.internal_uri)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should add a literal relationship to the relationships graph" do
|
53
53
|
@node.add_relationship("isMemberOf", 'demo:9', true)
|
54
|
-
@node.relationships("isMemberOf").
|
54
|
+
expect(@node.relationships("isMemberOf")).to eq(['demo:9'])
|
55
55
|
end
|
56
56
|
|
57
57
|
it "adding relationship to an instance should not affect class-level relationships hash" do
|
58
58
|
local_test_node1 = SpecNode.new
|
59
59
|
local_test_node2 = SpecNode.new
|
60
|
-
local_test_node1.
|
60
|
+
allow(local_test_node1).to receive(:rels_ext).and_return(double("rels_ext", :content_will_change! => true, :content=>''))
|
61
61
|
local_test_node1.add_relationship(:is_member_of, 'demo:10')
|
62
|
-
local_test_node2.
|
62
|
+
allow(local_test_node2).to receive(:rels_ext).and_return(double('rels-ext', :content=>''))
|
63
63
|
|
64
|
-
local_test_node1.relationships(:is_member_of).
|
65
|
-
local_test_node2.relationships(:is_member_of).
|
64
|
+
expect(local_test_node1.relationships(:is_member_of)).to eq(["demo:10"])
|
65
|
+
expect(local_test_node2.relationships(:is_member_of)).to eq([])
|
66
66
|
end
|
67
67
|
|
68
68
|
end
|
@@ -75,28 +75,28 @@ describe ActiveFedora::SemanticNode do
|
|
75
75
|
end
|
76
76
|
it "should clear the specified relationship" do
|
77
77
|
@node.clear_relationship(:is_member_of)
|
78
|
-
@node.relationships(:is_member_of).
|
79
|
-
@node.relationships(:has_description).
|
78
|
+
expect(@node.relationships(:is_member_of)).to eq([])
|
79
|
+
expect(@node.relationships(:has_description)).to eq(['demo:9'])
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
describe '#remove_relationship' do
|
84
84
|
it 'should remove a relationship from the relationships hash' do
|
85
|
-
@node.
|
85
|
+
allow(@node).to receive(:rels_ext).and_return(double("rels_ext", :content_will_change! => true, :content=>''))
|
86
86
|
@node.add_relationship(:has_part, "info:fedora/3")
|
87
87
|
@node.add_relationship(:has_part, "info:fedora/4")
|
88
88
|
#check both are there
|
89
|
-
@node.ids_for_outbound(:has_part).
|
89
|
+
expect(@node.ids_for_outbound(:has_part)).to include "3", "4"
|
90
90
|
@node.remove_relationship(:has_part, "info:fedora/3")
|
91
91
|
#check returns false if relationship does not exist and does nothing with different predicate
|
92
92
|
@node.remove_relationship(:has_member,"info:fedora/4")
|
93
93
|
#check only one item removed
|
94
|
-
@node.ids_for_outbound(:has_part).
|
94
|
+
expect(@node.ids_for_outbound(:has_part)).to eq(['4'])
|
95
95
|
@node.remove_relationship(:has_part,"info:fedora/4")
|
96
96
|
#check last item removed and predicate removed since now emtpy
|
97
|
-
@node.ids_for_outbound(:has_part).
|
97
|
+
expect(@node.ids_for_outbound(:has_part)).to eq([])
|
98
98
|
|
99
|
-
@node.relationships_are_dirty.
|
99
|
+
expect(@node.relationships_are_dirty).to eq(true)
|
100
100
|
|
101
101
|
end
|
102
102
|
end
|
@@ -14,7 +14,7 @@ describe ActiveFedora::Attributes::Serializers do
|
|
14
14
|
subject { Foo.new }
|
15
15
|
it "should deserialize dates" do
|
16
16
|
subject.attributes = {'birthday(1i)' =>'2012', 'birthday(2i)' =>'10', 'birthday(3i)' => '31'}
|
17
|
-
subject.birthday.
|
17
|
+
expect(subject.birthday).to eq('2012-10-31')
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -14,50 +14,50 @@ describe ActiveFedora::ServiceDefinitions do
|
|
14
14
|
</fmm:MethodMap>
|
15
15
|
MMAP
|
16
16
|
@repository = ActiveFedora::Base.connection_for_pid(0)
|
17
|
-
@repository.
|
17
|
+
allow(@repository).to receive(:datastream_dissemination).with({:pid=>'test:12',:dsid=>'METHODMAP'}).and_return mmap
|
18
18
|
Test.has_service_definition "test:12"
|
19
19
|
end
|
20
20
|
|
21
21
|
subject {
|
22
22
|
obj = Test.new()
|
23
|
-
obj.
|
23
|
+
allow(obj).to receive(:pid).and_return('monkey:99')
|
24
24
|
obj
|
25
25
|
}
|
26
26
|
describe "method lookup" do
|
27
27
|
it "should find method keys in the YAML config" do
|
28
|
-
ActiveFedora::ServiceDefinitions.lookup_method("fedora-system:3", "viewObjectProfile").
|
28
|
+
expect(ActiveFedora::ServiceDefinitions.lookup_method("fedora-system:3", "viewObjectProfile")).to eq(:object_profile)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
describe "method creation" do
|
32
32
|
it "should create the system sdef methods" do
|
33
|
-
subject.
|
33
|
+
expect(subject).to respond_to(:object_profile)
|
34
34
|
end
|
35
35
|
it "should create the declared sdef methods" do
|
36
|
-
subject.
|
36
|
+
expect(subject).to respond_to(:document_style_1)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
describe "generated method" do
|
40
40
|
it "should call the appropriate rubydora rest api method" do
|
41
|
-
@repository.
|
41
|
+
expect(@repository).to receive(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1'})
|
42
42
|
#@mock_client.stub(:[]).with('objects/monkey%3A99/methods/test%3A12/getDocumentStyle1')
|
43
43
|
|
44
44
|
subject.document_style_1
|
45
45
|
end
|
46
46
|
it "should call the appropriate rubydora rest api method with parameters" do
|
47
|
-
@repository.
|
47
|
+
expect(@repository).to receive(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1', :format=>'xml'})
|
48
48
|
obj = Test.new()
|
49
|
-
obj.
|
49
|
+
allow(obj).to receive(:pid).and_return('monkey:99')
|
50
50
|
obj.document_style_1({:format=>'xml'})
|
51
51
|
end
|
52
52
|
it "should call the appropriate rubydora rest api method with a block" do
|
53
|
-
@repository.
|
53
|
+
allow(@repository).to receive(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1'}).and_yield "ping!","pang!"
|
54
54
|
obj = Test.new()
|
55
|
-
obj.
|
55
|
+
allow(obj).to receive(:pid).and_return('monkey:99')
|
56
56
|
block_response = ""
|
57
57
|
obj.document_style_1 {|res,req|
|
58
58
|
block_response += 'pong!' if res == "ping!" and req == "pang!"
|
59
59
|
}
|
60
|
-
block_response.
|
60
|
+
expect(block_response).to eq("pong!")
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -12,7 +12,7 @@ describe ActiveFedora::SimpleDatastream do
|
|
12
12
|
|
13
13
|
end
|
14
14
|
it "from_xml should parse everything correctly" do
|
15
|
-
@test_ds.ng_xml.
|
15
|
+
expect(@test_ds.ng_xml).to be_equivalent_to @sample_xml
|
16
16
|
end
|
17
17
|
|
18
18
|
|
@@ -23,14 +23,14 @@ describe ActiveFedora::SimpleDatastream do
|
|
23
23
|
it "should respond to getters and setters for the string typed #{el} element" do
|
24
24
|
value = "Hey #{el}"
|
25
25
|
@test_ds.send("#{el.to_s}=", value)
|
26
|
-
@test_ds.send(el).first.
|
26
|
+
expect(@test_ds.send(el).first).to eq(value) #Looking at first because creator has 2 nodes
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should set date elements" do
|
31
31
|
d = Date.parse('1939-05-23')
|
32
32
|
@test_ds.creation_date = d
|
33
|
-
@test_ds.creation_date.first.
|
33
|
+
expect(@test_ds.creation_date.first).to eq(d)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -40,7 +40,7 @@ describe ActiveFedora::SimpleDatastream do
|
|
40
40
|
@test_ds.publisher= "charlie"
|
41
41
|
@test_ds.coverage= ["80%", "20%"]
|
42
42
|
|
43
|
-
@test_ds.to_xml.
|
43
|
+
expect(@test_ds.to_xml).to be_equivalent_to('
|
44
44
|
<fields>
|
45
45
|
<coverage>80%</coverage>
|
46
46
|
<coverage>20%</coverage>
|
@@ -54,8 +54,8 @@ describe ActiveFedora::SimpleDatastream do
|
|
54
54
|
describe "#to_solr" do
|
55
55
|
it "should have title" do
|
56
56
|
solr = @test_ds.to_solr
|
57
|
-
solr[ActiveFedora::SolrService.solr_name('publisher', type: :string)].
|
58
|
-
solr[ActiveFedora::SolrService.solr_name('creation_date', type: :date)].
|
57
|
+
expect(solr[ActiveFedora::SolrService.solr_name('publisher', type: :string)]).to eq("publisher1")
|
58
|
+
expect(solr[ActiveFedora::SolrService.solr_name('creation_date', type: :date)]).to eq("2012-01-15")
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -24,17 +24,17 @@ describe ActiveFedora do
|
|
24
24
|
SOLR_DOCUMENT_ID = "id"
|
25
25
|
end
|
26
26
|
it "should be used by ActiveFedora::Base.to_solr" do
|
27
|
-
@test_object.
|
27
|
+
allow(@test_object).to receive_messages(pid: 'changeme:123')
|
28
28
|
SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
|
29
|
-
@test_object.to_solr[SOLR_DOCUMENT_ID.to_sym].
|
30
|
-
@test_object.to_solr[:id].
|
29
|
+
expect(@test_object.to_solr[SOLR_DOCUMENT_ID.to_sym]).to eq('changeme:123')
|
30
|
+
expect(@test_object.to_solr[:id]).to be_nil
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should be used by ActiveFedora::Base#find_with_conditions" do
|
34
34
|
mock_response = double("SolrResponse")
|
35
|
-
ActiveFedora::SolrService.
|
35
|
+
expect(ActiveFedora::SolrService).to receive(:query).with("_query_:\"{!raw f=#{ActiveFedora::SolrService.solr_name("has_model", :symbol)}}info:fedora/afmodel:SolrSpecModel_Basic\" AND " + SOLR_DOCUMENT_ID + ':changeme\\:30', {:sort => ["#{ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)} asc"]}).and_return(mock_response)
|
36
36
|
|
37
|
-
SolrSpecModel::Basic.find_with_conditions(:id=>"changeme:30").
|
37
|
+
expect(SolrSpecModel::Basic.find_with_conditions(:id=>"changeme:30")).to equal(mock_response)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -50,14 +50,14 @@ describe ActiveFedora do
|
|
50
50
|
it "should prevent Base.save from calling update_index if false" do
|
51
51
|
dirty_ds = ActiveFedora::SimpleDatastream.new(@test_object.inner_object, 'ds1')
|
52
52
|
@test_object.datastreams['ds1'] = dirty_ds
|
53
|
-
@test_object.
|
54
|
-
@test_object.
|
55
|
-
@test_object.
|
53
|
+
allow(@test_object).to receive(:datastreams).and_return({:ds1 => dirty_ds})
|
54
|
+
expect(@test_object).to receive(:update_index).never
|
55
|
+
expect(@test_object).to receive(:refresh)
|
56
56
|
@test_object.save
|
57
57
|
end
|
58
58
|
it "should prevent Base.delete from deleting the corresponding Solr document if false" do
|
59
|
-
ActiveFedora::SolrService.instance.conn.
|
60
|
-
@test_object.inner_object.
|
59
|
+
expect(ActiveFedora::SolrService.instance.conn).to receive(:delete).with(@test_object.pid).never
|
60
|
+
expect(@test_object.inner_object).to receive(:delete)
|
61
61
|
@test_object.delete
|
62
62
|
end
|
63
63
|
end
|
@@ -5,7 +5,7 @@ describe ActiveFedora::SolrDigitalObject do
|
|
5
5
|
subject { ActiveFedora::SolrDigitalObject.new({},{'datastreams'=>{}}) }
|
6
6
|
describe "when not finished" do
|
7
7
|
it "should not respond_to? :repository" do
|
8
|
-
subject.
|
8
|
+
expect(subject).not_to respond_to :repository
|
9
9
|
end
|
10
10
|
end
|
11
11
|
describe "when finished" do
|
@@ -13,7 +13,7 @@ describe ActiveFedora::SolrDigitalObject do
|
|
13
13
|
subject.freeze
|
14
14
|
end
|
15
15
|
it "should respond_to? :repository" do
|
16
|
-
subject.
|
16
|
+
expect(subject).to respond_to :repository
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -71,10 +71,10 @@ describe ActiveFedora::SolrDigitalObject do
|
|
71
71
|
end
|
72
72
|
subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams'=>{'properties'=>{'dsMIME'=>'text/xml'}}},WithoutMetadataDs) }
|
73
73
|
it "should create an xml datastream" do
|
74
|
-
subject.datastreams['properties'].
|
74
|
+
expect(subject.datastreams['properties']).to be_kind_of ActiveFedora::OmDatastream
|
75
75
|
end
|
76
76
|
|
77
|
-
its(:new_record?) { should
|
77
|
+
its(:new_record?) { should be_falsey }
|
78
78
|
end
|
79
79
|
|
80
80
|
describe "with a ds spec that's not part of the solrized object" do
|
@@ -10,28 +10,28 @@ describe ActiveFedora::SolrService do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should take a narg constructor and configure for localhost" do
|
13
|
-
RSolr.
|
13
|
+
expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr')
|
14
14
|
ActiveFedora::SolrService.register
|
15
15
|
end
|
16
16
|
it "should accept host arg into constructor" do
|
17
|
-
RSolr.
|
17
|
+
expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://fubar')
|
18
18
|
ActiveFedora::SolrService.register('http://fubar')
|
19
19
|
end
|
20
20
|
it "should clobber options" do
|
21
|
-
RSolr.
|
21
|
+
expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit=>:off, :foo=>:bar)
|
22
22
|
ActiveFedora::SolrService.register(nil, {:autocommit=>:off, :foo=>:bar})
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should set the threadlocal solr service" do
|
26
|
-
RSolr.
|
26
|
+
expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit=>:off, :foo=>:bar)
|
27
27
|
ss = ActiveFedora::SolrService.register(nil, {:autocommit=>:off, :foo=>:bar})
|
28
|
-
Thread.current[:solr_service].
|
29
|
-
ActiveFedora::SolrService.instance.
|
28
|
+
expect(Thread.current[:solr_service]).to eq(ss)
|
29
|
+
expect(ActiveFedora::SolrService.instance).to eq(ss)
|
30
30
|
end
|
31
31
|
it "should try to initialize if the service not initialized, and fail if it does not succeed" do
|
32
|
-
Thread.current[:solr_service].
|
33
|
-
ActiveFedora::SolrService.
|
34
|
-
|
32
|
+
expect(Thread.current[:solr_service]).to be_nil
|
33
|
+
expect(ActiveFedora::SolrService).to receive(:register)
|
34
|
+
expect{ActiveFedora::SolrService.instance}.to raise_error(ActiveFedora::SolrNotInitialized)
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "reify solr results" do
|
@@ -51,42 +51,42 @@ describe ActiveFedora::SolrService do
|
|
51
51
|
end
|
52
52
|
describe ".reify_solr_result" do
|
53
53
|
it "should use .find to instantiate objects" do
|
54
|
-
AudioRecord.
|
54
|
+
expect(AudioRecord).to receive(:find).with("my:_PID1_", cast: true)
|
55
55
|
ActiveFedora::SolrService.reify_solr_result(@sample_solr_hits.first)
|
56
56
|
end
|
57
57
|
it "should use .load_instance_from_solr when called with :load_from_solr option" do
|
58
|
-
AudioRecord.
|
59
|
-
ActiveFedora::SolrService.
|
58
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits.first)
|
59
|
+
expect(ActiveFedora::SolrService).not_to receive(:query)
|
60
60
|
ActiveFedora::SolrService.reify_solr_result(@sample_solr_hits.first, load_from_solr: true)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
describe ".reify_solr_results" do
|
64
64
|
it "should use AudioRecord.find to instantiate objects" do
|
65
|
-
AudioRecord.
|
66
|
-
AudioRecord.
|
67
|
-
AudioRecord.
|
65
|
+
expect(AudioRecord).to receive(:find).with("my:_PID1_", cast: true)
|
66
|
+
expect(AudioRecord).to receive(:find).with("my:_PID2_", cast: true)
|
67
|
+
expect(AudioRecord).to receive(:find).with("my:_PID3_", cast: true)
|
68
68
|
ActiveFedora::SolrService.reify_solr_results(@sample_solr_hits)
|
69
69
|
end
|
70
70
|
it "should use AudioRecord.load_instance_from_solr when called with :load_from_solr option" do
|
71
|
-
AudioRecord.
|
72
|
-
AudioRecord.
|
73
|
-
AudioRecord.
|
74
|
-
ActiveFedora::SolrService.
|
71
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits[0])
|
72
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID2_", @sample_solr_hits[1])
|
73
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID3_", @sample_solr_hits[2])
|
74
|
+
expect(ActiveFedora::SolrService).not_to receive(:query)
|
75
75
|
ActiveFedora::SolrService.reify_solr_results(@sample_solr_hits, load_from_solr: true)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
describe ".lazy_reify_solr_results" do
|
79
79
|
it "should lazily reify solr results" do
|
80
|
-
AudioRecord.
|
81
|
-
AudioRecord.
|
82
|
-
AudioRecord.
|
80
|
+
expect(AudioRecord).to receive(:find).with("my:_PID1_", cast: true)
|
81
|
+
expect(AudioRecord).to receive(:find).with("my:_PID2_", cast: true)
|
82
|
+
expect(AudioRecord).to receive(:find).with("my:_PID3_", cast: true)
|
83
83
|
ActiveFedora::SolrService.lazy_reify_solr_results(@sample_solr_hits).each {|r| r}
|
84
84
|
end
|
85
85
|
it "should use AudioRecord.load_instance_from_solr when called with :load_from_solr option" do
|
86
|
-
AudioRecord.
|
87
|
-
AudioRecord.
|
88
|
-
AudioRecord.
|
89
|
-
ActiveFedora::SolrService.
|
86
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits[0])
|
87
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID2_", @sample_solr_hits[1])
|
88
|
+
expect(AudioRecord).to receive(:load_instance_from_solr).with("my:_PID3_", @sample_solr_hits[2])
|
89
|
+
expect(ActiveFedora::SolrService).not_to receive(:query)
|
90
90
|
ActiveFedora::SolrService.lazy_reify_solr_results(@sample_solr_hits, load_from_solr: true).each {|r| r}
|
91
91
|
end
|
92
92
|
end
|
@@ -100,11 +100,11 @@ describe ActiveFedora::SolrService do
|
|
100
100
|
|
101
101
|
describe '#construct_query_for_pids' do
|
102
102
|
it "should generate a useable solr query from an array of Fedora pids" do
|
103
|
-
ActiveFedora::SolrService.construct_query_for_pids(["my:_PID1_", "my:_PID2_", "my:_PID3_"]).
|
103
|
+
expect(ActiveFedora::SolrService.construct_query_for_pids(["my:_PID1_", "my:_PID2_", "my:_PID3_"])).to eq('_query_:"{!raw f=id}my:_PID1_" OR _query_:"{!raw f=id}my:_PID2_" OR _query_:"{!raw f=id}my:_PID3_"')
|
104
104
|
|
105
105
|
end
|
106
106
|
it "should return a valid solr query even if given an empty array as input" do
|
107
|
-
ActiveFedora::SolrService.construct_query_for_pids([""]).
|
107
|
+
expect(ActiveFedora::SolrService.construct_query_for_pids([""])).to eq("id:NEVER_USE_THIS_ID")
|
108
108
|
|
109
109
|
end
|
110
110
|
end
|
@@ -113,33 +113,33 @@ describe ActiveFedora::SolrService do
|
|
113
113
|
it "should call solr" do
|
114
114
|
mock_conn = double("Connection")
|
115
115
|
stub_result = double("Result")
|
116
|
-
mock_conn.
|
117
|
-
ActiveFedora::SolrService.
|
118
|
-
ActiveFedora::SolrService.query('querytext', :raw=>true).
|
116
|
+
expect(mock_conn).to receive(:get).with('select', :params=>{:q=>'querytext', :qt=>'standard'}).and_return(stub_result)
|
117
|
+
allow(ActiveFedora::SolrService).to receive_messages(:instance =>double("instance", :conn=>mock_conn))
|
118
|
+
expect(ActiveFedora::SolrService.query('querytext', :raw=>true)).to eq(stub_result)
|
119
119
|
end
|
120
120
|
end
|
121
121
|
describe ".count" do
|
122
122
|
it "should return a count of matching records" do
|
123
123
|
mock_conn = double("Connection")
|
124
124
|
stub_result = {'response' => {'numFound'=>'7'}}
|
125
|
-
mock_conn.
|
126
|
-
ActiveFedora::SolrService.
|
127
|
-
ActiveFedora::SolrService.count('querytext').
|
125
|
+
expect(mock_conn).to receive(:get).with('select', :params=>{:rows=>0, :q=>'querytext', :qt=>'standard'}).and_return(stub_result)
|
126
|
+
allow(ActiveFedora::SolrService).to receive_messages(:instance =>double("instance", :conn=>mock_conn))
|
127
|
+
expect(ActiveFedora::SolrService.count('querytext')).to eq(7)
|
128
128
|
end
|
129
129
|
it "should accept query args" do
|
130
130
|
mock_conn = double("Connection")
|
131
131
|
stub_result = {'response' => {'numFound'=>'7'}}
|
132
|
-
mock_conn.
|
133
|
-
ActiveFedora::SolrService.
|
134
|
-
ActiveFedora::SolrService.count('querytext', :fq=>'filter', :rows=>10).
|
132
|
+
expect(mock_conn).to receive(:get).with('select', :params=>{:rows=>0, :q=>'querytext', :qt=>'standard', :fq=>'filter'}).and_return(stub_result)
|
133
|
+
allow(ActiveFedora::SolrService).to receive_messages(:instance =>double("instance", :conn=>mock_conn))
|
134
|
+
expect(ActiveFedora::SolrService.count('querytext', :fq=>'filter', :rows=>10)).to eq(7)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
describe ".add" do
|
138
138
|
it "should call solr" do
|
139
139
|
mock_conn = double("Connection")
|
140
140
|
doc = {'id' => '1234'}
|
141
|
-
mock_conn.
|
142
|
-
ActiveFedora::SolrService.
|
141
|
+
expect(mock_conn).to receive(:add).with(doc, {:params=>{}})
|
142
|
+
allow(ActiveFedora::SolrService).to receive_messages(:instance =>double("instance", :conn=>mock_conn))
|
143
143
|
ActiveFedora::SolrService.add(doc)
|
144
144
|
end
|
145
145
|
end
|
@@ -147,8 +147,8 @@ describe ActiveFedora::SolrService do
|
|
147
147
|
it "should call solr" do
|
148
148
|
mock_conn = double("Connection")
|
149
149
|
doc = {'id' => '1234'}
|
150
|
-
mock_conn.
|
151
|
-
ActiveFedora::SolrService.
|
150
|
+
expect(mock_conn).to receive(:commit)
|
151
|
+
allow(ActiveFedora::SolrService).to receive_messages(:instance =>double("instance", :conn=>mock_conn))
|
152
152
|
ActiveFedora::SolrService.commit()
|
153
153
|
end
|
154
154
|
end
|