active-fedora 3.1.0.pre2 → 3.1.0.pre3
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 +9 -1
- data/active-fedora.gemspec +2 -0
- data/lib/active_fedora.rb +2 -3
- data/lib/active_fedora/base.rb +9 -29
- data/lib/active_fedora/content_model.rb +1 -1
- data/lib/active_fedora/relationships_helper.rb +23 -27
- data/lib/active_fedora/rels_ext_datastream.rb +48 -42
- data/lib/active_fedora/semantic_node.rb +109 -136
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora_dev.rake +0 -12
- data/spec/integration/base_spec.rb +44 -40
- data/spec/integration/rels_ext_datastream_spec.rb +31 -10
- data/spec/integration/semantic_node_spec.rb +40 -31
- data/spec/spec_helper.rb +4 -2
- data/spec/unit/active_fedora_spec.rb +6 -13
- data/spec/unit/base_spec.rb +16 -19
- data/spec/unit/content_model_spec.rb +4 -4
- data/spec/unit/relationships_helper_spec.rb +31 -12
- data/spec/unit/rels_ext_datastream_spec.rb +55 -25
- data/spec/unit/semantic_node_spec.rb +52 -121
- metadata +48 -20
@@ -18,17 +18,6 @@ APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
|
18
18
|
require 'jettywrapper'
|
19
19
|
|
20
20
|
$: << 'lib'
|
21
|
-
# def jetty_params
|
22
|
-
# project_root = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
23
|
-
# {
|
24
|
-
# :quiet => false,
|
25
|
-
# :jetty_home => File.join(project_root,'jetty'),
|
26
|
-
# :jetty_port => 8983,
|
27
|
-
# :solr_home => File.expand_path(File.join(project_root,'jetty','solr')),
|
28
|
-
# :fedora_home => File.expand_path(File.join(project_root,'jetty','fedora','default')),
|
29
|
-
# :startup_wait=>30
|
30
|
-
# }
|
31
|
-
# end
|
32
21
|
|
33
22
|
desc "Run active-fedora rspec tests"
|
34
23
|
task :spec do
|
@@ -44,7 +33,6 @@ task :hudson do
|
|
44
33
|
jetty_params = Jettywrapper.load_config
|
45
34
|
jetty_params[:startup_wait]= 20
|
46
35
|
error = Jettywrapper.wrap(jetty_params) do
|
47
|
-
#ENV["FEDORA_HOME"]=File.expand_path(File.join(File.dirname(__FILE__),'..','..','jetty','fedora','default'))
|
48
36
|
Rake::Task["active_fedora:load_fixtures"].invoke
|
49
37
|
Rake::Task["active_fedora:rspec"].invoke
|
50
38
|
end
|
@@ -97,7 +97,7 @@ describe ActiveFedora::Base do
|
|
97
97
|
@test_object2.save
|
98
98
|
rexml = REXML::Document.new(@test_object2.datastreams["RELS-EXT"].content)
|
99
99
|
# Purpose: confirm that the isMemberOf entries exist and have real RDF in them
|
100
|
-
rexml.root.elements["rdf:Description/hasModel"].attributes["rdf:resource"].should == 'info:fedora/afmodel:ActiveFedora_Base'
|
100
|
+
rexml.root.elements["rdf:Description/ns0:hasModel"].attributes["rdf:resource"].should == 'info:fedora/afmodel:ActiveFedora_Base'
|
101
101
|
end
|
102
102
|
it "should merge attributes from fedora into attributes hash" do
|
103
103
|
inner_object = @test_object2.inner_object
|
@@ -215,8 +215,9 @@ describe ActiveFedora::Base do
|
|
215
215
|
@test_object.save
|
216
216
|
rexml = REXML::Document.new(@test_object.datastreams["RELS-EXT"].content)
|
217
217
|
# Purpose: confirm that the isMemberOf entries exist and have real RDF in them
|
218
|
-
rexml.root.
|
219
|
-
rexml.root.elements["rdf:Description/isMemberOf[@rdf:resource='info:fedora/demo:
|
218
|
+
rexml.root.attributes["xmlns:ns1"].should == 'info:fedora/fedora-system:def/relations-external#'
|
219
|
+
rexml.root.elements["rdf:Description/ns1:isMemberOf[@rdf:resource='info:fedora/demo:5']"].should_not be_nil
|
220
|
+
rexml.root.elements["rdf:Description/ns1:isMemberOf[@rdf:resource='info:fedora/demo:10']"].should_not be_nil
|
220
221
|
end
|
221
222
|
end
|
222
223
|
|
@@ -359,28 +360,25 @@ describe ActiveFedora::Base do
|
|
359
360
|
#use dummy relationships just to get correct formatting for expected objects
|
360
361
|
r = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>@test_object2)
|
361
362
|
model_rel = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>ActiveFedora::ContentModel.pid_from_ruby_class(ActiveFedora::Base))
|
362
|
-
@test_object.relationships.should == {:self=>{:has_model=>[model_rel.object],
|
363
|
-
|
363
|
+
# @test_object.relationships.should == {:self=>{:has_model=>[model_rel.object], :has_part=>[r.object]}}
|
364
|
+
stmt = @test_object.build_statement(@test_object.internal_uri, :has_part, r.object)
|
365
|
+
@test_object.relationships.has_statement?(stmt).should be_true
|
364
366
|
@test_object.remove_relationship(:has_part,@test_object2)
|
365
367
|
@test_object.save
|
366
368
|
@test_object = ActiveFedora::Base.load_instance(@pid)
|
367
|
-
@test_object.relationships.should
|
369
|
+
@test_object.relationships.has_statement?(stmt).should be_false
|
368
370
|
end
|
369
371
|
end
|
370
372
|
|
371
373
|
describe '#relationships' do
|
372
374
|
it 'should return internal relationships with no parameters and include inbound if false passed in' do
|
373
375
|
@test_object2 = MockAFBaseRelationship.new
|
374
|
-
# @test_object2.new_object = true
|
375
376
|
@test_object2.save
|
376
377
|
@test_object3 = MockAFBaseRelationship.new
|
377
|
-
# @test_object3.new_object = true
|
378
378
|
@test_object3.save
|
379
379
|
@test_object4 = MockAFBaseRelationship.new
|
380
|
-
# @test_object4.new_object = true
|
381
380
|
@test_object4.save
|
382
381
|
@test_object5 = MockAFBaseRelationship.new
|
383
|
-
# @test_object5.new_object = true
|
384
382
|
@test_object5.save
|
385
383
|
#append to named relationship 'testing'
|
386
384
|
@test_object2.testing_append(@test_object3)
|
@@ -397,32 +395,42 @@ describe ActiveFedora::Base do
|
|
397
395
|
r5 = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>@test_object5)
|
398
396
|
model_rel = ActiveFedora::Relationship.new(:subject=>:self, :predicate=>:dummy, :object=>ActiveFedora::ContentModel.pid_from_ruby_class(MockAFBaseRelationship))
|
399
397
|
#check inbound correct, testing goes to :has_part and testing2 goes to :has_member
|
400
|
-
@test_object2.
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
@
|
406
|
-
|
407
|
-
|
408
|
-
@
|
409
|
-
|
410
|
-
@
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
@
|
421
|
-
@
|
422
|
-
@test_object5.relationships.should
|
423
|
-
|
424
|
-
|
425
|
-
|
398
|
+
stmt = @test_object2.build_statement(@test_object2.internal_uri, :has_model, model_rel.object)
|
399
|
+
@test_object2.relationships.has_statement?(stmt).should be_true
|
400
|
+
stmt = @test_object2.build_statement(@test_object2.internal_uri, :has_part, r3.object)
|
401
|
+
@test_object2.relationships.has_statement?(stmt).should be_true
|
402
|
+
stmt = @test_object2.build_statement(@test_object2.internal_uri, :has_member, r4.object)
|
403
|
+
@test_object2.relationships.has_statement?(stmt).should be_true
|
404
|
+
stmt = @test_object2.build_statement(@test_object2.internal_uri, :is_member_of_collection, r5.object)
|
405
|
+
@test_object2.relationships.has_statement?(stmt).should be_true
|
406
|
+
@test_object2.inbound_relationships.should == {:has_part=>[r5.object]}
|
407
|
+
stmt = @test_object3.build_statement(@test_object3.internal_uri, :has_model, model_rel.object)
|
408
|
+
@test_object3.relationships.has_statement?(stmt).should be_true
|
409
|
+
@test_object3.inbound_relationships.should == {:has_part=>[r2.object],
|
410
|
+
:has_member=>[r5.object]}
|
411
|
+
stmt = @test_object4.build_statement(@test_object4.internal_uri, :has_model, model_rel.object)
|
412
|
+
@test_object4.relationships.has_statement?(stmt).should be_true
|
413
|
+
@test_object4.inbound_relationships.should == {:has_member=>[r2.object],:has_collection_member=>[r5.object]}
|
414
|
+
|
415
|
+
stmt = @test_object5.build_statement(@test_object5.internal_uri, :has_model, model_rel.object)
|
416
|
+
@test_object5.relationships.has_statement?(stmt).should be_true
|
417
|
+
stmt = @test_object5.build_statement(@test_object5.internal_uri, :has_part, r2.object)
|
418
|
+
@test_object5.relationships.has_statement?(stmt).should be_true
|
419
|
+
stmt = @test_object5.build_statement(@test_object5.internal_uri, :has_member, r3.object)
|
420
|
+
@test_object5.relationships.has_statement?(stmt).should be_true
|
421
|
+
stmt = @test_object5.build_statement(@test_object5.internal_uri, :has_collection_member, r4.object)
|
422
|
+
@test_object5.relationships.has_statement?(stmt).should be_true
|
423
|
+
@test_object5.inbound_relationships.should == {:is_member_of_collection=>[r2.object]}
|
424
|
+
# @test_object2.outbound_relationships.should == {:has_model=>[model_rel.object],
|
425
|
+
# :has_part=>[r3.object],
|
426
|
+
# :has_member=>[r4.object],
|
427
|
+
# :is_member_of_collection=>[r5.object]}
|
428
|
+
# @test_object3.outbound_relationships.should == {:has_model=>[model_rel.object]}
|
429
|
+
# @test_object4.outbound_relationships.should == {:has_model=>[model_rel.object]}
|
430
|
+
# @test_object5.outbound_relationships.should == {:has_model=>[model_rel.object],
|
431
|
+
# :has_part=>[r2.object],
|
432
|
+
# :has_member=>[r3.object],
|
433
|
+
# :has_collection_member=>[r4.object]}
|
426
434
|
end
|
427
435
|
end
|
428
436
|
|
@@ -621,16 +629,12 @@ describe ActiveFedora::Base do
|
|
621
629
|
describe '#find_relationship_by_name' do
|
622
630
|
it 'should find relationships based on name passed in for inbound or outbound' do
|
623
631
|
@test_object2 = MockAFBaseRelationship.new
|
624
|
-
# @test_object2.new_object = true
|
625
632
|
@test_object2.save
|
626
633
|
@test_object3 = MockAFBaseRelationship.new
|
627
|
-
# @test_object3.new_object = true
|
628
634
|
@test_object3.save
|
629
635
|
@test_object4 = MockAFBaseRelationship.new
|
630
|
-
# @test_object4.new_object = true
|
631
636
|
@test_object4.save
|
632
637
|
@test_object5 = MockAFBaseRelationship.new
|
633
|
-
# @test_object5.new_object = true
|
634
638
|
@test_object5.save
|
635
639
|
#append to named relationship 'testing'
|
636
640
|
@test_object2.add_relationship_by_name("testing",@test_object3)
|
@@ -30,6 +30,7 @@ describe ActiveFedora::RelsExtDatastream do
|
|
30
30
|
before(:each) do
|
31
31
|
@test_object = ActiveFedora::Base.new
|
32
32
|
@test_datastream = ActiveFedora::RelsExtDatastream.new(@test_object.inner_object, 'RELS-EXT')
|
33
|
+
@test_datastream.model = @test_object
|
33
34
|
@test_object.save
|
34
35
|
@test_relationships = [ActiveFedora::Relationship.new(:subject => :self, :predicate => :is_member_of, :object => "info:fedora/demo:5"),
|
35
36
|
ActiveFedora::Relationship.new(:subject => :self, :predicate => :is_member_of, :object => "info:fedora/demo:10")]
|
@@ -64,9 +65,9 @@ describe ActiveFedora::RelsExtDatastream do
|
|
64
65
|
it "should generate new rdf/xml as the datastream content" do
|
65
66
|
@test_object.add_datastream(@test_datastream)
|
66
67
|
@test_relationships.each do |rel|
|
67
|
-
@
|
68
|
+
@test_object.add_relationship(rel.predicate, rel.object)
|
68
69
|
end
|
69
|
-
rexml1 = REXML::Document.new(@test_datastream.to_rels_ext(
|
70
|
+
rexml1 = REXML::Document.new(@test_datastream.to_rels_ext())
|
70
71
|
@test_datastream.serialize!
|
71
72
|
rexml2 = REXML::Document.new(@test_object.datastreams["RELS-EXT"].content)
|
72
73
|
rexml1.root.elements["rdf:Description"].inspect.should eql(rexml2.root.elements["rdf:Description"].inspect)
|
@@ -81,9 +82,10 @@ describe ActiveFedora::RelsExtDatastream do
|
|
81
82
|
end
|
82
83
|
@test_object.save
|
83
84
|
# make sure that _something_ was actually added to the object's relationships hash
|
84
|
-
@test_object.
|
85
|
+
@test_object.ids_for_outbound(:is_member_of).size.should == 1
|
85
86
|
o = ActiveFedora::Base.load_instance(@test_object.pid)
|
86
|
-
ActiveFedora::Base.load_instance(@test_object.pid).relationships
|
87
|
+
new_rels = ActiveFedora::Base.load_instance(@test_object.pid).relationships
|
88
|
+
new_rels.should == @test_object.relationships
|
87
89
|
end
|
88
90
|
|
89
91
|
describe '#from_solr' do
|
@@ -132,15 +134,34 @@ describe ActiveFedora::RelsExtDatastream do
|
|
132
134
|
test_from_solr_object5 = MockAFRelsSolr.new
|
133
135
|
test_from_solr_object5.rels_ext.from_solr(solr_doc)
|
134
136
|
|
135
|
-
test_from_solr_object2.
|
137
|
+
stmt = test_from_solr_object2.build_statement(test_from_solr_object2.internal_uri, :has_part, r3.object)
|
138
|
+
test_from_solr_object2.relationships.has_statement?(stmt).should be_true
|
139
|
+
stmt = test_from_solr_object2.build_statement(test_from_solr_object2.internal_uri, :has_member, r4.object)
|
140
|
+
test_from_solr_object2.relationships.has_statement?(stmt).should be_true
|
141
|
+
stmt = test_from_solr_object2.build_statement(test_from_solr_object2.internal_uri, :has_model, model_rel.object)
|
142
|
+
test_from_solr_object2.relationships.has_statement?(stmt).should be_true
|
143
|
+
|
144
|
+
# test_from_solr_object2.relationships.should == {:self=>{:has_part=>[r3.object],:has_member=>[r4.object],:has_model=>[model_rel.object]}}
|
136
145
|
test_from_solr_object2.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[r4.object], "collection_members"=>[], "part_of"=>[], "parts_outbound"=>[r3.object]}}
|
137
|
-
test_from_solr_object3.relationships.should == {:self=>{:has_model=>[model_rel.object]}}
|
146
|
+
#test_from_solr_object3.relationships.should == {:self=>{:has_model=>[model_rel.object]}}
|
147
|
+
stmt = test_from_solr_object3.build_statement(test_from_solr_object3.internal_uri, :has_model, model_rel.object)
|
148
|
+
test_from_solr_object3.relationships.has_statement?(stmt).should be_true
|
138
149
|
test_from_solr_object3.relationships_by_name.should == {:self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
139
|
-
test_from_solr_object4.relationships.should == {:self=>{:has_model=>[model_rel.object]}}
|
150
|
+
#test_from_solr_object4.relationships.should == {:self=>{:has_model=>[model_rel.object]}}
|
151
|
+
stmt = test_from_solr_object4.build_statement(test_from_solr_object4.internal_uri, :has_model, model_rel.object)
|
152
|
+
test_from_solr_object4.relationships.has_statement?(stmt).should be_true
|
140
153
|
test_from_solr_object4.relationships_by_name.should == {:self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
141
|
-
|
142
|
-
|
143
|
-
|
154
|
+
|
155
|
+
stmt = test_from_solr_object5.build_statement(test_from_solr_object5.internal_uri, :has_model, model_rel.object)
|
156
|
+
test_from_solr_object5.relationships.has_statement?(stmt).should be_true
|
157
|
+
stmt = test_from_solr_object5.build_statement(test_from_solr_object5.internal_uri, :has_part, r2.object)
|
158
|
+
test_from_solr_object5.relationships.has_statement?(stmt).should be_true
|
159
|
+
stmt = test_from_solr_object5.build_statement(test_from_solr_object5.internal_uri, :has_member, r3.object)
|
160
|
+
test_from_solr_object5.relationships.has_statement?(stmt).should be_true
|
161
|
+
|
162
|
+
# test_from_solr_object5.relationships.should == {:self=>{:has_model=>[model_rel.object],
|
163
|
+
# :has_part=>[r2.object],
|
164
|
+
# :has_member=>[r3.object]}}
|
144
165
|
test_from_solr_object5.relationships_by_name.should == {:self=>{"testing2"=>[r3.object], "collection_members"=>[], "part_of"=>[], "testing"=>[r2.object], "parts_outbound"=>[r2.object]}}
|
145
166
|
end
|
146
167
|
end
|
@@ -9,6 +9,11 @@ describe ActiveFedora::SemanticNode do
|
|
9
9
|
include ActiveFedora::RelationshipsHelper
|
10
10
|
include ActiveFedora::SemanticNode
|
11
11
|
has_relationship "collection_members", :has_collection_member
|
12
|
+
attr_accessor :rels_ext
|
13
|
+
def initialize
|
14
|
+
self.rels_ext = ActiveFedora::RelsExtDatastream.new(nil, nil)
|
15
|
+
rels_ext.model = self
|
16
|
+
end
|
12
17
|
end
|
13
18
|
@node = SpecNode.new
|
14
19
|
class SNSpecModel < ActiveFedora::Base
|
@@ -18,11 +23,11 @@ describe ActiveFedora::SemanticNode do
|
|
18
23
|
end
|
19
24
|
class SpecNodeSolrFilterQuery < ActiveFedora::Base
|
20
25
|
has_relationship("parts", :is_part_of, :inbound => true)
|
21
|
-
has_relationship("special_parts", :is_part_of, :inbound => true, :solr_fq=>"has_model_s:info\\:fedora/SpecialPart")
|
26
|
+
has_relationship("special_parts", :is_part_of, :inbound => true, :solr_fq=>"has_model_s:info\\:fedora/afmodel\\:SpecialPart")
|
22
27
|
has_relationship("containers", :is_member_of)
|
23
|
-
has_relationship("special_containers", :is_member_of, :solr_fq=>"has_model_s:info\\:fedora/SpecialContainer")
|
28
|
+
has_relationship("special_containers", :is_member_of, :solr_fq=>"has_model_s:info\\:fedora/afmodel\\:SpecialContainer")
|
24
29
|
has_bidirectional_relationship("bi_containers", :is_member_of, :has_member)
|
25
|
-
has_bidirectional_relationship("bi_special_containers", :is_member_of, :has_member, :solr_fq=>"has_model_s:info\\:fedora/SpecialContainer")
|
30
|
+
has_bidirectional_relationship("bi_special_containers", :is_member_of, :has_member, :solr_fq=>"has_model_s:info\\:fedora/afmodel\\:SpecialContainer")
|
26
31
|
end
|
27
32
|
|
28
33
|
@test_object = SNSpecModel.new
|
@@ -53,16 +58,18 @@ describe ActiveFedora::SemanticNode do
|
|
53
58
|
@container4.add_relationship(:has_member,@test_object)
|
54
59
|
@container4.save
|
55
60
|
|
61
|
+
class SpecialContainer; end;
|
62
|
+
class SpecialPart; end;
|
56
63
|
@special_container = ActiveFedora::Base.new()
|
57
|
-
@special_container.add_relationship(:has_model,
|
64
|
+
@special_container.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(SpecialContainer))
|
58
65
|
@special_container.save
|
59
66
|
|
60
67
|
@special_container3 = ActiveFedora::Base.new()
|
61
|
-
@special_container3.add_relationship(:has_model,
|
68
|
+
@special_container3.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(SpecialContainer))
|
62
69
|
@special_container3.save
|
63
70
|
|
64
71
|
@special_container4 = ActiveFedora::Base.new()
|
65
|
-
@special_container4.add_relationship(:has_model,
|
72
|
+
@special_container4.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(SpecialContainer))
|
66
73
|
@special_container4.save
|
67
74
|
|
68
75
|
#even though adding container3 and 3 special containers, it should only include the special containers when returning via relationship name finder methods
|
@@ -75,8 +82,8 @@ describe ActiveFedora::SemanticNode do
|
|
75
82
|
@test_object_query.save
|
76
83
|
|
77
84
|
@special_container2 = ActiveFedora::Base.new()
|
78
|
-
@special_container2.add_relationship(:has_model,
|
79
|
-
@special_container2.add_relationship(:has_member
|
85
|
+
@special_container2.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(SpecialContainer))
|
86
|
+
@special_container2.add_relationship(:has_member, 'info:fedora/'+@test_object_query.pid)
|
80
87
|
@special_container2.save
|
81
88
|
|
82
89
|
@part3 = ActiveFedora::Base.new()
|
@@ -84,7 +91,7 @@ describe ActiveFedora::SemanticNode do
|
|
84
91
|
@part3.save
|
85
92
|
|
86
93
|
@special_part = ActiveFedora::Base.new()
|
87
|
-
@special_part.add_relationship(:has_model,
|
94
|
+
@special_part.add_relationship(:has_model, ActiveFedora::ContentModel.pid_from_ruby_class(SpecialPart))
|
88
95
|
@special_part.add_relationship(:is_part_of, @test_object_query)
|
89
96
|
@special_part.save
|
90
97
|
|
@@ -144,7 +151,8 @@ describe ActiveFedora::SemanticNode do
|
|
144
151
|
spec_node = SpecNode.new
|
145
152
|
spec_node.collection_members.should == []
|
146
153
|
rel = ActiveFedora::Relationship.new(:subject => :self, :predicate => :has_collection_member, :object => @test_object.pid)
|
147
|
-
|
154
|
+
|
155
|
+
spec_node.add_relationship(rel.predicate, rel.object)
|
148
156
|
collection_members = spec_node.collection_members
|
149
157
|
collection_members.length.should == 1
|
150
158
|
collection_members.first.pid.should == @test_object.pid
|
@@ -255,13 +263,13 @@ describe ActiveFedora::SemanticNode do
|
|
255
263
|
end
|
256
264
|
|
257
265
|
it "should return a solr query for an inbound relationship" do
|
258
|
-
@test_object_query.special_parts_query.should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/SpecialPart"
|
266
|
+
@test_object_query.special_parts_query.should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/afmodel\\:SpecialPart"
|
259
267
|
end
|
260
268
|
end
|
261
269
|
|
262
270
|
describe "inbound relationship query" do
|
263
271
|
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
264
|
-
SpecNodeSolrFilterQuery.inbound_relationship_query(@test_object_query.pid,"special_parts").should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/SpecialPart"
|
272
|
+
SpecNodeSolrFilterQuery.inbound_relationship_query(@test_object_query.pid,"special_parts").should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/afmodel\\:SpecialPart"
|
265
273
|
end
|
266
274
|
|
267
275
|
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
@@ -274,7 +282,7 @@ describe ActiveFedora::SemanticNode do
|
|
274
282
|
expected_string = ""
|
275
283
|
@test_object_query.containers_ids.each_with_index do |id,index|
|
276
284
|
expected_string << " OR " if index > 0
|
277
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialContainer)"
|
285
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
278
286
|
end
|
279
287
|
SpecNodeSolrFilterQuery.outbound_relationship_query("special_containers",@test_object_query.containers_ids).should == expected_string
|
280
288
|
end
|
@@ -294,10 +302,10 @@ describe ActiveFedora::SemanticNode do
|
|
294
302
|
expected_string = ""
|
295
303
|
@test_object_query.bi_containers_outbound_ids.each_with_index do |id,index|
|
296
304
|
expected_string << " OR " if index > 0
|
297
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialContainer)"
|
305
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
298
306
|
end
|
299
307
|
expected_string << " OR "
|
300
|
-
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/SpecialContainer)"
|
308
|
+
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
301
309
|
SpecNodeSolrFilterQuery.bidirectional_relationship_query(@test_object_query.pid,"bi_special_containers",@test_object_query.bi_containers_outbound_ids).should == expected_string
|
302
310
|
end
|
303
311
|
|
@@ -371,7 +379,7 @@ describe ActiveFedora::SemanticNode do
|
|
371
379
|
expected_string = ""
|
372
380
|
@test_object_query.containers_ids.each_with_index do |id,index|
|
373
381
|
expected_string << " OR " if index > 0
|
374
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialContainer)"
|
382
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
375
383
|
end
|
376
384
|
@test_object_query.special_containers_query.should == expected_string
|
377
385
|
end
|
@@ -407,23 +415,19 @@ describe ActiveFedora::SemanticNode do
|
|
407
415
|
end
|
408
416
|
|
409
417
|
it "should return an array of all Base objects with relationship if not using solr_fq" do
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
ids.include?(@special_container.pid).should == true
|
414
|
-
ids.include?(@special_container2.pid).should == true
|
415
|
-
ids.include?(@special_container3.pid).should == true
|
416
|
-
ids.include?(@special_container4.pid).should == true
|
418
|
+
@test_object_query.bi_containers_ids.should include @container3.pid, @special_container.pid, @special_container2.pid, @special_container3.pid, @special_container4.pid
|
419
|
+
|
420
|
+
@test_object_query.bi_containers_ids.size.should == 5
|
417
421
|
end
|
418
422
|
|
419
423
|
it "should return a solr query for a bidirectional relationship" do
|
420
424
|
expected_string = ""
|
421
425
|
@test_object_query.bi_containers_outbound_ids.each_with_index do |id,index|
|
422
426
|
expected_string << " OR " if index > 0
|
423
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/SpecialContainer)"
|
427
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
424
428
|
end
|
425
429
|
expected_string << " OR "
|
426
|
-
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/SpecialContainer)"
|
430
|
+
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri.gsub(/(:)/, '\\:')} AND has_model_s:info\\:fedora/afmodel\\:SpecialContainer)"
|
427
431
|
@test_object_query.bi_special_containers_query.should == expected_string
|
428
432
|
end
|
429
433
|
end
|
@@ -436,20 +440,25 @@ describe ActiveFedora::SemanticNode do
|
|
436
440
|
has_relationship "testing", :has_part
|
437
441
|
has_relationship "testing2", :has_member
|
438
442
|
has_relationship "testing_inbound", :has_part, :inbound=>true
|
443
|
+
attr_accessor :rels_ext
|
444
|
+
def initialize
|
445
|
+
self.rels_ext = ActiveFedora::RelsExtDatastream.new(nil, nil)
|
446
|
+
rels_ext.model = self
|
447
|
+
end
|
439
448
|
end
|
440
449
|
|
441
450
|
it 'should automatically update the relationships_by_name if relationships has changed (no refresh of relationships_by_name hash unless relationships hash has changed' do
|
442
451
|
@test_object2 = MockSemNamedRelationships.new
|
443
452
|
r = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_model,:object=>ActiveFedora::ContentModel.pid_from_ruby_class(MockSemNamedRelationships)})
|
444
|
-
@test_object2.add_relationship(r)
|
453
|
+
@test_object2.add_relationship(r.predicate, r.object)
|
445
454
|
#should return expected named relationships
|
446
|
-
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[],"testing2"=>[]}
|
455
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[],"testing2"=>[]}}
|
447
456
|
r3 = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_part,:object=>@test_object})
|
448
|
-
@test_object2.add_relationship(r3)
|
449
|
-
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[]}
|
457
|
+
@test_object2.add_relationship(r3.predicate, r3.object)
|
458
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[]}}
|
450
459
|
r4 = ActiveFedora::Relationship.new({:subject=>:self,:predicate=>:has_member,:object=>"3"})
|
451
|
-
@test_object2.add_relationship(r4)
|
452
|
-
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[r4.object]}
|
460
|
+
@test_object2.add_relationship(r4.predicate, r4.object)
|
461
|
+
@test_object2.relationships_by_name.should == {:self=>{"testing"=>[r3.object],"testing2"=>[r4.object]}}
|
453
462
|
end
|
454
463
|
end
|
455
464
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
ENV["
|
1
|
+
ENV["environment"] ||= 'test'
|
2
2
|
require 'active-fedora'
|
3
3
|
require 'spec'
|
4
4
|
|
5
|
+
logger.level = Logger::WARN if logger.respond_to? :level ###MediaShelf StubLogger doesn't have a level= method
|
6
|
+
|
5
7
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
6
8
|
$VERBOSE=nil
|
7
9
|
|
8
10
|
# This loads the Fedora and Solr config info from /config/fedora.yml
|
9
11
|
# You can load it from a different location by passing a file path as an argument.
|
10
|
-
ActiveFedora.init(File.join(File.dirname(__FILE__), "..", "config", "fedora.yml"))
|
12
|
+
ActiveFedora.init(:fedora_config_path=>File.join(File.dirname(__FILE__), "..", "config", "fedora.yml"))
|
11
13
|
|
12
14
|
Spec::Runner.configure do |config|
|
13
15
|
config.mock_with :mocha
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "../spec_helper" )
|
2
|
-
require 'equivalent-xml'
|
3
2
|
|
4
3
|
# For testing Module-level methods like ActiveFedora.init
|
5
4
|
|
@@ -10,7 +9,7 @@ describe ActiveFedora do
|
|
10
9
|
unstub_blacklight
|
11
10
|
# Restore to default fedora configs
|
12
11
|
fedora_config_path = File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml")
|
13
|
-
ActiveFedora.init(:environment=>"test", :
|
12
|
+
ActiveFedora.init(:environment=>"test", :fedora_config_path=>fedora_config_path)
|
14
13
|
end
|
15
14
|
|
16
15
|
before(:each) do
|
@@ -237,13 +236,11 @@ describe ActiveFedora do
|
|
237
236
|
ActiveFedora.fedora_config_path.should eql(expected_config+'/fedora.yml')
|
238
237
|
ActiveFedora.solr_config_path.should eql(expected_config+'/solr.yml')
|
239
238
|
end
|
240
|
-
it "
|
241
|
-
ActiveFedora.init("#{@fake_rails_root}/config/fake_fedora.yml")
|
242
|
-
ActiveFedora.fedora_config_path.should eql("#{@fake_rails_root}/config/fake_fedora.yml")
|
243
|
-
#ActiveFedora.config_path.should eql("#{@fake_rails_root}/config/fake_fedora.yml")
|
239
|
+
it "raises an error if you pass in a string" do
|
240
|
+
lambda{ ActiveFedora.init("#{@fake_rails_root}/config/fake_fedora.yml") }.should raise_exception(ArgumentError)
|
244
241
|
end
|
245
242
|
it "raises an error if you pass in a non-existant config file" do
|
246
|
-
lambda{ ActiveFedora.init("really_fake_fedora.yml") }.should raise_exception(ActiveFedora::ActiveFedoraConfigurationException)
|
243
|
+
lambda{ ActiveFedora.init(:fedora_config_path=>"really_fake_fedora.yml") }.should raise_exception(ActiveFedora::ActiveFedoraConfigurationException)
|
247
244
|
end
|
248
245
|
|
249
246
|
describe "within Rails" do
|
@@ -310,7 +307,7 @@ describe ActiveFedora do
|
|
310
307
|
mock_file = mock("fedora.yml")
|
311
308
|
File.expects(:open).returns(mock_file)
|
312
309
|
YAML.expects(:load).returns({"test"=>{"solr"=>{"url"=>"http://127.0.0.1:8983/solr/development"}, "fedora"=>{"url"=>"http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"}}})
|
313
|
-
ActiveFedora.init("/path/to/my/files/fedora.yml")
|
310
|
+
ActiveFedora.init(:fedora_config_path => "/path/to/my/files/fedora.yml")
|
314
311
|
ActiveFedora.predicate_config.should == "/path/to/my/files/predicate_mappings.yml"
|
315
312
|
end
|
316
313
|
end
|
@@ -342,7 +339,7 @@ describe ActiveFedora do
|
|
342
339
|
|
343
340
|
after(:all) do
|
344
341
|
# Restore to default fedora configs
|
345
|
-
ActiveFedora.init(File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml"))
|
342
|
+
ActiveFedora.init(:fedora_config_path => File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml"))
|
346
343
|
|
347
344
|
end
|
348
345
|
|
@@ -351,10 +348,6 @@ describe ActiveFedora do
|
|
351
348
|
ActiveFedora.init()
|
352
349
|
ActiveFedora.fedora.options[:url].to_s.should == "http://127.0.0.1:8983/fedora"
|
353
350
|
end
|
354
|
-
it "should load the passed config if explicit config passed in as a string" do
|
355
|
-
ActiveFedora.init('./spec/fixtures/rails_root/config/fedora.yml')
|
356
|
-
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|
357
|
-
end
|
358
351
|
it "should load the passed config if explicit config passed in as a string" do
|
359
352
|
ActiveFedora.init(:fedora_config_path=>'./spec/fixtures/rails_root/config/fedora.yml')
|
360
353
|
ActiveFedora.fedora_config[:url].should == "http://fedoraAdmin:fedoraAdmin@testhost.com:8983/fedora"
|