active-fedora 3.2.0.pre1 → 3.2.0.pre2

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