active-fedora 4.5.1 → 4.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/active_fedora/associations/association_collection.rb +4 -0
- data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +0 -6
- data/lib/active_fedora/associations/has_many_association.rb +0 -7
- data/lib/active_fedora/base.rb +3 -6
- data/lib/active_fedora/datastream.rb +4 -0
- data/lib/active_fedora/model.rb +10 -7
- data/lib/active_fedora/relationships.rb +1 -3
- data/lib/active_fedora/solr_service.rb +9 -3
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/semantic_node_spec.rb +16 -14
- data/spec/spec_helper.rb +4 -0
- data/spec/unit/base_extra_spec.rb +2 -16
- data/spec/unit/base_spec.rb +0 -7
- data/spec/unit/model_spec.rb +18 -10
- data/spec/unit/relationships_spec.rb +20 -14
- data/spec/unit/solr_config_options_spec.rb +1 -1
- metadata +133 -6
@@ -160,6 +160,10 @@ module ActiveFedora
|
|
160
160
|
@target = Array.new
|
161
161
|
end
|
162
162
|
|
163
|
+
def construct_query
|
164
|
+
@counter_query = @finder_query = ActiveFedora::SolrService.construct_query_for_rel(@reflection.options[:property], @owner.internal_uri)
|
165
|
+
end
|
166
|
+
|
163
167
|
|
164
168
|
private
|
165
169
|
|
@@ -43,12 +43,6 @@ module ActiveFedora
|
|
43
43
|
r.remove_relationship(@reflection.options[:property], @owner)
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
47
|
-
def construct_query
|
48
|
-
internal_uri = @owner.internal_uri
|
49
|
-
escaped_uri = internal_uri.gsub(/(:)/, '\\:')
|
50
|
-
@counter_query = @finder_query = "#{@reflection.options[:property]}_s:#{escaped_uri}"
|
51
|
-
end
|
52
46
|
end
|
53
47
|
end
|
54
48
|
end
|
@@ -44,13 +44,6 @@ module ActiveFedora
|
|
44
44
|
r.remove_relationship(@reflection.options[:property], @owner)
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
|
-
|
49
|
-
def construct_query
|
50
|
-
internal_uri = @owner.internal_uri
|
51
|
-
escaped_uri = internal_uri.gsub(/(:)/, '\\:')
|
52
|
-
@counter_query = @finder_query = "#{@reflection.options[:property]}_s:#{escaped_uri}"
|
53
|
-
end
|
54
47
|
end
|
55
48
|
end
|
56
49
|
end
|
data/lib/active_fedora/base.rb
CHANGED
@@ -306,7 +306,7 @@ module ActiveFedora
|
|
306
306
|
end
|
307
307
|
datastreams.each_value do |ds|
|
308
308
|
ds.ensure_xml_loaded if ds.respond_to? :ensure_xml_loaded ### Can't put this in the model because it's often implemented in Solrizer::XML::TerminologyBasedSolrizer
|
309
|
-
solr_doc = ds.to_solr(solr_doc)
|
309
|
+
solr_doc = ds.to_solr(solr_doc)
|
310
310
|
end
|
311
311
|
solr_doc = solrize_relationships(solr_doc) unless opts[:model_only]
|
312
312
|
solr_doc
|
@@ -397,8 +397,7 @@ module ActiveFedora
|
|
397
397
|
raise "Solr document record id and pid do not match" unless pid == solr_doc[SOLR_DOCUMENT_ID]
|
398
398
|
end
|
399
399
|
klass = if class_str = solr_doc['has_model_s']
|
400
|
-
|
401
|
-
class_str.first.split(/:/).last.gsub(/_/,"::").constantize
|
400
|
+
ActiveFedora::SolrService.class_from_solr_document(solr_doc)
|
402
401
|
else
|
403
402
|
ActiveFedora::Base
|
404
403
|
end
|
@@ -416,9 +415,7 @@ module ActiveFedora
|
|
416
415
|
if ds.respond_to?(:profile_from_hash) and (ds_prof = profile_hash['datastreams'][ds.dsid])
|
417
416
|
ds.profile_from_hash(ds_prof)
|
418
417
|
end
|
419
|
-
if ds.respond_to?(:from_solr)
|
420
|
-
ds.from_solr(solr_doc) if ds.kind_of?(ActiveFedora::MetadataDatastream) || ds.kind_of?(ActiveFedora::NokogiriDatastream) || ( ds.kind_of?(ActiveFedora::RelsExtDatastream))
|
421
|
-
end
|
418
|
+
ds.from_solr(solr_doc) if ds.respond_to?(:from_solr)
|
422
419
|
end
|
423
420
|
obj.inner_object.freeze
|
424
421
|
obj
|
data/lib/active_fedora/model.rb
CHANGED
@@ -99,14 +99,18 @@ module ActiveFedora
|
|
99
99
|
# @param [Hash] opts the options to create a message with.
|
100
100
|
# @option opts [Integer] :rows when :all is passed, the maximum number of rows to load from solr
|
101
101
|
# @option opts [Boolean] :cast when true, examine the model and cast it to the first known cModel
|
102
|
-
def find(args, opts={})
|
102
|
+
def find(args, opts={}, &block)
|
103
103
|
return find_one(args, opts[:cast]) if args.class == String
|
104
|
+
return to_enum(:find, args, opts).to_a unless block_given?
|
105
|
+
|
104
106
|
args = {} if args == :all
|
105
|
-
results = []
|
106
107
|
find_each(args, opts) do |obj|
|
107
|
-
|
108
|
+
yield obj
|
108
109
|
end
|
109
|
-
|
110
|
+
end
|
111
|
+
|
112
|
+
def all(opts = {}, &block)
|
113
|
+
find(:all, opts, &block)
|
110
114
|
end
|
111
115
|
|
112
116
|
|
@@ -314,7 +318,7 @@ module ActiveFedora
|
|
314
318
|
end
|
315
319
|
|
316
320
|
def quote_for_solr(value)
|
317
|
-
'"' + value.gsub(/(:)/, '\\:').gsub(/"/, '\\"') + '"'
|
321
|
+
'"' + value.gsub(/(:)/, '\\:').gsub(/(\/)/, '\\/').gsub(/"/, '\\"') + '"'
|
318
322
|
end
|
319
323
|
|
320
324
|
# @deprecated
|
@@ -362,8 +366,7 @@ module ActiveFedora
|
|
362
366
|
# Return the solr clause that queries for this type of class
|
363
367
|
def search_model_clause
|
364
368
|
unless self == ActiveFedora::Base
|
365
|
-
|
366
|
-
return "#{ActiveFedora::SolrService.solr_name(:has_model, :symbol)}:#{escaped_class_uri}"
|
369
|
+
return ActiveFedora::SolrService.construct_query_for_rel(:has_model, self.to_class_uri)
|
367
370
|
end
|
368
371
|
end
|
369
372
|
|
@@ -354,9 +354,7 @@ module ActiveFedora
|
|
354
354
|
subject = :inbound
|
355
355
|
if relationships_desc.has_key?(subject) && relationships_desc[subject].has_key?(relationship_name)
|
356
356
|
predicate = relationships_desc[subject][relationship_name][:predicate]
|
357
|
-
|
358
|
-
escaped_uri = internal_uri.gsub(/(:)/, '\\:')
|
359
|
-
query = "#{predicate}_s:#{escaped_uri}"
|
357
|
+
query = ActiveFedora::SolrService.construct_query_for_rel(predicate, "info:fedora/#{pid}")
|
360
358
|
if relationships_desc.has_key?(subject) && relationships_desc[subject].has_key?(relationship_name) && relationships_desc[subject][relationship_name].has_key?(:solr_fq)
|
361
359
|
solr_fq = relationships_desc[subject][relationship_name][:solr_fq]
|
362
360
|
query << " AND " unless query.empty?
|
@@ -51,8 +51,10 @@ module ActiveFedora
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def self.class_from_solr_document(hit)
|
54
|
-
model_value =
|
55
|
-
Model.from_class_uri(
|
54
|
+
model_value = nil
|
55
|
+
hit[solr_name("has_model", :symbol)].each {|value| model_value ||= Model.from_class_uri(value)}
|
56
|
+
logger.warn "Could not find a model for #{hit["id"]}, defaulting to ActiveFedora::Base" unless model_value
|
57
|
+
model_value || ActiveFedora::Base
|
56
58
|
end
|
57
59
|
|
58
60
|
# Construct a solr query for a list of pids
|
@@ -70,7 +72,11 @@ module ActiveFedora
|
|
70
72
|
end
|
71
73
|
|
72
74
|
def self.escape_uri_for_query(uri)
|
73
|
-
return uri.gsub(/(:)/, '\\:')
|
75
|
+
return uri.gsub(/(:)/, '\\:').gsub(/(\/)/, '\\/')
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.construct_query_for_rel(predicate, target_uri)
|
79
|
+
"#{solr_name(predicate, :symbol)}:#{escape_uri_for_query(target_uri)}"
|
74
80
|
end
|
75
81
|
|
76
82
|
def self.query(query, args={})
|
@@ -18,11 +18,11 @@ describe ActiveFedora::SemanticNode do
|
|
18
18
|
class SpecNodeSolrFilterQuery < ActiveFedora::Base
|
19
19
|
include ActiveFedora::Relationships
|
20
20
|
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
|
21
|
+
has_relationship("special_parts", :is_part_of, :inbound => true, :solr_fq=>"has_model_s:info\\:fedora\\/afmodel\\:SpecialPart")
|
22
22
|
has_relationship("containers", :is_member_of)
|
23
|
-
has_relationship("special_containers", :is_member_of, :solr_fq=>"has_model_s:info\\:fedora
|
23
|
+
has_relationship("special_containers", :is_member_of, :solr_fq=>"has_model_s:info\\:fedora\\/afmodel\\:SpecialContainer")
|
24
24
|
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
|
25
|
+
has_bidirectional_relationship("bi_special_containers", :is_member_of, :has_member, :solr_fq=>"has_model_s:info\\:fedora\\/afmodel\\:SpecialContainer")
|
26
26
|
end
|
27
27
|
|
28
28
|
@test_object = SNSpecModel.new
|
@@ -89,7 +89,9 @@ describe ActiveFedora::SemanticNode do
|
|
89
89
|
@special_part.add_relationship(:has_model, SpecialPart.to_class_uri)
|
90
90
|
@special_part.add_relationship(:is_part_of, @test_object_query)
|
91
91
|
@special_part.save
|
92
|
-
|
92
|
+
|
93
|
+
@special_container_query = "has_model_s:#{solr_uri("info:fedora/afmodel:SpecialContainer")}"
|
94
|
+
@special_part_query = "has_model_s:#{solr_uri("info:fedora/afmodel:SpecialPart")}"
|
93
95
|
end
|
94
96
|
|
95
97
|
after(:all) do
|
@@ -251,17 +253,17 @@ describe ActiveFedora::SemanticNode do
|
|
251
253
|
end
|
252
254
|
|
253
255
|
it "should return a solr query for an inbound relationship" do
|
254
|
-
@test_object_query.special_parts_query.should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{@test_object_query.internal_uri
|
256
|
+
@test_object_query.special_parts_query.should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{solr_uri(@test_object_query.internal_uri)} AND #{@special_part_query}"
|
255
257
|
end
|
256
258
|
end
|
257
259
|
|
258
260
|
describe "inbound relationship query" do
|
259
261
|
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
260
|
-
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
|
262
|
+
SpecNodeSolrFilterQuery.inbound_relationship_query(@test_object_query.pid,"special_parts").should == "#{@test_object_query.relationship_predicates[:inbound]['special_parts']}_s:#{solr_uri(@test_object_query.internal_uri)} AND #{@special_part_query}"
|
261
263
|
end
|
262
264
|
|
263
265
|
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
264
|
-
SpecNodeSolrFilterQuery.inbound_relationship_query(@test_object_query.pid,"parts").should == "is_part_of_s:#{@test_object_query.internal_uri
|
266
|
+
SpecNodeSolrFilterQuery.inbound_relationship_query(@test_object_query.pid,"parts").should == "is_part_of_s:#{solr_uri(@test_object_query.internal_uri)}"
|
265
267
|
end
|
266
268
|
end
|
267
269
|
|
@@ -270,7 +272,7 @@ describe ActiveFedora::SemanticNode do
|
|
270
272
|
expected_string = ""
|
271
273
|
@test_object_query.containers_ids.each_with_index do |id,index|
|
272
274
|
expected_string << " OR " if index > 0
|
273
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND
|
275
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND #{@special_container_query})"
|
274
276
|
end
|
275
277
|
SpecNodeSolrFilterQuery.outbound_relationship_query("special_containers",@test_object_query.containers_ids).should == expected_string
|
276
278
|
end
|
@@ -290,10 +292,10 @@ describe ActiveFedora::SemanticNode do
|
|
290
292
|
expected_string = ""
|
291
293
|
@test_object_query.bi_containers_outbound_ids.each_with_index do |id,index|
|
292
294
|
expected_string << " OR " if index > 0
|
293
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND
|
295
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND #{@special_container_query})"
|
294
296
|
end
|
295
297
|
expected_string << " OR "
|
296
|
-
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri
|
298
|
+
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{solr_uri(@test_object_query.internal_uri)} AND #{@special_container_query})"
|
297
299
|
SpecNodeSolrFilterQuery.bidirectional_relationship_query(@test_object_query.pid,"bi_special_containers",@test_object_query.bi_containers_outbound_ids).should == expected_string
|
298
300
|
end
|
299
301
|
|
@@ -304,7 +306,7 @@ describe ActiveFedora::SemanticNode do
|
|
304
306
|
expected_string << "id:" + id.gsub(/(:)/, '\\:')
|
305
307
|
end
|
306
308
|
expected_string << " OR "
|
307
|
-
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri
|
309
|
+
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{solr_uri(@test_object_query.internal_uri)})"
|
308
310
|
SpecNodeSolrFilterQuery.bidirectional_relationship_query(@test_object_query.pid,"bi_containers",@test_object_query.bi_containers_outbound_ids).should == expected_string
|
309
311
|
end
|
310
312
|
end
|
@@ -367,7 +369,7 @@ describe ActiveFedora::SemanticNode do
|
|
367
369
|
expected_string = ""
|
368
370
|
@test_object_query.containers_ids.each_with_index do |id,index|
|
369
371
|
expected_string << " OR " if index > 0
|
370
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND
|
372
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND #{@special_container_query})"
|
371
373
|
end
|
372
374
|
@test_object_query.special_containers_query.should == expected_string
|
373
375
|
end
|
@@ -412,10 +414,10 @@ describe ActiveFedora::SemanticNode do
|
|
412
414
|
expected_string = ""
|
413
415
|
@test_object_query.bi_containers_outbound_ids.each_with_index do |id,index|
|
414
416
|
expected_string << " OR " if index > 0
|
415
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND
|
417
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND #{@special_container_query})"
|
416
418
|
end
|
417
419
|
expected_string << " OR "
|
418
|
-
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{@test_object_query.internal_uri
|
420
|
+
expected_string << "(#{@test_object_query.relationship_predicates[:inbound]['bi_special_containers_inbound']}_s:#{solr_uri(@test_object_query.internal_uri)} AND #{@special_container_query})"
|
419
421
|
@test_object_query.bi_special_containers_query.should == expected_string
|
420
422
|
end
|
421
423
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -87,19 +87,12 @@ describe ActiveFedora::Base do
|
|
87
87
|
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
88
88
|
mock1 = mock("ds1", :to_solr)
|
89
89
|
mock2 = mock("ds2", :to_solr)
|
90
|
-
mock3 = mock("RELS-EXT")
|
90
|
+
mock3 = mock("RELS-EXT", :to_solr)
|
91
91
|
|
92
92
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
93
|
-
mock_datastreams.values.each do |ds|
|
94
|
-
ds.stubs(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
95
|
-
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
96
|
-
end
|
97
93
|
mock1.expects(:solrize_profile).returns({})
|
98
94
|
mock2.expects(:solrize_profile).returns({})
|
99
95
|
mock3.expects(:solrize_profile).returns({})
|
100
|
-
mock1.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
101
|
-
mock2.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
102
|
-
mock3.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
|
103
96
|
@test_object.expects(:datastreams).twice.returns(mock_datastreams)
|
104
97
|
@test_object.expects(:solrize_relationships)
|
105
98
|
@test_object.update_index
|
@@ -109,19 +102,12 @@ describe ActiveFedora::Base do
|
|
109
102
|
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
110
103
|
mock1 = mock("ds1", :to_solr)
|
111
104
|
mock2 = mock("ds2", :to_solr)
|
112
|
-
mock3 = mock("RELS-EXT")
|
105
|
+
mock3 = mock("RELS-EXT", :to_solr)
|
113
106
|
|
114
107
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
115
|
-
mock_datastreams.values.each do |ds|
|
116
|
-
ds.stubs(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
|
117
|
-
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
118
|
-
end
|
119
108
|
mock1.expects(:solrize_profile).returns({})
|
120
109
|
mock2.expects(:solrize_profile).returns({})
|
121
110
|
mock3.expects(:solrize_profile).returns({})
|
122
|
-
mock1.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
123
|
-
mock2.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
124
|
-
mock3.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
125
111
|
@test_object.expects(:datastreams).twice.returns(mock_datastreams)
|
126
112
|
@test_object.expects(:solrize_relationships)
|
127
113
|
@test_object.update_index
|
data/spec/unit/base_spec.rb
CHANGED
@@ -623,12 +623,6 @@ describe ActiveFedora::Base do
|
|
623
623
|
ngds.expects(:solrize_profile)
|
624
624
|
mock1.expects(:solrize_profile)
|
625
625
|
mock2.expects(:solrize_profile)
|
626
|
-
mock1.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
627
|
-
mock1.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
628
|
-
mock2.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
629
|
-
mock2.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
630
|
-
ngds.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
631
|
-
ngds.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
632
626
|
|
633
627
|
@test_object.expects(:datastreams).twice.returns({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
|
634
628
|
@test_object.expects(:solrize_relationships)
|
@@ -637,7 +631,6 @@ describe ActiveFedora::Base do
|
|
637
631
|
it "should call .to_solr on all RDFDatastreams, passing the resulting document to solr" do
|
638
632
|
mock = mock("ds1", :to_solr)
|
639
633
|
mock.expects(:solrize_profile)
|
640
|
-
mock.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
641
634
|
|
642
635
|
@test_object.expects(:datastreams).twice.returns({:ds1 => mock})
|
643
636
|
@test_object.expects(:solrize_relationships)
|
data/spec/unit/model_spec.rb
CHANGED
@@ -10,6 +10,7 @@ describe ActiveFedora::Model do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
13
|
+
@model_query = "has_model_s:#{solr_uri("info:fedora/afmodel:SpecModel_Basic")}"
|
13
14
|
end
|
14
15
|
|
15
16
|
after(:all) do
|
@@ -27,7 +28,7 @@ describe ActiveFedora::Model do
|
|
27
28
|
mock_docs = mock('docs')
|
28
29
|
mock_docs.expects(:each).multiple_yields([{"id" => "changeme:30"}],[{"id" => "changeme:22"}])
|
29
30
|
mock_docs.expects(:has_next?).returns(false)
|
30
|
-
ActiveFedora::SolrService.instance.conn.expects(:paginate).with(1, 1000, 'select', :params=>{:q
|
31
|
+
ActiveFedora::SolrService.instance.conn.expects(:paginate).with(1, 1000, 'select', :params=>{:q=>@model_query, :qt => 'standard', :sort => ['system_create_dt asc'], :fl=> 'id', }).returns('response'=>{'docs'=>mock_docs})
|
31
32
|
SpecModel::Basic.find(:all).should == ["Fake Object1", "Fake Object2"]
|
32
33
|
end
|
33
34
|
end
|
@@ -79,7 +80,7 @@ describe ActiveFedora::Model do
|
|
79
80
|
hash[:params] &&
|
80
81
|
hash[:params][:sort] == ['system_create_dt asc'] &&
|
81
82
|
hash[:params][:fl] == 'id' &&
|
82
|
-
hash[:params][:q].split(" AND ").include?(
|
83
|
+
hash[:params][:q].split(" AND ").include?(@model_query) &&
|
83
84
|
hash[:params][:q].split(" AND ").include?("foo:\"bar\"") &&
|
84
85
|
hash[:params][:q].split(" AND ").include?("baz:\"quix\"") &&
|
85
86
|
hash[:params][:q].split(" AND ").include?("baz:\"quack\"")
|
@@ -89,12 +90,19 @@ describe ActiveFedora::Model do
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
describe '#all' do
|
94
|
+
it "should pass everything through to .find" do
|
95
|
+
SpecModel::Basic.expects(:find).with(:all, {})
|
96
|
+
SpecModel::Basic.all
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
92
100
|
describe '#find_each' do
|
93
101
|
it "should query solr for all objects with :active_fedora_model_s of self.class" do
|
94
102
|
mock_docs = mock('docs')
|
95
103
|
mock_docs.expects(:each).multiple_yields([{"id" => "changeme:30"}],[{"id" => "changeme:22"}])
|
96
104
|
mock_docs.expects(:has_next?).returns(false)
|
97
|
-
ActiveFedora::SolrService.instance.conn.expects(:paginate).with(1, 1000, 'select', :params=>{:q
|
105
|
+
ActiveFedora::SolrService.instance.conn.expects(:paginate).with(1, 1000, 'select', :params=>{:q=>@model_query, :qt => 'standard', :sort => ['system_create_dt asc'], :fl=> 'id', }).returns('response'=>{'docs'=>mock_docs})
|
98
106
|
|
99
107
|
SpecModel::Basic.expects(:find_one).with("changeme:30", nil).returns(SpecModel::Basic.new(:pid=>'changeme:30'))
|
100
108
|
SpecModel::Basic.expects(:find_one).with("changeme:22", nil).returns(SpecModel::Basic.new(:pid=>'changeme:22'))
|
@@ -117,7 +125,7 @@ describe ActiveFedora::Model do
|
|
117
125
|
hash[:params] &&
|
118
126
|
hash[:params][:sort] == ['system_create_dt asc'] &&
|
119
127
|
hash[:params][:fl] == 'id' &&
|
120
|
-
hash[:params][:q].split(" AND ").include?(
|
128
|
+
hash[:params][:q].split(" AND ").include?(@model_query) &&
|
121
129
|
hash[:params][:q].split(" AND ").include?("foo:\"bar\"") &&
|
122
130
|
hash[:params][:q].split(" AND ").include?("baz:\"quix\"") &&
|
123
131
|
hash[:params][:q].split(" AND ").include?("baz:\"quack\"")
|
@@ -141,7 +149,7 @@ describe ActiveFedora::Model do
|
|
141
149
|
hash[:params] &&
|
142
150
|
hash[:params][:sort] == ['system_create_dt asc'] &&
|
143
151
|
hash[:params][:fl] == 'id' &&
|
144
|
-
hash[:params][:q].split(" AND ").include?(
|
152
|
+
hash[:params][:q].split(" AND ").include?(@model_query) &&
|
145
153
|
hash[:params][:q].split(" AND ").include?("foo:\"bar\"") &&
|
146
154
|
hash[:params][:q].split(" AND ").include?("baz:\"quix\"") &&
|
147
155
|
hash[:params][:q].split(" AND ").include?("baz:\"quack\"")
|
@@ -157,12 +165,12 @@ describe ActiveFedora::Model do
|
|
157
165
|
|
158
166
|
it "should return a count" do
|
159
167
|
mock_result = {'response'=>{'numFound'=>7}}
|
160
|
-
ActiveFedora::SolrService.expects(:query).with(
|
168
|
+
ActiveFedora::SolrService.expects(:query).with(@model_query, :rows=>0, :raw=>true).returns(mock_result)
|
161
169
|
SpecModel::Basic.count.should == 7
|
162
170
|
end
|
163
171
|
it "should allow conditions" do
|
164
172
|
mock_result = {'response'=>{'numFound'=>7}}
|
165
|
-
ActiveFedora::SolrService.expects(:query).with(
|
173
|
+
ActiveFedora::SolrService.expects(:query).with("#{@model_query} AND foo:bar", :rows=>0, :raw=>true).returns(mock_result)
|
166
174
|
SpecModel::Basic.count(:conditions=>'foo:bar').should == 7
|
167
175
|
end
|
168
176
|
end
|
@@ -188,7 +196,7 @@ describe ActiveFedora::Model do
|
|
188
196
|
ActiveFedora::SolrService.expects(:query).with() { |args|
|
189
197
|
q = args.first if args.is_a? Array
|
190
198
|
q ||= args
|
191
|
-
q.split(" AND ").include?(
|
199
|
+
q.split(" AND ").include?(@model_query) &&
|
192
200
|
q.split(" AND ").include?("foo:\"bar\"") &&
|
193
201
|
q.split(" AND ").include?("baz:\"quix\"") &&
|
194
202
|
q.split(" AND ").include?("baz:\"quack\"")
|
@@ -201,8 +209,8 @@ describe ActiveFedora::Model do
|
|
201
209
|
ActiveFedora::SolrService.expects(:query).with() { |args|
|
202
210
|
q = args.first if args.is_a? Array
|
203
211
|
q ||= args
|
204
|
-
q.split(" AND ").include?(
|
205
|
-
q.split(" AND ").include?(
|
212
|
+
q.split(" AND ").include?(@model_query) &&
|
213
|
+
q.split(" AND ").include?(@model_query) &&
|
206
214
|
q.split(" AND ").include?('foo:"9\\" Nails"') &&
|
207
215
|
q.split(" AND ").include?('baz:"7\\" version"') &&
|
208
216
|
q.split(" AND ").include?('baz:"quack"')
|
@@ -6,6 +6,12 @@ describe ActiveFedora::Relationships do
|
|
6
6
|
def increment_pid
|
7
7
|
@@last_pid += 1
|
8
8
|
end
|
9
|
+
|
10
|
+
before(:all) do
|
11
|
+
@part_of_sample = "is_part_of_s:#{solr_uri("info:fedora/test:sample_pid")}"
|
12
|
+
@constituent_of_sample = "is_constituent_of_s:#{solr_uri("info:fedora/test:sample_pid")}"
|
13
|
+
@is_part_query = "has_model_s:#{solr_uri("info:fedora/SpecialPart")}"
|
14
|
+
end
|
9
15
|
|
10
16
|
before(:each) do
|
11
17
|
class SpecNode
|
@@ -169,7 +175,7 @@ describe ActiveFedora::Relationships do
|
|
169
175
|
local_node = SpecNode.new()
|
170
176
|
local_node.expects(:pid).returns("test:sample_pid")
|
171
177
|
SpecNode.expects(:relationships_desc).returns({:inbound=>{"parts"=>{:predicate=>:is_part_of}}}).at_least_once()
|
172
|
-
ActiveFedora::SolrService.expects(:query).with(
|
178
|
+
ActiveFedora::SolrService.expects(:query).with(@part_of_sample, :rows=>25).returns(@sample_solr_hits)
|
173
179
|
local_node.parts_ids.should == ["_PID1_", "_PID2_", "_PID3_"]
|
174
180
|
end
|
175
181
|
|
@@ -182,7 +188,7 @@ describe ActiveFedora::Relationships do
|
|
182
188
|
local_node.expects(:pid).returns("test:sample_pid")
|
183
189
|
SpecNode.expects(:relationships_desc).returns({:inbound=>{"constituents"=>{:predicate=>:is_constituent_of}}}).at_least_once()
|
184
190
|
instance = stub(:conn=>stub(:conn))
|
185
|
-
ActiveFedora::SolrService.expects(:query).with(
|
191
|
+
ActiveFedora::SolrService.expects(:query).with(@constituent_of_sample, :raw=>true, :rows=>101).returns(solr_result)
|
186
192
|
local_node.constituents(:response_format => :solr, :rows=>101).should == solr_result
|
187
193
|
end
|
188
194
|
|
@@ -192,7 +198,7 @@ describe ActiveFedora::Relationships do
|
|
192
198
|
local_node = SpecNode.new
|
193
199
|
local_node.expects(:pid).returns("test:sample_pid")
|
194
200
|
SpecNode.expects(:relationships_desc).returns({:inbound=>{"parts"=>{:predicate=>:is_part_of}}}).at_least_once()
|
195
|
-
ActiveFedora::SolrService.expects(:query).with(
|
201
|
+
ActiveFedora::SolrService.expects(:query).with(@part_of_sample, :rows=>25).returns([Hash["id"=>"pid1"], Hash["id"=>"pid2"]])
|
196
202
|
local_node.parts(:response_format => :id_array).should == ["pid1", "pid2"]
|
197
203
|
end
|
198
204
|
|
@@ -320,7 +326,7 @@ describe ActiveFedora::Relationships do
|
|
320
326
|
@local_node.expects(:ids_for_outbound).with(:has_part).returns(["mypid:1"])
|
321
327
|
id_array_query = ActiveFedora::SolrService.construct_query_for_pids(["mypid:1"])
|
322
328
|
solr_result = mock("solr result")
|
323
|
-
ActiveFedora::SolrService.expects(:query).with("#{id_array_query} OR (
|
329
|
+
ActiveFedora::SolrService.expects(:query).with("#{id_array_query} OR (#{@part_of_sample})", :rows=>25).returns(solr_result)
|
324
330
|
@local_node.all_parts(:response_format=>:solr)
|
325
331
|
end
|
326
332
|
|
@@ -747,8 +753,8 @@ describe ActiveFedora::Relationships do
|
|
747
753
|
describe "bidirectional_relationship_query" do
|
748
754
|
before do
|
749
755
|
class MockBiNamedRelationshipQuery < SpecNode
|
750
|
-
register_relationship_desc(:self, "testing_query_outbound", :has_part, :type=>SpecNode, :solr_fq=>"has_model_s:info\\:fedora
|
751
|
-
register_relationship_desc(:inbound, "testing_query_inbound", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:info\\:fedora
|
756
|
+
register_relationship_desc(:self, "testing_query_outbound", :has_part, :type=>SpecNode, :solr_fq=>"has_model_s:info\\:fedora\\/SpecialPart")
|
757
|
+
register_relationship_desc(:inbound, "testing_query_inbound", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:info\\:fedora\\/SpecialPart")
|
752
758
|
create_bidirectional_relationship_name_methods("testing","testing_outbound")
|
753
759
|
register_relationship_desc(:self, "testing_no_solr_fq_outbound", :has_part, :type=>SpecNode)
|
754
760
|
register_relationship_desc(:inbound, "testing_no_solr_fq_inbound", :is_part_of, :type=>SpecNode)
|
@@ -774,10 +780,10 @@ describe ActiveFedora::Relationships do
|
|
774
780
|
ids = ["changeme:1","changeme:2","changeme:3","changeme:4","changeme:5"]
|
775
781
|
ids.each_with_index do |id,index|
|
776
782
|
expected_string << " OR " if index > 0
|
777
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND
|
783
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND #{@is_part_query})"
|
778
784
|
end
|
779
785
|
expected_string << " OR "
|
780
|
-
expected_string << "(is_part_of_s:info\\:fedora
|
786
|
+
expected_string << "(is_part_of_s:info\\:fedora\\/changeme\\:6 AND #{@is_part_query})"
|
781
787
|
MockBiNamedRelationshipQuery.bidirectional_relationship_query("changeme:6","testing_query",ids).should == expected_string
|
782
788
|
end
|
783
789
|
|
@@ -789,7 +795,7 @@ describe ActiveFedora::Relationships do
|
|
789
795
|
expected_string << "id:" + id.gsub(/(:)/, '\\:')
|
790
796
|
end
|
791
797
|
expected_string << " OR "
|
792
|
-
expected_string << "(is_part_of_s:info\\:fedora
|
798
|
+
expected_string << "(is_part_of_s:info\\:fedora\\/changeme\\:6)"
|
793
799
|
MockBiNamedRelationshipQuery.bidirectional_relationship_query("changeme:6","testing_no_solr_fq",ids).should == expected_string
|
794
800
|
end
|
795
801
|
end
|
@@ -797,7 +803,7 @@ describe ActiveFedora::Relationships do
|
|
797
803
|
describe "inbound_relationship_query" do
|
798
804
|
before do
|
799
805
|
class MockInboundNamedRelationshipQuery < SpecNode
|
800
|
-
register_relationship_desc(:inbound, "testing_inbound_query", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:
|
806
|
+
register_relationship_desc(:inbound, "testing_inbound_query", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:#{solr_uri("info:fedora/SpecialPart")}")
|
801
807
|
register_relationship_desc(:inbound, "testing_inbound_no_solr_fq", :is_part_of, :type=>SpecNode)
|
802
808
|
end
|
803
809
|
end
|
@@ -806,11 +812,11 @@ describe ActiveFedora::Relationships do
|
|
806
812
|
end
|
807
813
|
|
808
814
|
it "should return a properly formatted query for a relationship that has a solr filter query defined" do
|
809
|
-
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_query").should == "is_part_of_s:info\\:fedora
|
815
|
+
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_query").should == "is_part_of_s:info\\:fedora\\/changeme\\:1 AND #{@is_part_query}"
|
810
816
|
end
|
811
817
|
|
812
818
|
it "should return a properly formatted query for a relationship that does not have a solr filter query defined" do
|
813
|
-
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_no_solr_fq").should == "is_part_of_s:info\\:fedora
|
819
|
+
MockInboundNamedRelationshipQuery.inbound_relationship_query("changeme:1","testing_inbound_no_solr_fq").should == "is_part_of_s:info\\:fedora\\/changeme\\:1"
|
814
820
|
end
|
815
821
|
end
|
816
822
|
|
@@ -820,7 +826,7 @@ describe ActiveFedora::Relationships do
|
|
820
826
|
describe "outbound_relationship_query" do
|
821
827
|
before do
|
822
828
|
class MockOutboundNamedRelationshipQuery < SpecNode
|
823
|
-
register_relationship_desc(:self, "testing_query", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:
|
829
|
+
register_relationship_desc(:self, "testing_query", :is_part_of, :type=>SpecNode, :solr_fq=>"has_model_s:#{solr_uri("info:fedora/SpecialPart")}")
|
824
830
|
register_relationship_desc(:self,"testing_no_solr_fq", :is_part_of, :type=>SpecNode)
|
825
831
|
end
|
826
832
|
end
|
@@ -833,7 +839,7 @@ describe ActiveFedora::Relationships do
|
|
833
839
|
expected_string = ""
|
834
840
|
ids.each_with_index do |id,index|
|
835
841
|
expected_string << " OR " if index > 0
|
836
|
-
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:
|
842
|
+
expected_string << "(id:" + id.gsub(/(:)/, '\\:') + " AND has_model_s:#{solr_uri("info:fedora/SpecialPart")})"
|
837
843
|
end
|
838
844
|
MockOutboundNamedRelationshipQuery.outbound_relationship_query("testing_query",ids).should == expected_string
|
839
845
|
end
|
@@ -51,7 +51,7 @@ describe ActiveFedora do
|
|
51
51
|
|
52
52
|
it "should be used by ActiveFedora::Base#find_with_conditions" do
|
53
53
|
mock_response = mock("SolrResponse")
|
54
|
-
ActiveFedora::SolrService.expects(:query).with("has_model_s:info\\:fedora
|
54
|
+
ActiveFedora::SolrService.expects(:query).with("has_model_s:info\\:fedora\\/afmodel\\:SolrSpecModel_Basic AND " + SOLR_DOCUMENT_ID + ':"changeme\\:30"', {:sort => ['system_create_dt asc']}).returns(mock_response)
|
55
55
|
|
56
56
|
SolrSpecModel::Basic.find_with_conditions(:id=>"changeme:30").should equal(mock_response)
|
57
57
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.5.
|
4
|
+
version: 4.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-08-
|
14
|
+
date: 2012-08-30 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rsolr
|
@@ -522,7 +522,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
522
522
|
version: '0'
|
523
523
|
segments:
|
524
524
|
- 0
|
525
|
-
hash:
|
525
|
+
hash: -146245566086376860
|
526
526
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
527
527
|
none: false
|
528
528
|
requirements:
|
@@ -531,12 +531,139 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
531
531
|
version: '0'
|
532
532
|
segments:
|
533
533
|
- 0
|
534
|
-
hash:
|
534
|
+
hash: -146245566086376860
|
535
535
|
requirements: []
|
536
536
|
rubyforge_project: rubyfedora
|
537
|
-
rubygems_version: 1.8.
|
537
|
+
rubygems_version: 1.8.23
|
538
538
|
signing_key:
|
539
539
|
specification_version: 3
|
540
540
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|
541
|
-
test_files:
|
541
|
+
test_files:
|
542
|
+
- spec/config_helper.rb
|
543
|
+
- spec/fixtures/changeme155.xml
|
544
|
+
- spec/fixtures/dino.jpg
|
545
|
+
- spec/fixtures/dino_jpg_no_file_ext
|
546
|
+
- spec/fixtures/dublin_core_rdf_descMetadata.nt
|
547
|
+
- spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml
|
548
|
+
- spec/fixtures/minivan.jpg
|
549
|
+
- spec/fixtures/mixed_rdf_descMetadata.nt
|
550
|
+
- spec/fixtures/mods_articles/hydrangea_article1.xml
|
551
|
+
- spec/fixtures/rails_root/config/fake_fedora.yml
|
552
|
+
- spec/fixtures/rails_root/config/fedora.yml
|
553
|
+
- spec/fixtures/rails_root/config/predicate_mappings.yml
|
554
|
+
- spec/fixtures/rails_root/config/solr.yml
|
555
|
+
- spec/fixtures/rails_root/config/solr_mappings.yml
|
556
|
+
- spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml
|
557
|
+
- spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml
|
558
|
+
- spec/fixtures/sharded_fedora.yml
|
559
|
+
- spec/fixtures/solr_rdf_descMetadata.nt
|
560
|
+
- spec/fixtures/test_12.foxml.xml
|
561
|
+
- spec/hydrangea_fixture_mods_article1.foxml.xml
|
562
|
+
- spec/integration/associations_spec.rb
|
563
|
+
- spec/integration/base_file_management_spec.rb
|
564
|
+
- spec/integration/base_find_by_fields_spec.rb
|
565
|
+
- spec/integration/base_spec.rb
|
566
|
+
- spec/integration/bug_spec.rb
|
567
|
+
- spec/integration/datastream_collections_spec.rb
|
568
|
+
- spec/integration/datastream_spec.rb
|
569
|
+
- spec/integration/datastreams_spec.rb
|
570
|
+
- spec/integration/full_featured_model_spec.rb
|
571
|
+
- spec/integration/metadata_datastream_helper_spec.rb
|
572
|
+
- spec/integration/metadata_datastream_spec.rb
|
573
|
+
- spec/integration/model_spec.rb
|
574
|
+
- spec/integration/mods_article_integration_spec.rb
|
575
|
+
- spec/integration/nested_attribute_spec.rb
|
576
|
+
- spec/integration/nokogiri_datastream_spec.rb
|
577
|
+
- spec/integration/ntriples_datastream_spec.rb
|
578
|
+
- spec/integration/rels_ext_datastream_spec.rb
|
579
|
+
- spec/integration/semantic_node_spec.rb
|
580
|
+
- spec/integration/solr_service_spec.rb
|
581
|
+
- spec/rails3_test_app/.gitignore
|
582
|
+
- spec/rails3_test_app/.rspec
|
583
|
+
- spec/rails3_test_app/.rvmrc
|
584
|
+
- spec/rails3_test_app/Gemfile
|
585
|
+
- spec/rails3_test_app/Gemfile.lock
|
586
|
+
- spec/rails3_test_app/Rakefile
|
587
|
+
- spec/rails3_test_app/app/controllers/application_controller.rb
|
588
|
+
- spec/rails3_test_app/app/helpers/application_helper.rb
|
589
|
+
- spec/rails3_test_app/app/views/layouts/application.html.erb
|
590
|
+
- spec/rails3_test_app/config.ru
|
591
|
+
- spec/rails3_test_app/config/application.rb
|
592
|
+
- spec/rails3_test_app/config/boot.rb
|
593
|
+
- spec/rails3_test_app/config/database.yml
|
594
|
+
- spec/rails3_test_app/config/environment.rb
|
595
|
+
- spec/rails3_test_app/config/environments/development.rb
|
596
|
+
- spec/rails3_test_app/config/environments/production.rb
|
597
|
+
- spec/rails3_test_app/config/environments/test.rb
|
598
|
+
- spec/rails3_test_app/config/initializers/backtrace_silencers.rb
|
599
|
+
- spec/rails3_test_app/config/initializers/inflections.rb
|
600
|
+
- spec/rails3_test_app/config/initializers/mime_types.rb
|
601
|
+
- spec/rails3_test_app/config/initializers/secret_token.rb
|
602
|
+
- spec/rails3_test_app/config/initializers/session_store.rb
|
603
|
+
- spec/rails3_test_app/config/locales/en.yml
|
604
|
+
- spec/rails3_test_app/config/routes.rb
|
605
|
+
- spec/rails3_test_app/db/seeds.rb
|
606
|
+
- spec/rails3_test_app/run_tests
|
607
|
+
- spec/rails3_test_app/script/rails
|
608
|
+
- spec/rails3_test_app/spec/spec_helper.rb
|
609
|
+
- spec/rails3_test_app/spec/unit/rails_3_init.rb
|
610
|
+
- spec/rcov.opts
|
611
|
+
- spec/samples/hydra-mods_article_datastream.rb
|
612
|
+
- spec/samples/hydra-rights_metadata_datastream.rb
|
613
|
+
- spec/samples/marpa-dc_datastream.rb
|
614
|
+
- spec/samples/models/audio_record.rb
|
615
|
+
- spec/samples/models/hydrangea_article.rb
|
616
|
+
- spec/samples/models/image.rb
|
617
|
+
- spec/samples/models/oral_history.rb
|
618
|
+
- spec/samples/models/seminar.rb
|
619
|
+
- spec/samples/models/seminar_audio_file.rb
|
620
|
+
- spec/samples/oral_history_sample.xml
|
621
|
+
- spec/samples/oral_history_sample_model.rb
|
622
|
+
- spec/samples/oral_history_xml.xml
|
623
|
+
- spec/samples/samples.rb
|
624
|
+
- spec/samples/special_thing.rb
|
625
|
+
- spec/spec.opts
|
626
|
+
- spec/spec_helper.rb
|
627
|
+
- spec/support/mock_fedora.rb
|
628
|
+
- spec/unit/active_fedora_spec.rb
|
629
|
+
- spec/unit/association_proxy_spec.rb
|
630
|
+
- spec/unit/base_active_model_spec.rb
|
631
|
+
- spec/unit/base_cma_spec.rb
|
632
|
+
- spec/unit/base_datastream_management_spec.rb
|
633
|
+
- spec/unit/base_delegate_spec.rb
|
634
|
+
- spec/unit/base_delegate_to_spec.rb
|
635
|
+
- spec/unit/base_extra_spec.rb
|
636
|
+
- spec/unit/base_file_management_spec.rb
|
637
|
+
- spec/unit/base_spec.rb
|
638
|
+
- spec/unit/callback_spec.rb
|
639
|
+
- spec/unit/code_configurator_spec.rb
|
640
|
+
- spec/unit/config_spec.rb
|
641
|
+
- spec/unit/content_model_spec.rb
|
642
|
+
- spec/unit/datastream_collections_spec.rb
|
643
|
+
- spec/unit/datastream_spec.rb
|
644
|
+
- spec/unit/datastreams_spec.rb
|
645
|
+
- spec/unit/file_configurator_spec.rb
|
646
|
+
- spec/unit/has_many_collection_spec.rb
|
647
|
+
- spec/unit/inheritance_spec.rb
|
648
|
+
- spec/unit/metadata_datastream_spec.rb
|
649
|
+
- spec/unit/model_spec.rb
|
650
|
+
- spec/unit/nokogiri_datastream_spec.rb
|
651
|
+
- spec/unit/ntriples_datastream_spec.rb
|
652
|
+
- spec/unit/predicates_spec.rb
|
653
|
+
- spec/unit/property_spec.rb
|
654
|
+
- spec/unit/qualified_dublin_core_datastream_spec.rb
|
655
|
+
- spec/unit/rdf_xml_writer_spec.rb
|
656
|
+
- spec/unit/rdfxml_rdf_datastream_spec.rb
|
657
|
+
- spec/unit/relationship_graph_spec.rb
|
658
|
+
- spec/unit/relationships_spec.rb
|
659
|
+
- spec/unit/rels_ext_datastream_spec.rb
|
660
|
+
- spec/unit/rubydora_connection_spec.rb
|
661
|
+
- spec/unit/semantic_node_spec.rb
|
662
|
+
- spec/unit/service_definitions_spec.rb
|
663
|
+
- spec/unit/simple_datastream_spec.rb
|
664
|
+
- spec/unit/solr_config_options_spec.rb
|
665
|
+
- spec/unit/solr_digital_object_spec.rb
|
666
|
+
- spec/unit/solr_service_spec.rb
|
667
|
+
- spec/unit/unsaved_digital_object_spec.rb
|
668
|
+
- spec/unit/validations_spec.rb
|
542
669
|
has_rdoc:
|