active-fedora 4.0.0.rc16 → 4.0.0.rc17
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +15 -15
- data/active-fedora.gemspec +2 -2
- data/lib/active_fedora.rb +6 -1
- data/lib/active_fedora/base.rb +19 -13
- data/lib/active_fedora/content_model.rb +5 -0
- data/lib/active_fedora/datastream.rb +8 -13
- data/lib/active_fedora/fixture_loader.rb +1 -1
- data/lib/active_fedora/metadata_datastream.rb +0 -1
- data/lib/active_fedora/model.rb +1 -0
- data/lib/active_fedora/nokogiri_datastream.rb +11 -8
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +95 -64
- data/lib/active_fedora/rdf_datastream.rb +23 -34
- data/lib/active_fedora/rels_ext_datastream.rb +0 -1
- data/lib/active_fedora/solr_digital_object.rb +4 -9
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora.rake +2 -1
- data/spec/integration/base_find_by_fields_spec.rb +3 -0
- data/spec/integration/full_featured_model_spec.rb +24 -18
- data/spec/integration/metadata_datastream_helper_spec.rb +15 -14
- data/spec/integration/model_spec.rb +0 -5
- data/spec/integration/solr_service_spec.rb +1 -8
- data/spec/samples/oral_history_sample_model.rb +2 -11
- data/spec/samples/special_thing.rb +1 -1
- data/spec/unit/base_extra_spec.rb +8 -14
- data/spec/unit/base_spec.rb +4 -8
- data/spec/unit/inheritance_spec.rb +4 -8
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +60 -116
- data/spec/unit/solr_digital_object_spec.rb +2 -2
- data/spec/unit/solr_service_spec.rb +0 -1
- metadata +11 -13
- data/lib/active_fedora/attribute_methods.rb +0 -9
- data/spec/fixtures/oh_qdc.xml +0 -32
@@ -46,7 +46,7 @@ module ActiveFedora
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def register_vocabularies(*vocabs)
|
49
|
-
@vocabularies
|
49
|
+
@vocabularies ||= {}
|
50
50
|
vocabs.each do |v|
|
51
51
|
if v.is_a?(RDF::Vocabulary) or (v.respond_to? :property and v.respond_to? :to_uri)
|
52
52
|
@vocabularies[v.to_uri] = v
|
@@ -57,6 +57,7 @@ module ActiveFedora
|
|
57
57
|
ActiveFedora::Predicates.vocabularies(@vocabularies)
|
58
58
|
@vocabularies
|
59
59
|
end
|
60
|
+
|
60
61
|
def map_predicates(&block)
|
61
62
|
yield self
|
62
63
|
end
|
@@ -144,26 +145,20 @@ module ActiveFedora
|
|
144
145
|
end
|
145
146
|
|
146
147
|
include ModelMethods
|
147
|
-
|
148
|
-
|
149
|
-
def ensure_loaded
|
150
|
-
return if loaded
|
151
|
-
self.loaded = true
|
152
|
-
unless new?
|
153
|
-
deserialize content
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
148
|
+
|
157
149
|
def serialize! # :nodoc:
|
158
150
|
if graph.dirty
|
159
|
-
return unless loaded
|
160
151
|
self.content = serialize
|
161
152
|
end
|
162
153
|
end
|
163
154
|
|
155
|
+
def content= *args
|
156
|
+
@graph = nil
|
157
|
+
super
|
158
|
+
end
|
159
|
+
|
164
160
|
# returns a Hash, e.g.: {field => {:values => [], :type => :something, :behaviors => []}, ...}
|
165
161
|
def fields
|
166
|
-
ensure_loaded
|
167
162
|
field_map = {}
|
168
163
|
graph.relationships.each do |predicate, values|
|
169
164
|
vocab_sym, name = predicate.qname
|
@@ -182,7 +177,6 @@ module ActiveFedora
|
|
182
177
|
end
|
183
178
|
|
184
179
|
def to_solr(solr_doc = Hash.new) # :nodoc:
|
185
|
-
ensure_loaded
|
186
180
|
fields.each do |field_key, field_info|
|
187
181
|
values = field_info.fetch(:values, false)
|
188
182
|
if values
|
@@ -206,12 +200,24 @@ module ActiveFedora
|
|
206
200
|
end
|
207
201
|
|
208
202
|
def graph
|
209
|
-
@graph ||=
|
203
|
+
@graph ||= begin
|
204
|
+
graph = RelationshipGraph.new
|
205
|
+
unless new?
|
206
|
+
RDF::Reader.for(serialization_format).new(content) do |reader|
|
207
|
+
reader.each_statement do |statement|
|
208
|
+
next unless statement.subject == rdf_subject
|
209
|
+
literal = statement.object.kind_of?(RDF::Literal)
|
210
|
+
object = literal ? statement.object.value : statement.object.to_s
|
211
|
+
graph.add(statement.predicate, object, literal)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
graph
|
216
|
+
end
|
210
217
|
end
|
211
218
|
|
212
219
|
# @param [Symbol, RDF::URI] predicate the predicate to insert into the graph
|
213
220
|
def get_values(predicate)
|
214
|
-
ensure_loaded
|
215
221
|
predicate = find_predicate(predicate) unless predicate.kind_of? RDF::URI
|
216
222
|
results = graph[predicate]
|
217
223
|
return if results.nil?
|
@@ -225,7 +231,6 @@ module ActiveFedora
|
|
225
231
|
# if there are any existing statements with this predicate, replace them
|
226
232
|
# @param [Symbol, RDF::URI] predicate the predicate to insert into the graph
|
227
233
|
def set_value(predicate, args)
|
228
|
-
ensure_loaded
|
229
234
|
predicate = find_predicate(predicate) unless predicate.kind_of? RDF::URI
|
230
235
|
graph.delete(predicate)
|
231
236
|
args = [args] unless args.respond_to? :each
|
@@ -239,7 +244,6 @@ module ActiveFedora
|
|
239
244
|
# append a value
|
240
245
|
# @param [Symbol, RDF::URI] predicate the predicate to insert into the graph
|
241
246
|
def append(predicate, args)
|
242
|
-
ensure_loaded
|
243
247
|
predicate = find_predicate(predicate) unless predicate.kind_of? RDF::URI
|
244
248
|
graph.add(predicate, args, true)
|
245
249
|
graph.dirty = true
|
@@ -266,22 +270,7 @@ module ActiveFedora
|
|
266
270
|
@subject ||= self.class.rdf_subject.call(self)
|
267
271
|
end
|
268
272
|
|
269
|
-
|
270
|
-
# Assumes that the datastream contains RDF XML from a Fedora RELS-EXT datastream
|
271
|
-
# @param [String] data the "rdf" node
|
272
|
-
def deserialize(data)
|
273
|
-
unless data.nil?
|
274
|
-
RDF::Reader.for(serialization_format).new(data) do |reader|
|
275
|
-
reader.each_statement do |statement|
|
276
|
-
next unless statement.subject == rdf_subject
|
277
|
-
literal = statement.object.kind_of?(RDF::Literal)
|
278
|
-
object = literal ? statement.object.value : statement.object.to_s
|
279
|
-
graph.add(statement.predicate, object, literal)
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
graph
|
284
|
-
end
|
273
|
+
|
285
274
|
|
286
275
|
# Creates a RDF datastream for insertion into a Fedora Object
|
287
276
|
# Note: This method is implemented on SemanticNode instead of RelsExtDatastream because SemanticNode contains the relationships array
|
@@ -80,7 +80,6 @@ module ActiveFedora
|
|
80
80
|
# ====Warning
|
81
81
|
# Solr must be synchronized with RELS-EXT data in Fedora.
|
82
82
|
def from_solr(solr_doc)
|
83
|
-
profile_from_solr(solr_doc)
|
84
83
|
#cycle through all possible predicates
|
85
84
|
model.relationships_loaded = true
|
86
85
|
Predicates.predicate_mappings.each_pair do |namespace,predicates|
|
@@ -2,26 +2,21 @@ module ActiveFedora
|
|
2
2
|
class SolrDigitalObject
|
3
3
|
attr_reader :pid, :label, :state, :ownerId, :profile, :datastreams, :solr_doc
|
4
4
|
|
5
|
-
def initialize(solr_doc, klass=ActiveFedora::Base)
|
5
|
+
def initialize(solr_doc, profile_hash, klass=ActiveFedora::Base)
|
6
6
|
@solr_doc = solr_doc
|
7
7
|
@pid = solr_doc[SOLR_DOCUMENT_ID]
|
8
|
-
profile_attrs = solr_doc.keys.select { |k| k =~ /^objProfile_/ }
|
9
8
|
@profile = {}
|
10
|
-
|
11
|
-
attr_name = key.split(/_/)[1..-2].join('_')
|
12
|
-
@profile[attr_name] = Array(solr_doc[key]).first.to_s
|
13
|
-
end
|
9
|
+
profile_hash.each_pair { |key,value| @profile[key] = value.to_s if key =~ /^obj/ }
|
14
10
|
@profile['objCreateDate'] ||= Time.now.xmlschema
|
15
11
|
@profile['objLastModDate'] ||= @profile['objCreateDate']
|
16
12
|
|
17
13
|
@datastreams = {}
|
18
14
|
|
19
|
-
dsids =
|
15
|
+
dsids = profile_hash['datastreams'].keys
|
20
16
|
missing = dsids - klass.ds_specs.keys
|
21
17
|
missing.each do |dsid|
|
22
18
|
#Initialize the datastreams that are in the solr document, but not found in the classes spec.
|
23
|
-
|
24
|
-
mime_type = Array(@solr_doc[mime_key]).first
|
19
|
+
mime_type = profile_hash['datastreams'][dsid]['dsMIME']
|
25
20
|
ds_class = mime_type =~ /[\/\+]xml$/ ? NokogiriDatastream : Datastream
|
26
21
|
@datastreams[dsid] = ds_class.new(self, dsid)
|
27
22
|
end
|
@@ -47,7 +47,7 @@ namespace :repo do
|
|
47
47
|
dir = File.join('spec', 'fixtures')
|
48
48
|
end
|
49
49
|
filename = ActiveFedora::FixtureExporter.export_to_path(pid, dir)
|
50
|
-
puts "The object has been saved as #{filename}"
|
50
|
+
puts "The object has been saved as #{filename}" if filename
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -68,6 +68,7 @@ namespace :repo do
|
|
68
68
|
else
|
69
69
|
puts "You must specify the foxml path or provide its pid. Example: rake repo:load foxml=spec/fixtures/demo_12.foxml.xml"
|
70
70
|
end
|
71
|
+
puts "Loaded '#{pid}' into #{ActiveFedora::Base.connection_for_pid(pid).client.url}" if pid
|
71
72
|
end
|
72
73
|
|
73
74
|
|
@@ -30,6 +30,9 @@ describe ActiveFedora::Base do
|
|
30
30
|
[:title]=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
|
31
31
|
@test_object2.update_indexed_attributes(attributes)
|
32
32
|
@test_object2.save
|
33
|
+
slr = @test_object2.to_solr
|
34
|
+
# puts "PID: #{@test_object2.pid}"
|
35
|
+
# puts "ID: #{slr[:id]} #{slr["active_fedora_model_s"]}"
|
33
36
|
sleep(1)
|
34
37
|
|
35
38
|
@test_object3 = MockAFBaseQuerySolr.new
|
@@ -45,16 +45,16 @@ describe ActiveFedora::Base do
|
|
45
45
|
# my_oral_history.subjects OR my_oral_history.titles OR EVEN my_oral_history.title whenever possible
|
46
46
|
|
47
47
|
# Setting new Types for dates and text content
|
48
|
-
m.field "creation_date", :date, :xml_node => "date"
|
49
|
-
m.field "abstract", :text, :xml_node => "abstract"
|
50
|
-
m.field "rights", :text, :xml_node => "rights"
|
48
|
+
#m.field "creation_date", :date, :xml_node => "date"
|
49
|
+
#m.field "abstract", :text, :xml_node => "abstract"
|
50
|
+
#m.field "rights", :text, :xml_node => "rights"
|
51
51
|
|
52
52
|
# Setting up special named fields
|
53
|
-
m.field "subject_heading", :string, :xml_node => "subject", :encoding => "LCSH"
|
54
|
-
m.field "spatial_coverage", :string, :xml_node => "spatial", :encoding => "TGN"
|
55
|
-
m.field "temporal_coverage", :string, :xml_node => "temporal", :encoding => "Period"
|
56
|
-
m.field "type", :string, :xml_node => "type", :encoding => "DCMITYPE"
|
57
|
-
m.field "alt_title", :string, :xml_node => "alternative"
|
53
|
+
#m.field "subject_heading", :string, :xml_node => "subject", :encoding => "LCSH"
|
54
|
+
#m.field "spatial_coverage", :string, :xml_node => "spatial", :encoding => "TGN"
|
55
|
+
#m.field "temporal_coverage", :string, :xml_node => "temporal", :encoding => "Period"
|
56
|
+
#m.field "type", :string, :xml_node => "type", :encoding => "DCMITYPE"
|
57
|
+
#m.field "alt_title", :string, :xml_node => "alternative"
|
58
58
|
end
|
59
59
|
|
60
60
|
has_metadata :name => "significant_passages", :type => ActiveFedora::MetadataDatastream do |m|
|
@@ -87,10 +87,17 @@ describe ActiveFedora::Base do
|
|
87
87
|
:notes => sample_notes, :hard_copy_availability => sample_hard_copy_availability, :hard_copy_location => "Archives", :other_contributor => sample_other_contributor,
|
88
88
|
:restrictions => "None", :series => "My Series", :location => sample_location]
|
89
89
|
|
90
|
-
@dublin_core_sample_values = Hash[:creator => 'Matt && McClain', :publisher =>
|
91
|
-
:title => "title",
|
92
|
-
|
93
|
-
|
90
|
+
@dublin_core_sample_values = Hash[:creator => 'Matt && McClain', :publisher => "Jewish Womens's Archive", :description => "description", :identifier => "jwa:sample_pid",
|
91
|
+
:title => "title",
|
92
|
+
#:alt_title => "alt_title", :subject => "subject",
|
93
|
+
#:subject_heading => "subject heading",
|
94
|
+
#:creation_date => "2008-07-02T05:09:42.015Z",
|
95
|
+
:language => "language",
|
96
|
+
#:spatial_coverage => "spatial coverage",
|
97
|
+
#:temporal_coverage => "temporal coverage",
|
98
|
+
#:abstract => "abstract",
|
99
|
+
:rights => "rights", :type => "type",
|
100
|
+
#:extent => "extent",
|
94
101
|
:format => "format", :medium => "medium"]
|
95
102
|
@signigicant_passages_sample_values = {}
|
96
103
|
@sensitive_passages_sample_values = {}
|
@@ -134,7 +141,7 @@ describe ActiveFedora::Base do
|
|
134
141
|
end
|
135
142
|
|
136
143
|
@dublin_core_sample_values.each_pair do |field, value|
|
137
|
-
dublin_core_ds.send("#{field.to_s}
|
144
|
+
dublin_core_ds.send("#{field.to_s}=", [value])
|
138
145
|
end
|
139
146
|
|
140
147
|
@test_history.save
|
@@ -145,20 +152,19 @@ describe ActiveFedora::Base do
|
|
145
152
|
end
|
146
153
|
|
147
154
|
@dublin_core_sample_values.each_pair do |field, value|
|
148
|
-
|
155
|
+
next if [:format, :type].include?(field) #format and type are methods declared on Object
|
156
|
+
dublin_core_ds.send("#{field.to_s}").should == [value]
|
149
157
|
end
|
150
158
|
end
|
151
159
|
|
152
160
|
it "should have Qualified Dublin core, with custom accessors" do
|
153
161
|
|
154
|
-
#xml = REXML::Document.new(@test_history.to_xml.to_s)
|
155
162
|
dublin_core_ds = @test_history.datastreams["dublin_core"]
|
156
163
|
|
157
|
-
dublin_core_ds.
|
158
|
-
dc_xml = REXML::Document.new(dublin_core_ds.
|
164
|
+
dublin_core_ds.subject = "My Subject Heading"
|
165
|
+
dc_xml = REXML::Document.new(dublin_core_ds.to_xml)
|
159
166
|
|
160
167
|
dc_xml.root.elements["dcterms:subject"].text.should == "My Subject Heading"
|
161
|
-
dc_xml.root.elements["dcterms:subject"].attributes["xsi:type"].should == "LCSH"
|
162
168
|
|
163
169
|
end
|
164
170
|
|
@@ -16,6 +16,7 @@ class MockMetaHelperSolr < ActiveFedora::Base
|
|
16
16
|
m.field "geography", :string, :xml_node => "geography"
|
17
17
|
m.field "title", :string, :xml_node => "title"
|
18
18
|
end
|
19
|
+
|
19
20
|
end
|
20
21
|
|
21
22
|
describe ActiveFedora::MetadataDatastreamHelper do
|
@@ -44,7 +45,7 @@ describe ActiveFedora::MetadataDatastreamHelper do
|
|
44
45
|
it 'should return an object with the appropriate metadata fields filled in' do
|
45
46
|
@test_object = MockMetaHelperSolr.new
|
46
47
|
attributes = {"holding_id"=>{0=>"Holding 1"},
|
47
|
-
"language"=>{0=>"Italian"},
|
48
|
+
"language" =>{0=>"Italian"},
|
48
49
|
"creator"=>{0=>"Linguist, A."},
|
49
50
|
"geography"=>{0=>"Italy"},
|
50
51
|
"title"=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
|
@@ -74,23 +75,23 @@ describe ActiveFedora::MetadataDatastreamHelper do
|
|
74
75
|
test_from_solr_object2 = MockMetaHelperSolr.load_instance_from_solr(@test_object2.pid)
|
75
76
|
test_from_solr_object3 = MockMetaHelperSolr.load_instance_from_solr(@test_object3.pid)
|
76
77
|
|
77
|
-
test_from_solr_object.
|
78
|
-
test_from_solr_object.
|
79
|
-
|
80
|
-
test_from_solr_object.
|
78
|
+
test_from_solr_object.descMetadata.language.should == ["Italian"]
|
79
|
+
test_from_solr_object.descMetadata.creator.should == ["Linguist, A."]
|
80
|
+
test_from_solr_object.descMetadata.geography.should == ["Italy"]
|
81
|
+
test_from_solr_object.descMetadata.title.should == ["Italian and Spanish: A Comparison of Common Phrases"]
|
81
82
|
#test_from_solr_object.fields[:holding_id][:values].should == ["Holding 1"]
|
82
83
|
|
83
|
-
test_from_solr_object2.
|
84
|
-
test_from_solr_object2.
|
85
|
-
|
86
|
-
test_from_solr_object2.
|
84
|
+
test_from_solr_object2.descMetadata.language.should == ["Spanish;Latin"]
|
85
|
+
test_from_solr_object2.descMetadata.creator.should == ["Linguist, A."]
|
86
|
+
test_from_solr_object2.descMetadata.geography.should == ["Spain"]
|
87
|
+
test_from_solr_object2.descMetadata.title.should == ["A study of the evolution of Spanish from Latin"]
|
87
88
|
#test_from_solr_object2.fields[:holding_id][:values].should == ["Holding 2"]
|
88
89
|
|
89
|
-
test_from_solr_object3.
|
90
|
-
test_from_solr_object3.
|
91
|
-
|
92
|
-
test_from_solr_object3.
|
93
|
-
#test_from_solr_object3.
|
90
|
+
test_from_solr_object3.descMetadata.language.should == ["Spanish;Latin"]
|
91
|
+
test_from_solr_object3.descMetadata.creator.should == ["Linguist, A."]
|
92
|
+
test_from_solr_object3.descMetadata.geography.should == ["Spain"]
|
93
|
+
test_from_solr_object3.descMetadata.title.should == ["An obscure look into early nomadic tribes of Spain"]
|
94
|
+
#test_from_solr_object3.properties.holding_id.should == ["Holding 3"]
|
94
95
|
|
95
96
|
|
96
97
|
end
|
@@ -13,14 +13,7 @@ describe ActiveFedora::SolrService do
|
|
13
13
|
m.field "holding_id", :string
|
14
14
|
end
|
15
15
|
|
16
|
-
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
17
|
-
m.field "created", :date, :xml_node => "created"
|
18
|
-
m.field "language", :string, :xml_node => "language"
|
19
|
-
m.field "creator", :string, :xml_node => "creator"
|
20
|
-
# Created remaining fields
|
21
|
-
m.field "geography", :string, :xml_node => "geography"
|
22
|
-
m.field "title", :string, :xml_node => "title"
|
23
|
-
end
|
16
|
+
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
24
17
|
end
|
25
18
|
@test_object = ActiveFedora::Base.new
|
26
19
|
@test_object.label = 'test_object'
|
@@ -17,17 +17,8 @@ class OralHistorySampleModel < ActiveFedora::Base
|
|
17
17
|
m.field "location", :string
|
18
18
|
end
|
19
19
|
|
20
|
-
has_metadata :name => "dublin_core", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
21
|
-
|
22
|
-
m.field "abstract", :text, :xml_node => "abstract"
|
23
|
-
m.field "rights", :text, :xml_node => "rights"
|
24
|
-
m.field "subject_heading", :string, :xml_node => "subject", :encoding => "LCSH"
|
25
|
-
m.field "spatial_coverage", :string, :xml_node => "spatial", :encoding => "TGN"
|
26
|
-
m.field "temporal_coverage", :string, :xml_node => "temporal", :encoding => "Period"
|
27
|
-
m.field "type", :string, :xml_node => "type", :encoding => "DCMITYPE"
|
28
|
-
m.field "alt_title", :string, :xml_node => "alternative"
|
29
|
-
end
|
30
|
-
|
20
|
+
has_metadata :name => "dublin_core", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
21
|
+
|
31
22
|
has_metadata :name => "significant_passages", :type => ActiveFedora::MetadataDatastream do |m|
|
32
23
|
m.field "significant_passage", :text
|
33
24
|
end
|
@@ -88,16 +88,13 @@ describe ActiveFedora::Base do
|
|
88
88
|
ds.stubs(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
89
89
|
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
90
90
|
end
|
91
|
-
mock1.expects(:solrize_profile)
|
92
|
-
mock2.expects(:solrize_profile)
|
93
|
-
mock3.expects(:solrize_profile)
|
91
|
+
mock1.expects(:solrize_profile).returns({})
|
92
|
+
mock2.expects(:solrize_profile).returns({})
|
93
|
+
mock3.expects(:solrize_profile).returns({})
|
94
94
|
mock1.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
95
95
|
mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
96
96
|
mock3.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
|
97
|
-
|
98
|
-
|
99
|
-
@test_object.expects(:datastreams).returns(mock_datastreams)
|
100
|
-
@test_object.expects(:solrize_profile)
|
97
|
+
@test_object.expects(:datastreams).twice.returns(mock_datastreams)
|
101
98
|
@test_object.expects(:solrize_relationships)
|
102
99
|
@test_object.update_index
|
103
100
|
end
|
@@ -113,16 +110,13 @@ describe ActiveFedora::Base do
|
|
113
110
|
ds.stubs(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(false)
|
114
111
|
ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(false)
|
115
112
|
end
|
116
|
-
mock1.expects(:solrize_profile)
|
117
|
-
mock2.expects(:solrize_profile)
|
118
|
-
mock3.expects(:solrize_profile)
|
113
|
+
mock1.expects(:solrize_profile).returns({})
|
114
|
+
mock2.expects(:solrize_profile).returns({})
|
115
|
+
mock3.expects(:solrize_profile).returns({})
|
119
116
|
mock1.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
120
117
|
mock2.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
121
118
|
mock3.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
122
|
-
|
123
|
-
|
124
|
-
@test_object.expects(:datastreams).returns(mock_datastreams)
|
125
|
-
@test_object.expects(:solrize_profile)
|
119
|
+
@test_object.expects(:datastreams).twice.returns(mock_datastreams)
|
126
120
|
@test_object.expects(:solrize_relationships)
|
127
121
|
@test_object.update_index
|
128
122
|
end
|
data/spec/unit/base_spec.rb
CHANGED
@@ -211,10 +211,8 @@ describe ActiveFedora::Base do
|
|
211
211
|
end
|
212
212
|
|
213
213
|
it "should call .fields on all MetadataDatastreams and return the resulting document" do
|
214
|
-
mock1 = mock("ds1", :fields => {})
|
215
|
-
mock2 = mock("ds2", :fields => {})
|
216
|
-
mock1.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
217
|
-
mock2.expects(:kind_of?).with(ActiveFedora::MetadataDatastream).returns(true)
|
214
|
+
mock1 = mock("ds1", :fields => {}, :class=>ActiveFedora::MetadataDatastream)
|
215
|
+
mock2 = mock("ds2", :fields => {}, :class=>ActiveFedora::MetadataDatastream)
|
218
216
|
|
219
217
|
@test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2})
|
220
218
|
@test_object.fields
|
@@ -615,8 +613,7 @@ describe ActiveFedora::Base do
|
|
615
613
|
ngds.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(false)
|
616
614
|
ngds.expects(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
617
615
|
|
618
|
-
@test_object.expects(:datastreams).returns({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
|
619
|
-
@test_object.expects(:solrize_profile)
|
616
|
+
@test_object.expects(:datastreams).twice.returns({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
|
620
617
|
@test_object.expects(:solrize_relationships)
|
621
618
|
@test_object.to_solr
|
622
619
|
end
|
@@ -625,8 +622,7 @@ describe ActiveFedora::Base do
|
|
625
622
|
mock.expects(:solrize_profile)
|
626
623
|
mock.expects(:kind_of?).with(ActiveFedora::RDFDatastream).returns(true)
|
627
624
|
|
628
|
-
@test_object.expects(:datastreams).returns({:ds1 => mock})
|
629
|
-
@test_object.expects(:solrize_profile)
|
625
|
+
@test_object.expects(:datastreams).twice.returns({:ds1 => mock})
|
630
626
|
@test_object.expects(:solrize_relationships)
|
631
627
|
@test_object.to_solr
|
632
628
|
end
|