active-fedora 2.3.4 → 2.3.7
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 +5 -4
- data/History.txt +16 -0
- data/README.textile +1 -1
- data/active-fedora.gemspec +1 -1
- data/lib/active_fedora.rb +4 -4
- data/lib/active_fedora/relationships_helper.rb +889 -0
- data/lib/active_fedora/semantic_node.rb +53 -383
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/base_spec.rb +87 -170
- data/spec/integration/datastream_spec.rb +3 -3
- data/spec/integration/datastreams_crud_spec.rb +1 -1
- data/spec/integration/rels_ext_datastream_spec.rb +4 -4
- data/spec/integration/semantic_node_spec.rb +369 -10
- data/spec/unit/active_fedora_spec.rb +42 -19
- data/spec/unit/base_extra_spec.rb +1 -0
- data/spec/unit/base_spec.rb +16 -20
- data/spec/unit/relationships_helper_spec.rb +842 -0
- data/spec/unit/semantic_node_spec.rb +49 -323
- metadata +88 -85
@@ -5,6 +5,21 @@ require 'equivalent-xml'
|
|
5
5
|
|
6
6
|
describe ActiveFedora do
|
7
7
|
|
8
|
+
after :all do
|
9
|
+
unstub_rails
|
10
|
+
unstub_blacklight
|
11
|
+
# Restore to default fedora configs
|
12
|
+
fedora_config_path = File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml")
|
13
|
+
ActiveFedora.init(:environment=>"test", :fedora_config=>fedora_config_path)
|
14
|
+
end
|
15
|
+
|
16
|
+
before(:each) do
|
17
|
+
# Stubbing register_fedora_and_solr in order to speed up tests.
|
18
|
+
# If you have tests that need fedora & solr registered,
|
19
|
+
# put them in the separate ActiveFedora describe block towards the end of this file.
|
20
|
+
ActiveFedora.stubs(:register_fedora_and_solr)
|
21
|
+
end
|
22
|
+
|
8
23
|
describe "initialization methods" do
|
9
24
|
|
10
25
|
describe "environment" do
|
@@ -24,6 +39,7 @@ describe ActiveFedora do
|
|
24
39
|
ENV['environment'] = "wichita"
|
25
40
|
ActiveFedora.expects(:config_options).at_least_once.returns({})
|
26
41
|
ActiveFedora.environment.should eql("wichita")
|
42
|
+
ENV['environment']='test'
|
27
43
|
end
|
28
44
|
|
29
45
|
it "should use ENV['RAILS_ENV'] and log a warning if none of the above are set" do
|
@@ -173,16 +189,6 @@ describe ActiveFedora do
|
|
173
189
|
end
|
174
190
|
end
|
175
191
|
|
176
|
-
describe "register_solr_and_fedora" do
|
177
|
-
it "should regiser instances with the appropriate urls" do
|
178
|
-
ActiveFedora.expects(:solr_config).at_least_once.returns({:url=>"http://megasolr:8983"})
|
179
|
-
ActiveFedora.expects(:fedora_config).at_least_once.returns({:url=>"http://megafedora:8983"})
|
180
|
-
ActiveFedora.register_fedora_and_solr
|
181
|
-
ActiveFedora.solr.conn.url.to_s.should eql("http://megasolr:8983")
|
182
|
-
ActiveFedora.fedora.fedora_url.to_s.should eql("http://megafedora:8983")
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
192
|
describe "check_fedora_path_for_solr" do
|
187
193
|
it "should find the solr.yml file and return it if it exists" do
|
188
194
|
ActiveFedora.expects(:fedora_config_path).returns("/path/to/fedora/fedora.yml")
|
@@ -208,7 +214,9 @@ describe ActiveFedora do
|
|
208
214
|
end
|
209
215
|
|
210
216
|
after(:all) do
|
211
|
-
|
217
|
+
config_file = File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml")
|
218
|
+
environment = "test"
|
219
|
+
ActiveFedora.init(:environment=>environment, :fedora_config_path=>config_file)
|
212
220
|
end
|
213
221
|
|
214
222
|
it "can tell its config paths" do
|
@@ -343,9 +351,13 @@ describe ActiveFedora do
|
|
343
351
|
ActiveFedora.init()
|
344
352
|
ActiveFedora.fedora.fedora_url.to_s.should == "http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"
|
345
353
|
end
|
346
|
-
it "should load the passed config if explicit config passed in" do
|
354
|
+
it "should load the passed config if explicit config passed in as a string" do
|
347
355
|
ActiveFedora.init('./spec/fixtures/rails_root/config/fedora.yml')
|
348
|
-
ActiveFedora.
|
356
|
+
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|
357
|
+
end
|
358
|
+
it "should load the passed config if explicit config passed in as a string" do
|
359
|
+
ActiveFedora.init(:fedora_config_path=>'./spec/fixtures/rails_root/config/fedora.yml')
|
360
|
+
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|
349
361
|
end
|
350
362
|
end
|
351
363
|
|
@@ -380,16 +392,12 @@ describe ActiveFedora do
|
|
380
392
|
it "should look for the file in the path defined at Rails.root" do
|
381
393
|
stub_rails(:root=>File.join(File.dirname(__FILE__),"../fixtures/rails_root"))
|
382
394
|
ActiveFedora.init()
|
383
|
-
ActiveFedora.
|
384
|
-
ActiveFedora.fedora.class.should == Fedora::Repository
|
385
|
-
ActiveFedora.fedora.fedora_url.to_s.should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|
395
|
+
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|
386
396
|
end
|
387
397
|
it "should load the default file if no config is found at Rails.root" do
|
388
398
|
stub_rails(:root=>File.join(File.dirname(__FILE__),"../fixtures/bad/path/to/rails_root"))
|
389
399
|
ActiveFedora.init()
|
390
|
-
ActiveFedora.
|
391
|
-
ActiveFedora.fedora.class.should == Fedora::Repository
|
392
|
-
ActiveFedora.fedora.fedora_url.to_s.should == "http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"
|
400
|
+
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"
|
393
401
|
end
|
394
402
|
end
|
395
403
|
end
|
@@ -397,6 +405,21 @@ describe ActiveFedora do
|
|
397
405
|
end
|
398
406
|
end
|
399
407
|
|
408
|
+
|
409
|
+
describe ActiveFedora do
|
410
|
+
# Put methods whose tests require registering Fedora & Solr here.
|
411
|
+
# to allow tests to run fast, keep these to a minimum.
|
412
|
+
describe "register_solr_and_fedora" do
|
413
|
+
it "should regiser instances with the appropriate urls" do
|
414
|
+
ActiveFedora.expects(:solr_config).at_least_once.returns({:url=>"http://megasolr:8983"})
|
415
|
+
ActiveFedora.expects(:fedora_config).at_least_once.returns({:url=>"http://megafedora:8983"})
|
416
|
+
ActiveFedora.register_fedora_and_solr
|
417
|
+
ActiveFedora.solr.conn.url.to_s.should eql("http://megasolr:8983")
|
418
|
+
ActiveFedora.fedora.fedora_url.to_s.should eql("http://megafedora:8983")
|
419
|
+
end
|
420
|
+
end
|
421
|
+
end
|
422
|
+
|
400
423
|
def mock_yaml(hash, path)
|
401
424
|
mock_file = mock(path.split("/")[-1])
|
402
425
|
File.stubs(:exist?).with(path).returns(true)
|
@@ -101,6 +101,7 @@ describe ActiveFedora::Base do
|
|
101
101
|
@test_object.stubs(:pid).returns("foo")
|
102
102
|
ActiveFedora::SolrService.instance.conn.expects(:delete).with("foo")
|
103
103
|
Fedora::Repository.instance.stubs(:delete).with(@test_object.inner_object)
|
104
|
+
@test_object.expects(:inbound_relationships).returns({})
|
104
105
|
@test_object.delete
|
105
106
|
end
|
106
107
|
|
data/spec/unit/base_spec.rb
CHANGED
@@ -31,6 +31,7 @@ describe ActiveFedora::Base do
|
|
31
31
|
Fedora::Repository.instance.stubs(:nextid).returns(increment_pid.to_s)
|
32
32
|
@test_object = ActiveFedora::Base.new
|
33
33
|
@test_object.new_object = true
|
34
|
+
@test_history = FooHistory.new
|
34
35
|
end
|
35
36
|
|
36
37
|
after(:each) do
|
@@ -342,11 +343,6 @@ describe ActiveFedora::Base do
|
|
342
343
|
solr_doc[:id].should eql("#{@test_object.pid}")
|
343
344
|
end
|
344
345
|
|
345
|
-
it "should add self.class as the :active_fedora_model" do
|
346
|
-
solr_doc = @test_object.to_solr
|
347
|
-
solr_doc["active_fedora_model_s"].should eql(@test_object.class.inspect)
|
348
|
-
end
|
349
|
-
|
350
346
|
it "should call .to_xml on all MetadataDatastreams and return the resulting document" do
|
351
347
|
ds1 = ActiveFedora::MetadataDatastream.new
|
352
348
|
ds2 = ActiveFedora::MetadataDatastream.new
|
@@ -393,8 +389,8 @@ describe ActiveFedora::Base do
|
|
393
389
|
end
|
394
390
|
|
395
391
|
it "should add self.class as the :active_fedora_model" do
|
396
|
-
solr_doc = @
|
397
|
-
solr_doc["active_fedora_model_s"].should eql(
|
392
|
+
solr_doc = @test_history.to_solr
|
393
|
+
solr_doc["active_fedora_model_s"].should eql("FooHistory")
|
398
394
|
end
|
399
395
|
|
400
396
|
it "should use mappings.yml to decide names of solr fields" do
|
@@ -617,11 +613,11 @@ describe ActiveFedora::Base do
|
|
617
613
|
FooHistory.solr_search("pid: foobar", {:ding=>:dang}).should == {:baz=>:bif}
|
618
614
|
end
|
619
615
|
|
620
|
-
it 'should provide #
|
621
|
-
@test_object.should respond_to(:
|
616
|
+
it 'should provide #relationships_by_name' do
|
617
|
+
@test_object.should respond_to(:relationships_by_name)
|
622
618
|
end
|
623
619
|
|
624
|
-
describe '#
|
620
|
+
describe '#relationships_by_name' do
|
625
621
|
|
626
622
|
class MockNamedRelationships < ActiveFedora::Base
|
627
623
|
has_relationship "testing", :has_part, :type=>ActiveFedora::Base
|
@@ -629,25 +625,25 @@ describe ActiveFedora::Base do
|
|
629
625
|
has_relationship "testing_inbound", :has_part, :type=>ActiveFedora::Base, :inbound=>true
|
630
626
|
end
|
631
627
|
|
632
|
-
it 'should return current
|
628
|
+
it 'should return current relationships by name' do
|
633
629
|
Fedora::Repository.instance.stubs(:nextid).returns(increment_pid)
|
634
630
|
@test_object2 = MockNamedRelationships.new
|
635
631
|
@test_object2.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(MockNamedRelationships))
|
636
632
|
@test_object.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(ActiveFedora::Base))
|
637
633
|
#should return expected named relationships
|
638
|
-
@test_object2.
|
639
|
-
@test_object2.
|
634
|
+
@test_object2.relationships_by_name
|
635
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
640
636
|
r = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:dummy,:object=>@test_object})
|
641
|
-
@test_object2.
|
642
|
-
@test_object2.
|
637
|
+
@test_object2.add_relationship_by_name("testing",@test_object)
|
638
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r.object],"testing2"=>[],"part_of"=>[], "parts_outbound"=>[r.object], "collection_members"=>[]}}
|
643
639
|
end
|
644
640
|
end
|
645
641
|
|
646
642
|
|
647
|
-
describe '#
|
643
|
+
describe '#create_relationship_name_methods' do
|
648
644
|
class MockCreateNamedRelationshipMethodsBase < ActiveFedora::Base
|
649
|
-
|
650
|
-
|
645
|
+
register_relationship_desc :self, "testing", :is_part_of, :type=>ActiveFedora::Base
|
646
|
+
create_relationship_name_methods "testing"
|
651
647
|
end
|
652
648
|
|
653
649
|
it 'should append and remove using helper methods for each outbound relationship' do
|
@@ -662,9 +658,9 @@ describe ActiveFedora::Base do
|
|
662
658
|
@test_object2.testing_append(@test_object)
|
663
659
|
#create relationship to access generate_uri method for an object
|
664
660
|
r = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>@test_object)
|
665
|
-
@test_object2.
|
661
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r.object],"collection_members"=>[], "part_of"=>[r.object], "parts_outbound"=>[]}}
|
666
662
|
@test_object2.testing_remove(@test_object)
|
667
|
-
@test_object2.
|
663
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[],"collection_members"=>[], "part_of"=>[], "parts_outbound"=>[]}}
|
668
664
|
end
|
669
665
|
end
|
670
666
|
end
|
@@ -0,0 +1,842 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), "../spec_helper" )
|
2
|
+
|
3
|
+
require 'active_fedora'
|
4
|
+
require 'xmlsimple'
|
5
|
+
|
6
|
+
@@last_pid = 0
|
7
|
+
|
8
|
+
class SpecNamedNode
|
9
|
+
include ActiveFedora::RelationshipsHelper
|
10
|
+
|
11
|
+
attr_accessor :pid
|
12
|
+
end
|
13
|
+
|
14
|
+
describe ActiveFedora::RelationshipsHelper do
|
15
|
+
|
16
|
+
def increment_pid
|
17
|
+
@@last_pid += 1
|
18
|
+
end
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
@test_object = SpecNamedNode.new
|
22
|
+
@test_object.pid = increment_pid
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#relationship_predicates' do
|
26
|
+
class MockNamedRelationshipPredicates < SpecNamedNode
|
27
|
+
register_relationship_desc(:self, "testing", :has_part, :type=>SpecNamedNode)
|
28
|
+
create_relationship_name_methods("testing")
|
29
|
+
register_relationship_desc(:self, "testing2", :has_member, :type=>SpecNamedNode)
|
30
|
+
create_relationship_name_methods("testing2")
|
31
|
+
register_relationship_desc(:inbound, "testing_inbound", :has_part, :type=>SpecNamedNode)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should provide #relationship_predicates' do
|
35
|
+
@test_object.should respond_to(:relationship_predicates)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should return a map of subject to relationship name to fedora ontology relationship predicate' do
|
39
|
+
@test_object2 = MockNamedRelationshipPredicates.new
|
40
|
+
@test_object2.relationship_predicates.should == {:self=>{"testing"=>:has_part,"testing2"=>:has_member},
|
41
|
+
:inbound=>{"testing_inbound"=>:has_part}}
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#conforms_to?' do
|
47
|
+
it 'should provide #conforms_to?' do
|
48
|
+
@test_object.should respond_to(:conforms_to?)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should check if current object is the kind of model class supplied' do
|
52
|
+
#has_model relationship does not get created until save called
|
53
|
+
r = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_model,:object=>ActiveFedora::ContentModel.pid_from_ruby_class(SpecNamedNode)})
|
54
|
+
@test_object.expects(:relationships).returns({:self=>{:has_model=>[r.object]}}).at_least_once
|
55
|
+
@test_object.conforms_to?(SpecNamedNode).should == true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#assert_conforms_to' do
|
60
|
+
it 'should provide #assert_conforms_to' do
|
61
|
+
@test_object.should respond_to(:assert_conforms_to)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should correctly assert if an object is the type of model supplied' do
|
65
|
+
@test_object3 = SpecNamedNode.new
|
66
|
+
@test_object3.pid = increment_pid
|
67
|
+
#has_model relationship does not get created until save called so need to add the has model rel here, is fine since not testing save
|
68
|
+
r = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_model,:object=>ActiveFedora::ContentModel.pid_from_ruby_class(SpecNamedNode)})
|
69
|
+
@test_object.expects(:relationships).returns({:self=>{:has_model=>[r.object]}}).at_least_once
|
70
|
+
@test_object3.assert_conforms_to('object',@test_object,SpecNamedNode)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should provide #class_from_name' do
|
75
|
+
@test_object.should respond_to(:class_from_name)
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#class_from_name' do
|
79
|
+
it 'should return a class constant for a string passed in' do
|
80
|
+
@test_object.class_from_name("SpecNamedNode").should == SpecNamedNode
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#relationships_by_name' do
|
85
|
+
|
86
|
+
class MockNamedRelationships3 < SpecNamedNode
|
87
|
+
register_relationship_desc(:self, "testing", :has_part, :type=>SpecNamedNode)
|
88
|
+
create_relationship_name_methods("testing")
|
89
|
+
register_relationship_desc(:self, "testing2", :has_member, :type=>SpecNamedNode)
|
90
|
+
create_relationship_name_methods("testing2")
|
91
|
+
register_relationship_desc(:inbound, "testing_inbound", :has_part, :type=>SpecNamedNode)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should provide #relationships_by_name' do
|
95
|
+
@test_object.should respond_to(:relationships_by_name)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should return current named relationships' do
|
99
|
+
@test_object2 = MockNamedRelationships3.new
|
100
|
+
@test_object2.pid = increment_pid
|
101
|
+
@test_object3 = MockNamedRelationships3.new
|
102
|
+
@test_object3.pid = increment_pid
|
103
|
+
r = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_model,:object=>ActiveFedora::ContentModel.pid_from_ruby_class(MockNamedRelationships3)})
|
104
|
+
@test_object2.expects(:relationships).returns({:self=>{:has_model=>[r.object],:has_part=>[],:has_member=>[]},:inbound=>{:has_part=>[]}}).at_least_once
|
105
|
+
#should return expected named relationships
|
106
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[],"testing2"=>[]},:inbound=>{"testing_inbound"=>[]}}
|
107
|
+
r3 = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_part,:object=>@test_object})
|
108
|
+
@test_object3.expects(:relationships).returns({:self=>{:has_model=>[r.object],:has_part=>[r3.object],:has_member=>[]},:inbound=>{:has_part=>[]}}).at_least_once
|
109
|
+
@test_object3.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[]},:inbound=>{"testing_inbound"=>[]}}
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should provide #relationship_names' do
|
114
|
+
@test_object.should respond_to(:relationship_names)
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#relationship_names' do
|
118
|
+
class MockRelationshipNames < SpecNamedNode
|
119
|
+
register_relationship_desc(:self, "testing", :has_part, :type=>SpecNamedNode)
|
120
|
+
create_relationship_name_methods("testing")
|
121
|
+
register_relationship_desc(:self, "testing2", :has_member, :type=>SpecNamedNode)
|
122
|
+
create_relationship_name_methods("testing2")
|
123
|
+
register_relationship_desc(:inbound, "testing_inbound", :has_part, :type=>SpecNamedNode)
|
124
|
+
register_relationship_desc(:inbound, "testing_inbound2", :has_member, :type=>SpecNamedNode)
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should return an array of relationship names for this model' do
|
128
|
+
@test_object2 = MockRelationshipNames.new
|
129
|
+
@test_object2.pid = increment_pid
|
130
|
+
@test_object2.relationship_names.include?("testing").should == true
|
131
|
+
@test_object2.relationship_names.include?("testing2").should == true
|
132
|
+
@test_object2.relationship_names.include?("testing_inbound").should == true
|
133
|
+
@test_object2.relationship_names.include?("testing_inbound2").should == true
|
134
|
+
@test_object2.relationship_names.size.should == 4
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should provide #inbound_relationship_names' do
|
139
|
+
@test_object.should respond_to(:inbound_relationship_names)
|
140
|
+
end
|
141
|
+
|
142
|
+
describe '#inbound_relationship_names' do
|
143
|
+
it 'should return an array of inbound relationship names for this model' do
|
144
|
+
@test_object2 = MockRelationshipNames.new
|
145
|
+
@test_object2.pid = increment_pid
|
146
|
+
@test_object2.inbound_relationship_names.include?("testing_inbound").should == true
|
147
|
+
@test_object2.inbound_relationship_names.include?("testing_inbound2").should == true
|
148
|
+
@test_object2.inbound_relationship_names.size.should == 2
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'should provide #outbound_relationship_names' do
|
153
|
+
@test_object.should respond_to(:outbound_relationship_names)
|
154
|
+
end
|
155
|
+
|
156
|
+
describe '#outbound_relationship_names' do
|
157
|
+
it 'should return an array of outbound relationship names for this model' do
|
158
|
+
@test_object2 = MockRelationshipNames.new
|
159
|
+
@test_object2.pid = increment_pid
|
160
|
+
@test_object2.outbound_relationship_names.include?("testing").should == true
|
161
|
+
@test_object2.outbound_relationship_names.include?("testing2").should == true
|
162
|
+
@test_object2.outbound_relationship_names.size.should == 2
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'should provide #outbound_relationships_by_name' do
|
167
|
+
@test_object.should respond_to(:outbound_relationships_by_name)
|
168
|
+
end
|
169
|
+
|
170
|
+
describe '#outbound_relationships_by_name' do
|
171
|
+
it 'should return hash of outbound relationship names to arrays of object uri' do
|
172
|
+
@test_object2 = MockRelationshipNames.new
|
173
|
+
@test_object2.pid = increment_pid
|
174
|
+
@test_object2.expects(:relationships).returns({:self=>{:has_part=>[],:has_member=>[],:inbound=>{:has_part=>[],:has_member=>[]}}}).at_least_once
|
175
|
+
@test_object2.outbound_relationships_by_name.should == {"testing"=>[],
|
176
|
+
"testing2"=>[]}
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'should provide #inbound_relationships_by_name' do
|
181
|
+
#testing execution of this in integration since touches solr
|
182
|
+
@test_object.should respond_to(:inbound_relationships_by_name)
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should provide #find_relationship_by_name' do
|
186
|
+
@test_object.should respond_to(:find_relationship_by_name)
|
187
|
+
end
|
188
|
+
|
189
|
+
describe '#find_relationship_by_name' do
|
190
|
+
it 'should return an array of object uri for a given relationship name' do
|
191
|
+
@test_object2 = MockRelationshipNames.new
|
192
|
+
@test_object2.pid = increment_pid
|
193
|
+
r = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:has_model, :object=>ActiveFedora::ContentModel.pid_from_ruby_class(MockRelationshipNames))
|
194
|
+
@test_object3 = SpecNamedNode.new
|
195
|
+
@test_object3.pid = increment_pid
|
196
|
+
@test_object4 = SpecNamedNode.new
|
197
|
+
@test_object4.pid = increment_pid
|
198
|
+
#add relationships that mirror 'testing' and 'testing2'
|
199
|
+
r3 = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:has_part, :object=>@test_object3)
|
200
|
+
r4 = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:has_member, :object=>@test_object4)
|
201
|
+
@test_object2.expects(:relationships).returns({:self=>{:has_part=>[r3.object]},:has_member=>[r4.object],:has_model=>[r.object]}).at_least_once
|
202
|
+
@test_object2.find_relationship_by_name("testing").should == [r3.object]
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
describe "relationship_query" do
|
207
|
+
class MockNamedRelationshipQuery < SpecNamedNode
|
208
|
+
register_relationship_desc(:inbound, "testing_inbound_query", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
209
|
+
register_relationship_desc(:inbound, "testing_inbound_no_solr_fq", :is_part_of, :type=>SpecNamedNode)
|
210
|
+
register_relationship_desc(:self, "testing_outbound_query", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
211
|
+
register_relationship_desc(:self, "testing_outbound_no_solr_fq", :is_part_of, :type=>SpecNamedNode)
|
212
|
+
#for bidirectional relationship testing need to register both outbound and inbound names
|
213
|
+
register_relationship_desc(:self, "testing_bi_query_outbound", :has_part, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
214
|
+
register_relationship_desc(:inbound, "testing_bi_query_inbound", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
215
|
+
register_relationship_desc(:self, "testing_bi_no_solr_fq_outbound", :has_part, :type=>SpecNamedNode)
|
216
|
+
register_relationship_desc(:inbound, "testing_bi_no_solr_fq_inbound", :is_part_of, :type=>SpecNamedNode)
|
217
|
+
end
|
218
|
+
|
219
|
+
before(:each) do
|
220
|
+
@mockrelsquery = MockNamedRelationshipQuery.new
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should call bidirectional_relationship_query if a bidirectional relationship" do
|
224
|
+
rels_ids = ["info:fedora/changeme:1","info:fedora/changeme:2","info:fedora/changeme:3","info:fedora/changeme:4"]
|
225
|
+
@mockrelsquery.expects(:outbound_relationships).returns({:has_part=>rels_ids}).at_least_once
|
226
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4"]
|
227
|
+
@mockrelsquery.expects(:pid).returns("changeme:5")
|
228
|
+
MockNamedRelationshipQuery.expects(:bidirectional_relationship_query).with("changeme:5","testing_bi_query",ids)
|
229
|
+
@mockrelsquery.relationship_query("testing_bi_query")
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should call outbound_relationship_query if an outbound relationship" do
|
233
|
+
rels_ids = ["info:fedora/changeme:1","info:fedora/changeme:2","info:fedora/changeme:3","info:fedora/changeme:4"]
|
234
|
+
@mockrelsquery.expects(:outbound_relationships).returns({:is_part_of=>rels_ids}).at_least_once
|
235
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4"]
|
236
|
+
MockNamedRelationshipQuery.expects(:outbound_relationship_query).with("testing_outbound_no_solr_fq",ids)
|
237
|
+
@mockrelsquery.relationship_query("testing_outbound_no_solr_fq")
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should call inbound_relationship_query if an inbound relationship" do
|
241
|
+
@mockrelsquery.expects(:pid).returns("changeme:5")
|
242
|
+
MockNamedRelationshipQuery.expects(:inbound_relationship_query).with("changeme:5","testing_inbound_query")
|
243
|
+
@mockrelsquery.relationship_query("testing_inbound_query")
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
describe ActiveFedora::RelationshipsHelper::ClassMethods do
|
248
|
+
|
249
|
+
after(:each) do
|
250
|
+
begin
|
251
|
+
@test_object2.delete
|
252
|
+
rescue
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
describe '#relationships_desc' do
|
257
|
+
it 'should initialize relationships_desc to a new hash containing self' do
|
258
|
+
@test_object2 = SpecNamedNode.new
|
259
|
+
@test_object2.pid = increment_pid
|
260
|
+
@test_object2.relationships_desc.should == {:self=>{}}
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
describe '#register_relationship_desc_subject' do
|
265
|
+
|
266
|
+
class MockRegisterNamedSubject < SpecNamedNode
|
267
|
+
register_relationship_desc_subject :test
|
268
|
+
end
|
269
|
+
|
270
|
+
it 'should add a new named subject to the named relationships only if it does not already exist' do
|
271
|
+
@test_object2 = MockRegisterNamedSubject.new
|
272
|
+
@test_object2.pid = increment_pid
|
273
|
+
@test_object2.relationships_desc.should == {:self=>{}, :test=>{}}
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
describe '#register_relationship_desc' do
|
278
|
+
|
279
|
+
class MockRegisterNamedRelationship < SpecNamedNode
|
280
|
+
register_relationship_desc :self, "testing", :is_part_of, :type=>SpecNamedNode
|
281
|
+
register_relationship_desc :inbound, "testing2", :has_part, :type=>SpecNamedNode
|
282
|
+
end
|
283
|
+
|
284
|
+
it 'should add a new named subject to the named relationships only if it does not already exist' do
|
285
|
+
@test_object2 = MockRegisterNamedRelationship.new
|
286
|
+
@test_object2.pid = increment_pid
|
287
|
+
@test_object2.relationships_desc.should == {:inbound=>{"testing2"=>{:type=>SpecNamedNode, :predicate=>:has_part}}, :self=>{"testing"=>{:type=>SpecNamedNode, :predicate=>:is_part_of}}}
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
describe "#is_bidirectional_relationship?" do
|
292
|
+
|
293
|
+
class MockIsBiRegisterNamedRelationship < SpecNamedNode
|
294
|
+
register_relationship_desc(:self, "testing_outbound", :is_part_of, :type=>SpecNamedNode)
|
295
|
+
register_relationship_desc(:inbound, "testing_inbound", :has_part, :type=>SpecNamedNode)
|
296
|
+
register_relationship_desc(:self, "testing2", :is_member_of,{})
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should return true if both inbound and outbound predicates exist, otherwise false" do
|
300
|
+
MockIsBiRegisterNamedRelationship.is_bidirectional_relationship?("testing").should == true
|
301
|
+
MockIsBiRegisterNamedRelationship.is_bidirectional_relationship?("testing2").should == false
|
302
|
+
#the inbound and outbound internal relationships will not be bidirectional by themselves
|
303
|
+
MockIsBiRegisterNamedRelationship.is_bidirectional_relationship?("testing_inbound").should == false
|
304
|
+
MockIsBiRegisterNamedRelationship.is_bidirectional_relationship?("testing_outbound").should == false
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
describe '#relationship_has_solr_filter_query' do
|
309
|
+
class RelsHasSolrFilter < SpecNamedNode
|
310
|
+
register_relationship_desc :self, "testing", :is_part_of, :solr_fq=>"testing:value"
|
311
|
+
register_relationship_desc :self, "no_query_testing", :is_part_of
|
312
|
+
register_relationship_desc :inbound, "inbound_testing", :has_part, :solr_fq=>"in_testing:value_in"
|
313
|
+
register_relationship_desc :inbound, "inbound_testing_no_query", :has_part
|
314
|
+
end
|
315
|
+
|
316
|
+
it 'should return true if an object has an inbound relationship with solr filter query' do
|
317
|
+
RelsHasSolrFilter.relationship_has_solr_filter_query?(:inbound,"inbound_testing").should == true
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'should return false if an object does not have inbound relationship with solr filter query' do
|
321
|
+
RelsHasSolrFilter.relationship_has_solr_filter_query?(:inbound,"inbound_testing_no_query").should == false
|
322
|
+
end
|
323
|
+
|
324
|
+
it 'should return true if an object has an outbound relationship with solr filter query' do
|
325
|
+
RelsHasSolrFilter.relationship_has_solr_filter_query?(:self,"testing").should == true
|
326
|
+
end
|
327
|
+
|
328
|
+
it 'should return false if an object does not have outbound relationship with solr filter query' do
|
329
|
+
RelsHasSolrFilter.relationship_has_solr_filter_query?(:self,"testing_no_query").should == false
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
describe '#create_relationship_name_methods' do
|
334
|
+
class MockCreateNamedRelationshipMethods < SpecNamedNode
|
335
|
+
register_relationship_desc :self, "testing", :is_part_of, :type=>SpecNamedNode
|
336
|
+
create_relationship_name_methods "testing"
|
337
|
+
end
|
338
|
+
|
339
|
+
it 'should create an append and remove method for each outbound relationship' do
|
340
|
+
@test_object2 = MockCreateNamedRelationshipMethods.new
|
341
|
+
@test_object2.pid = increment_pid
|
342
|
+
@test_object2.should respond_to(:testing_append)
|
343
|
+
@test_object2.should respond_to(:testing_remove)
|
344
|
+
#test execution in base_spec since method definitions include methods in ActiveFedora::Base
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
describe '#create_bidirectional_relationship_name_methods' do
|
349
|
+
class MockCreateNamedRelationshipMethods < SpecNamedNode
|
350
|
+
register_relationship_desc(:self, "testing_outbound", :is_part_of, :type=>SpecNamedNode)
|
351
|
+
create_bidirectional_relationship_name_methods "testing", "testing_outbound"
|
352
|
+
end
|
353
|
+
|
354
|
+
it 'should create an append and remove method for each outbound relationship' do
|
355
|
+
@test_object2 = MockCreateNamedRelationshipMethods.new
|
356
|
+
@test_object2.pid = increment_pid
|
357
|
+
@test_object2.should respond_to(:testing_append)
|
358
|
+
@test_object2.should respond_to(:testing_remove)
|
359
|
+
#test execution in base_spec since method definitions include methods in ActiveFedora::Base
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
describe '#def predicate_exists_with_different_relationship_name?' do
|
364
|
+
|
365
|
+
it 'should return true if a predicate exists for same subject and different name but not different subject' do
|
366
|
+
class MockPredicateExists < SpecNamedNode
|
367
|
+
register_relationship_desc :self, "testing", :has_part, :type=>SpecNamedNode
|
368
|
+
register_relationship_desc :self, "testing2", :has_member, :type=>SpecNamedNode
|
369
|
+
register_relationship_desc :inbound, "testing_inbound", :is_part_of, :type=>SpecNamedNode
|
370
|
+
|
371
|
+
predicate_exists_with_different_relationship_name?(:self,"testing",:has_part).should == false
|
372
|
+
predicate_exists_with_different_relationship_name?(:self,"testing3",:has_part).should == true
|
373
|
+
predicate_exists_with_different_relationship_name?(:inbound,"testing",:has_part).should == false
|
374
|
+
predicate_exists_with_different_relationship_name?(:self,"testing2",:has_member).should == false
|
375
|
+
predicate_exists_with_different_relationship_name?(:self,"testing3",:has_member).should == true
|
376
|
+
predicate_exists_with_different_relationship_name?(:inbound,"testing2",:has_member).should == false
|
377
|
+
predicate_exists_with_different_relationship_name?(:self,"testing_inbound",:is_part_of).should == false
|
378
|
+
predicate_exists_with_different_relationship_name?(:inbound,"testing_inbound",:is_part_of).should == false
|
379
|
+
predicate_exists_with_different_relationship_name?(:inbound,"testing_inbound2",:is_part_of).should == true
|
380
|
+
end
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
#
|
385
|
+
# HYDRA-541
|
386
|
+
#
|
387
|
+
|
388
|
+
describe "bidirectional_relationship_query" do
|
389
|
+
class MockBiNamedRelationshipQuery < SpecNamedNode
|
390
|
+
register_relationship_desc(:self, "testing_query_outbound", :has_part, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
391
|
+
register_relationship_desc(:inbound, "testing_query_inbound", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
392
|
+
create_bidirectional_relationship_name_methods("testing","testing_outbound")
|
393
|
+
register_relationship_desc(:self, "testing_no_solr_fq_outbound", :has_part, :type=>SpecNamedNode)
|
394
|
+
register_relationship_desc(:inbound, "testing_no_solr_fq_inbound", :is_part_of, :type=>SpecNamedNode)
|
395
|
+
create_bidirectional_relationship_name_methods("testing_no_solr_fq","testing_no_solr_fq_outbound")
|
396
|
+
end
|
397
|
+
|
398
|
+
#
|
399
|
+
# HYDRA-541
|
400
|
+
#
|
401
|
+
it "should rely on outbound query if inbound query is empty" do
|
402
|
+
query = MockBiNamedRelationshipQuery.bidirectional_relationship_query("PID",:testing_query,[])
|
403
|
+
query.should_not include("OR ()")
|
404
|
+
query2 = MockBiNamedRelationshipQuery.bidirectional_relationship_query("PID",:testing_no_solr_fq,[])
|
405
|
+
query2.should_not include("OR ()")
|
406
|
+
end
|
407
|
+
|
408
|
+
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
409
|
+
expected_string = ""
|
410
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4","changeme:5"]
|
411
|
+
ids.each_with_index do |id,index|
|
412
|
+
expected_string << " OR " if index > 0
|
413
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialPart)"
|
414
|
+
end
|
415
|
+
expected_string << " OR "
|
416
|
+
expected_string << "(is_part_of_s:info\\:fedora/changeme\\:6 AND has_model_s:info\\:fedora/SpecialPart)"
|
417
|
+
MockBiNamedRelationshipQuery.bidirectional_relationship_query("changeme:6","testing_query",ids).should == expected_string
|
418
|
+
end
|
419
|
+
|
420
|
+
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
421
|
+
expected_string = ""
|
422
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4","changeme:5"]
|
423
|
+
ids.each_with_index do |id,index|
|
424
|
+
expected_string << " OR " if index > 0
|
425
|
+
expected_string << "id:" + id.gsub(/(:)/, '\\:')
|
426
|
+
end
|
427
|
+
expected_string << " OR "
|
428
|
+
expected_string << "(is_part_of_s:info\\:fedora/changeme\\:6)"
|
429
|
+
MockBiNamedRelationshipQuery.bidirectional_relationship_query("changeme:6","testing_no_solr_fq",ids).should == expected_string
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
describe "inbound_relationship_query" do
|
434
|
+
class MockInboundNamedRelationshipQuery < SpecNamedNode
|
435
|
+
register_relationship_desc(:inbound, "testing_inbound_query", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
436
|
+
register_relationship_desc(:inbound, "testing_inbound_no_solr_fq", :is_part_of, :type=>SpecNamedNode)
|
437
|
+
end
|
438
|
+
|
439
|
+
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
440
|
+
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_query").should == "is_part_of_s:info\\:fedora/changeme\\:1 AND has_model_s:info\\:fedora/SpecialPart"
|
441
|
+
end
|
442
|
+
|
443
|
+
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
444
|
+
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_no_solr_fq").should == "is_part_of_s:info\\:fedora/changeme\\:1"
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
describe "outbound_relationship_query" do
|
449
|
+
class MockOutboundNamedRelationshipQuery < SpecNamedNode
|
450
|
+
register_relationship_desc(:self, "testing_query", :is_part_of, :type=>SpecNamedNode, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
451
|
+
register_relationship_desc(:self,"testing_no_solr_fq", :is_part_of, :type=>SpecNamedNode)
|
452
|
+
end
|
453
|
+
|
454
|
+
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
455
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4"]
|
456
|
+
expected_string = ""
|
457
|
+
ids.each_with_index do |id,index|
|
458
|
+
expected_string << " OR " if index > 0
|
459
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialPart)"
|
460
|
+
end
|
461
|
+
MockOutboundNamedRelationshipQuery.outbound_relationship_query("testing_query",ids).should == expected_string
|
462
|
+
end
|
463
|
+
|
464
|
+
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
465
|
+
expected_string = ""
|
466
|
+
ids = ["changeme:1","changeme:2","changeme:3","changeme:4"]
|
467
|
+
ids.each_with_index do |id,index|
|
468
|
+
expected_string << " OR " if index > 0
|
469
|
+
expected_string << "id:" + id.gsub(/(:)/, '\\:')
|
470
|
+
end
|
471
|
+
MockOutboundNamedRelationshipQuery.outbound_relationship_query("testing_no_solr_fq",ids).should == expected_string
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
### Deprecated class method checks for HYDRA-541 methods renamed
|
476
|
+
# named_relationships_desc
|
477
|
+
# register_named_subject(subject)
|
478
|
+
# register_named_relationship(subject, name, predicate, opts={})
|
479
|
+
# create_named_relationship_methods(name)
|
480
|
+
# create_bidirectional_named_relationship_methods(name,outbound_name)
|
481
|
+
# outbound_named_relationship_query(relationship_name,outbound_pids)
|
482
|
+
# inbound_named_relationship_query(pid,relationship_name)
|
483
|
+
# bidirectional_named_relationship_query(pid,relationship_name,outbound_pids)
|
484
|
+
# named_predicate_exists_with_different_name?(subject,name,predicate)
|
485
|
+
describe "named_relationships_desc" do
|
486
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
487
|
+
logger = mock()
|
488
|
+
logger.expects(:warn).with("Deprecation: named_relationships_desc has been deprecated. Please call relationships_desc instead.")
|
489
|
+
@test_object.class.expects(:logger).returns(logger)
|
490
|
+
@test_object.class.respond_to?(:relationships_desc)
|
491
|
+
obj = mock()
|
492
|
+
@test_object.class.expects(:relationships_desc)
|
493
|
+
@test_object.class.named_relationships_desc
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
describe "register_named_subject" do
|
498
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
499
|
+
logger = mock()
|
500
|
+
logger.expects(:warn).with("Deprecation: register_named_subject has been deprecated. Please call register_relationship_desc_subject instead.")
|
501
|
+
@test_object.class.expects(:logger).returns(logger)
|
502
|
+
@test_object.class.respond_to?(:register_relationship_desc_subject)
|
503
|
+
obj = mock()
|
504
|
+
@test_object.class.expects(:register_relationship_desc_subject).with(:self)
|
505
|
+
@test_object.class.register_named_subject(:self)
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
509
|
+
describe "register_named_relationship" do
|
510
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
511
|
+
logger = mock()
|
512
|
+
logger.expects(:warn).with("Deprecation: register_named_relationship has been deprecated. Please call register_relationship_desc instead.")
|
513
|
+
@test_object.class.expects(:logger).returns(logger)
|
514
|
+
@test_object.class.respond_to?(:register_relationship_desc)
|
515
|
+
obj = mock()
|
516
|
+
@test_object.class.expects(:register_relationship_desc).with(:self,"testing",:has_member,{})
|
517
|
+
@test_object.class.register_named_relationship(:self,"testing",:has_member,{})
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
521
|
+
describe "create_named_relationship_methods" do
|
522
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
523
|
+
logger = mock()
|
524
|
+
logger.expects(:warn).with("Deprecation: create_named_relationship_methods has been deprecated. Please call create_relationship_name_methods instead.")
|
525
|
+
@test_object.class.expects(:logger).returns(logger)
|
526
|
+
@test_object.class.respond_to?(:create_relationship_name_methods)
|
527
|
+
obj = mock()
|
528
|
+
@test_object.class.expects(:create_relationship_name_methods).with("testing")
|
529
|
+
@test_object.class.create_named_relationship_methods("testing")
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
533
|
+
describe "create_bidirectional_named_relationship_methods" do
|
534
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
535
|
+
logger = mock()
|
536
|
+
logger.expects(:warn).with("Deprecation: create_bidirectional_named_relationship_methods has been deprecated. Please call create_bidirectional_relationship_name_methods instead.")
|
537
|
+
@test_object.class.expects(:logger).returns(logger)
|
538
|
+
@test_object.class.respond_to?(:create_bidirectional_relationship_name_methods)
|
539
|
+
obj = mock()
|
540
|
+
@test_object.class.expects(:create_bidirectional_relationship_name_methods).with("testing","testing_outbound")
|
541
|
+
@test_object.class.create_bidirectional_named_relationship_methods("testing","testing_outbound")
|
542
|
+
end
|
543
|
+
end
|
544
|
+
|
545
|
+
describe "outbound_named_relationship_query" do
|
546
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
547
|
+
logger = mock()
|
548
|
+
logger.expects(:warn).with("Deprecation: outbound_named_relationship_query has been deprecated. Please call outbound_relationship_query instead.")
|
549
|
+
@test_object.class.expects(:logger).returns(logger)
|
550
|
+
@test_object.class.respond_to?(:outbound_relationship_query)
|
551
|
+
obj = mock()
|
552
|
+
@test_object.class.expects(:outbound_relationship_query).with("testing",["testid"])
|
553
|
+
@test_object.class.outbound_named_relationship_query("testing",["testid"])
|
554
|
+
end
|
555
|
+
end
|
556
|
+
|
557
|
+
describe "inbound_named_relationship_query" do
|
558
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
559
|
+
logger = mock()
|
560
|
+
logger.expects(:warn).with("Deprecation: inbound_named_relationship_query has been deprecated. Please call inbound_relationship_query instead.")
|
561
|
+
@test_object.class.expects(:logger).returns(logger)
|
562
|
+
@test_object.class.respond_to?(:inbound_relationship_query)
|
563
|
+
obj = mock()
|
564
|
+
@test_object.class.expects(:inbound_relationship_query).with("testid","testing")
|
565
|
+
@test_object.class.inbound_named_relationship_query("testid","testing")
|
566
|
+
end
|
567
|
+
end
|
568
|
+
|
569
|
+
describe "bidirectional_named_relationship_query" do
|
570
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
571
|
+
logger = mock()
|
572
|
+
logger.expects(:warn).with("Deprecation: bidirectional_named_relationship_query has been deprecated. Please call bidirectional_relationship_query instead.")
|
573
|
+
@test_object.class.expects(:logger).returns(logger)
|
574
|
+
@test_object.class.respond_to?(:bidirectional_relationship_query)
|
575
|
+
obj = mock()
|
576
|
+
@test_object.class.expects(:bidirectional_relationship_query).with("testid","testing",["testid2"])
|
577
|
+
@test_object.class.bidirectional_named_relationship_query("testid","testing",["testid2"])
|
578
|
+
end
|
579
|
+
end
|
580
|
+
|
581
|
+
describe "named_predicate_exists_with_different_name?" do
|
582
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
583
|
+
logger = mock()
|
584
|
+
logger.expects(:warn).with("Deprecation: named_predicate_exists_with_different_name? has been deprecated. Please call predicate_exists_with_different_relationship_name? instead.")
|
585
|
+
@test_object.class.expects(:logger).returns(logger)
|
586
|
+
@test_object.class.respond_to?(:predicate_exists_with_different_relationship_name?)
|
587
|
+
obj = mock()
|
588
|
+
@test_object.class.expects(:predicate_exists_with_different_relationship_name?).with(:subject,"testing",:has_member)
|
589
|
+
@test_object.class.named_predicate_exists_with_different_name?(:subject,"testing",:has_member)
|
590
|
+
end
|
591
|
+
end
|
592
|
+
end
|
593
|
+
|
594
|
+
## Deprecated method checks for HYDRA-541 methods renamed
|
595
|
+
#
|
596
|
+
# Old Name New Name
|
597
|
+
# named_relationship find_relationship_by_name
|
598
|
+
# register_named_subject register_relationship_desc_subject
|
599
|
+
# register_named_relationship register_relationship_desc
|
600
|
+
# named_relationships relationships_by_name
|
601
|
+
# named_relationships_from_class relationships_by_name_from_class
|
602
|
+
# named_inbound_relationships inbound_relationship_names
|
603
|
+
# outbound_named_relationship_predicates outbound_relationship_predicates
|
604
|
+
# inbound_named_relationship_predicates inbound_relationship_predicates
|
605
|
+
# named_relationship_predicates relationship_predicates
|
606
|
+
# named_relationship_predicates_from_class relationship_predicates_from_class
|
607
|
+
# named_outbound_relationships outbound_relationships_by_name
|
608
|
+
# is_named_relationship? is_relationship_name?
|
609
|
+
# named_relationships_desc relationships_desc
|
610
|
+
# named_relationships_desc_from_class relationships_desc_from_class
|
611
|
+
# named_relationship_type relationship_model_type
|
612
|
+
# add_named_relationship add_relationship_by_name
|
613
|
+
# remove_named_relationship remove_relationship_by_name
|
614
|
+
# assert_kind_of_model assert_conforms_to
|
615
|
+
# kind_of_model? conforms_to?
|
616
|
+
# named_relationship_query relationship_query
|
617
|
+
|
618
|
+
describe "named_relationship" do
|
619
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
620
|
+
logger = mock()
|
621
|
+
logger.expects(:warn).with("Deprecation: named_relationship has been deprecated. Please call find_relationship_by_name instead.")
|
622
|
+
@test_object.expects(:logger).returns(logger)
|
623
|
+
@test_object.respond_to?(:find_relationship_by_name).should == true
|
624
|
+
@test_object.expects(:find_relationship_by_name).with("testing")
|
625
|
+
@test_object.named_relationship("testing")
|
626
|
+
end
|
627
|
+
end
|
628
|
+
|
629
|
+
describe "register_named_subject" do
|
630
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
631
|
+
logger = mock()
|
632
|
+
logger.expects(:warn).with("Deprecation: register_named_subject has been deprecated. Please call register_relationship_desc_subject instead.")
|
633
|
+
@test_object.expects(:logger).returns(logger)
|
634
|
+
@test_object.respond_to?(:register_relationship_desc_subject).should == true
|
635
|
+
@test_object.expects(:register_relationship_desc_subject).with(:self)
|
636
|
+
@test_object.register_named_subject(:self)
|
637
|
+
end
|
638
|
+
end
|
639
|
+
|
640
|
+
describe "register_named_relationship" do
|
641
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
642
|
+
logger = mock()
|
643
|
+
logger.expects(:warn).with("Deprecation: register_named_relationship has been deprecated. Please call register_relationship_desc instead.")
|
644
|
+
@test_object.expects(:logger).returns(logger)
|
645
|
+
@test_object.respond_to?(:register_relationship_desc).should == true
|
646
|
+
@test_object.expects(:register_relationship_desc).with(:self,"testing",:has_member,{})
|
647
|
+
@test_object.register_named_relationship(:self,"testing",:has_member,{})
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
describe "named_relationships" do
|
652
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
653
|
+
logger = mock()
|
654
|
+
logger.expects(:warn).with("Deprecation: named_relationships has been deprecated. Please call relationships_by_name instead.")
|
655
|
+
@test_object.expects(:logger).returns(logger)
|
656
|
+
@test_object.respond_to?(:relationships_by_name).should == true
|
657
|
+
@test_object.expects(:relationships_by_name)
|
658
|
+
@test_object.named_relationships
|
659
|
+
end
|
660
|
+
end
|
661
|
+
|
662
|
+
describe "named_relationships_from_class" do
|
663
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
664
|
+
logger = mock()
|
665
|
+
logger.expects(:warn).with("Deprecation: named_relationships_from_class has been deprecated. Please call relationships_by_name_from_class instead.")
|
666
|
+
@test_object.expects(:logger).returns(logger)
|
667
|
+
@test_object.respond_to?(:relationships_by_name_from_class).should == true
|
668
|
+
@test_object.expects(:relationships_by_name_from_class)
|
669
|
+
@test_object.named_relationships_from_class
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
describe "named_inbound_relationships" do
|
674
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
675
|
+
logger = mock()
|
676
|
+
logger.expects(:warn).with("Deprecation: named_inbound_relationships has been deprecated. Please call inbound_relationships_by_name instead.")
|
677
|
+
@test_object.expects(:logger).returns(logger)
|
678
|
+
@test_object.respond_to?(:inbound_relationships_by_name).should == true
|
679
|
+
@test_object.expects(:inbound_relationships_by_name)
|
680
|
+
@test_object.named_inbound_relationships
|
681
|
+
end
|
682
|
+
end
|
683
|
+
|
684
|
+
describe "named_outbound_relationships" do
|
685
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
686
|
+
logger = mock()
|
687
|
+
logger.expects(:warn).with("Deprecation: named_outbound_relationships has been deprecated. Please call outbound_relationships_by_name instead.")
|
688
|
+
@test_object.expects(:logger).returns(logger)
|
689
|
+
@test_object.respond_to?(:outbound_relationships_by_name).should == true
|
690
|
+
@test_object.expects(:outbound_relationships_by_name)
|
691
|
+
@test_object.named_outbound_relationships
|
692
|
+
end
|
693
|
+
end
|
694
|
+
|
695
|
+
describe "outbound_named_relationship_predicates" do
|
696
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
697
|
+
logger = mock()
|
698
|
+
logger.expects(:warn).with("Deprecation: outbound_named_relationship_predicates has been deprecated. Please call outbound_relationship_predicates instead.")
|
699
|
+
@test_object.expects(:logger).returns(logger)
|
700
|
+
@test_object.respond_to?(:outbound_relationship_predicates).should == true
|
701
|
+
@test_object.expects(:outbound_relationship_predicates)
|
702
|
+
@test_object.outbound_named_relationship_predicates
|
703
|
+
end
|
704
|
+
end
|
705
|
+
|
706
|
+
describe "inbound_named_relationship_predicates" do
|
707
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
708
|
+
logger = mock()
|
709
|
+
logger.expects(:warn).with("Deprecation: inbound_named_relationship_predicates has been deprecated. Please call inbound_relationship_predicates instead.")
|
710
|
+
@test_object.expects(:logger).returns(logger)
|
711
|
+
@test_object.respond_to?(:inbound_relationship_predicates).should == true
|
712
|
+
@test_object.expects(:inbound_relationship_predicates)
|
713
|
+
@test_object.inbound_named_relationship_predicates
|
714
|
+
end
|
715
|
+
end
|
716
|
+
|
717
|
+
describe "named_relationship_predicates" do
|
718
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
719
|
+
logger = mock()
|
720
|
+
logger.expects(:warn).with("Deprecation: named_relationship_predicates has been deprecated. Please call relationship_predicates instead.")
|
721
|
+
@test_object.expects(:logger).returns(logger)
|
722
|
+
@test_object.respond_to?(:relationship_predicates).should == true
|
723
|
+
@test_object.expects(:relationship_predicates)
|
724
|
+
@test_object.named_relationship_predicates
|
725
|
+
end
|
726
|
+
end
|
727
|
+
|
728
|
+
describe "named_relationship_predicates_from_class" do
|
729
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
730
|
+
logger = mock()
|
731
|
+
logger.expects(:warn).with("Deprecation: named_relationship_predicates_from_class has been deprecated. Please call relationship_predicates_from_class instead.")
|
732
|
+
@test_object.expects(:logger).returns(logger)
|
733
|
+
@test_object.respond_to?(:relationship_predicates_from_class).should == true
|
734
|
+
@test_object.expects(:relationship_predicates_from_class)
|
735
|
+
@test_object.named_relationship_predicates_from_class
|
736
|
+
end
|
737
|
+
end
|
738
|
+
|
739
|
+
describe "is_named_relationship?" do
|
740
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
741
|
+
logger = mock()
|
742
|
+
logger.expects(:warn).with("Deprecation: is_named_relationship? has been deprecated. Please call is_relationship_name? instead.")
|
743
|
+
@test_object.expects(:logger).returns(logger)
|
744
|
+
@test_object.respond_to?(:is_relationship_name?).should == true
|
745
|
+
@test_object.expects(:is_relationship_name?)
|
746
|
+
@test_object.is_named_relationship?("testing",true)
|
747
|
+
end
|
748
|
+
end
|
749
|
+
|
750
|
+
describe "named_relationships_desc" do
|
751
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
752
|
+
logger = mock()
|
753
|
+
logger.expects(:warn).with("Deprecation: named_relationships_desc has been deprecated. Please call relationships_desc instead.")
|
754
|
+
@test_object.expects(:logger).returns(logger)
|
755
|
+
@test_object.respond_to?(:relationships_desc)
|
756
|
+
@test_object.expects(:relationships_desc)
|
757
|
+
@test_object.named_relationships_desc
|
758
|
+
end
|
759
|
+
end
|
760
|
+
|
761
|
+
describe "named_relationships_desc_from_class" do
|
762
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
763
|
+
logger = mock()
|
764
|
+
logger.expects(:warn).with("Deprecation: named_relationships_desc_from_class has been deprecated. Please call relationships_desc_from_class instead.")
|
765
|
+
@test_object.expects(:logger).returns(logger)
|
766
|
+
@test_object.respond_to?(:relationships_desc_from_class)
|
767
|
+
@test_object.expects(:relationships_desc_from_class)
|
768
|
+
@test_object.named_relationships_desc_from_class
|
769
|
+
end
|
770
|
+
end
|
771
|
+
|
772
|
+
describe "named_relationship_type" do
|
773
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
774
|
+
logger = mock()
|
775
|
+
logger.expects(:warn).with("Deprecation: named_relationship_type has been deprecated. Please call relationship_model_type instead.")
|
776
|
+
@test_object.expects(:logger).returns(logger)
|
777
|
+
@test_object.respond_to?(:relationship_model_type)
|
778
|
+
@test_object.expects(:relationship_model_type).with("testing")
|
779
|
+
@test_object.named_relationship_type("testing")
|
780
|
+
end
|
781
|
+
end
|
782
|
+
|
783
|
+
describe "add_named_relationship" do
|
784
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
785
|
+
logger = mock()
|
786
|
+
logger.expects(:warn).with("Deprecation: add_named_relationship has been deprecated. Please call add_relationship_by_name instead.")
|
787
|
+
@test_object.expects(:logger).returns(logger)
|
788
|
+
@test_object.respond_to?(:add_relationship_by_name)
|
789
|
+
obj = mock()
|
790
|
+
@test_object.expects(:add_relationship_by_name).with("testing",obj)
|
791
|
+
@test_object.add_named_relationship("testing",obj)
|
792
|
+
end
|
793
|
+
end
|
794
|
+
|
795
|
+
describe "remove_named_relationship" do
|
796
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
797
|
+
logger = mock()
|
798
|
+
logger.expects(:warn).with("Deprecation: remove_named_relationship has been deprecated. Please call remove_relationship_by_name instead.")
|
799
|
+
@test_object.expects(:logger).returns(logger)
|
800
|
+
@test_object.respond_to?(:remove_relationship_by_name)
|
801
|
+
obj = mock()
|
802
|
+
@test_object.expects(:remove_relationship_by_name).with("testing",obj)
|
803
|
+
@test_object.remove_named_relationship("testing",obj)
|
804
|
+
end
|
805
|
+
end
|
806
|
+
|
807
|
+
describe "assert_kind_of_model" do
|
808
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
809
|
+
logger = mock()
|
810
|
+
logger.expects(:warn).with("Deprecation: assert_kind_of_model has been deprecated. Please call assert_conforms_to instead.")
|
811
|
+
@test_object.expects(:logger).returns(logger)
|
812
|
+
@test_object.respond_to?(:assert_conforms_to)
|
813
|
+
obj = mock()
|
814
|
+
@test_object.expects(:assert_conforms_to).with("testing",obj,ActiveFedora::Base)
|
815
|
+
@test_object.assert_kind_of_model("testing",obj,ActiveFedora::Base)
|
816
|
+
end
|
817
|
+
end
|
818
|
+
|
819
|
+
describe "kind_of_model?" do
|
820
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
821
|
+
logger = mock()
|
822
|
+
logger.expects(:warn).with("Deprecation: kind_of_model? has been deprecated. Please call conforms_to? instead.")
|
823
|
+
@test_object.expects(:logger).returns(logger)
|
824
|
+
@test_object.respond_to?(:conforms_to?)
|
825
|
+
obj = mock()
|
826
|
+
@test_object.expects(:conforms_to?).with(ActiveFedora::Base)
|
827
|
+
@test_object.kind_of_model?(ActiveFedora::Base)
|
828
|
+
end
|
829
|
+
end
|
830
|
+
|
831
|
+
describe "named_relationship_query" do
|
832
|
+
it 'should throw deprecation warning if old method name called and should call new method name' do
|
833
|
+
logger = mock()
|
834
|
+
logger.expects(:warn).with("Deprecation: named_relationship_query has been deprecated. Please call relationship_query instead.")
|
835
|
+
@test_object.expects(:logger).returns(logger)
|
836
|
+
@test_object.respond_to?(:relationship_query)
|
837
|
+
obj = mock()
|
838
|
+
@test_object.expects(:relationship_query).with("testing")
|
839
|
+
@test_object.named_relationship_query("testing")
|
840
|
+
end
|
841
|
+
end
|
842
|
+
end
|