active-fedora 9.7.0 → 9.7.1
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -9
- data/History.txt +9 -0
- data/lib/active_fedora.rb +2 -2
- data/lib/active_fedora/association_hash.rb +2 -2
- data/lib/active_fedora/associations/builder/collection_association.rb +1 -1
- data/lib/active_fedora/associations/builder/has_many.rb +1 -1
- data/lib/active_fedora/associations/collection_association.rb +1 -1
- data/lib/active_fedora/associations/collection_proxy.rb +4 -4
- data/lib/active_fedora/associations/directly_contains_one_association.rb +3 -7
- data/lib/active_fedora/associations/has_many_association.rb +22 -29
- data/lib/active_fedora/associations/indirectly_contains_association.rb +1 -1
- data/lib/active_fedora/autosave_association.rb +1 -1
- data/lib/active_fedora/base.rb +1 -1
- data/lib/active_fedora/callbacks.rb +1 -1
- data/lib/active_fedora/change_set.rb +1 -2
- data/lib/active_fedora/datastreams/nokogiri_datastreams.rb +6 -6
- data/lib/active_fedora/file.rb +5 -4
- data/lib/active_fedora/file_configurator.rb +6 -11
- data/lib/active_fedora/fixity_service.rb +1 -1
- data/lib/active_fedora/indexing_service.rb +3 -3
- data/lib/active_fedora/ldp_cache.rb +1 -1
- data/lib/active_fedora/model.rb +9 -10
- data/lib/active_fedora/nested_attributes.rb +1 -1
- data/lib/active_fedora/nom_datastream.rb +5 -5
- data/lib/active_fedora/om_datastream.rb +2 -2
- data/lib/active_fedora/persistence.rb +2 -2
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
- data/lib/active_fedora/rdf/fcrepo.rb +6 -0
- data/lib/active_fedora/rdf/persistence.rb +2 -2
- data/lib/active_fedora/rdf/rdf_datastream.rb +1 -1
- data/lib/active_fedora/reflection.rb +3 -3
- data/lib/active_fedora/relation.rb +2 -2
- data/lib/active_fedora/solr_query_builder.rb +93 -91
- data/lib/active_fedora/solr_service.rb +2 -2
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/versionable.rb +14 -12
- data/lib/active_fedora/versions_graph.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +1 -1
- data/spec/integration/scoped_query_spec.rb +2 -2
- data/spec/integration/versionable_spec.rb +1 -3
- data/spec/unit/forbidden_attributes_protection_spec.rb +1 -1
- data/spec/unit/ntriples_datastream_spec.rb +1 -1
- data/spec/unit/persistence_spec.rb +1 -1
- data/spec/unit/predicates_spec.rb +1 -1
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
- data/spec/unit/solr_config_options_spec.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b84c2ad365e0934c1c9a6900e855dad6e3e0fb89
|
|
4
|
+
data.tar.gz: 138dc99577501a383818150e1e3ce25622312d90
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 045396d2d76fc88b5f1ceb99340cb5dfebf6b0af631c13f2ae22d15c5de243758aeaf0717221cb202f310b846b2541f588e941741a081e8f16a71577c214ef76
|
|
7
|
+
data.tar.gz: 42aa7a98b66b0dcc517aa67ec26889b84850bc195d2f7d6b444520f0de9afc890a5144e553906982e6181542a129d616f8d9cfec36bd02f49d8a54d0d84a2a68
|
data/.rubocop.yml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require: rubocop-rspec
|
|
2
2
|
|
|
3
3
|
AllCops:
|
|
4
|
-
|
|
4
|
+
TargetRubyVersion: 2.2
|
|
5
5
|
DisplayCopNames: true
|
|
6
6
|
Include:
|
|
7
7
|
- '**/Rakefile'
|
|
@@ -9,10 +9,6 @@ AllCops:
|
|
|
9
9
|
- 'script/**/*'
|
|
10
10
|
- 'vendor/**/*'
|
|
11
11
|
|
|
12
|
-
Lint/RescueException:
|
|
13
|
-
Exclude:
|
|
14
|
-
- 'lib/active_fedora/ldp_cache.rb'
|
|
15
|
-
|
|
16
12
|
Lint/HandleExceptions:
|
|
17
13
|
Exclude:
|
|
18
14
|
- 'spec/unit/**/*'
|
|
@@ -184,9 +180,6 @@ Style/ClassAndModuleChildren:
|
|
|
184
180
|
Style/Documentation:
|
|
185
181
|
Enabled: false
|
|
186
182
|
|
|
187
|
-
Style/HashSyntax:
|
|
188
|
-
Exclude:
|
|
189
|
-
|
|
190
183
|
Style/GlobalVars:
|
|
191
184
|
Exclude:
|
|
192
185
|
- 'spec/**/*'
|
|
@@ -210,6 +203,9 @@ Style/FileName:
|
|
|
210
203
|
- 'lib/active-fedora.rb'
|
|
211
204
|
- 'spec/samples/hydra-mods_article_datastream.rb'
|
|
212
205
|
|
|
206
|
+
Rails:
|
|
207
|
+
Enabled: true
|
|
208
|
+
|
|
213
209
|
Rails/Output:
|
|
214
210
|
Exclude:
|
|
215
211
|
- 'lib/generators/**/*'
|
|
@@ -242,4 +238,3 @@ RSpec/DescribeClass:
|
|
|
242
238
|
RSpec/DescribedClass:
|
|
243
239
|
Exclude:
|
|
244
240
|
- 'spec/unit/finder_methods_spec.rb'
|
|
245
|
-
|
data/History.txt
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
v9.7.1
|
|
2
|
+
2016-01-22 : The jcr/mix versionable predicate is no longer used [Adam Wead]
|
|
3
|
+
|
|
4
|
+
2016-01-22 : Add detail to SolrQueryBuilder.construct_query_for_pids deprecation warning [David Chandek-Stark]
|
|
5
|
+
|
|
6
|
+
2016-01-21 : Updating to the latest Rubocop [Michael J. Giarlo]
|
|
7
|
+
|
|
8
|
+
2015-12-04 : Adds :PID property to ActiveFedora::RDF::Fcrepo::Model vocab [David Chandek-Stark]
|
|
9
|
+
|
|
1
10
|
v9.7.0
|
|
2
11
|
2015-11-25 : Allowing access to the gone? method from outside the object [Carolyn Cole]
|
|
3
12
|
|
data/lib/active_fedora.rb
CHANGED
|
@@ -209,9 +209,9 @@ module ActiveFedora #:nodoc:
|
|
|
209
209
|
return config_options[:environment]
|
|
210
210
|
elsif defined?(Rails.env) && !Rails.env.nil?
|
|
211
211
|
return Rails.env.to_s
|
|
212
|
-
elsif defined?(ENV['environment']) && !
|
|
212
|
+
elsif defined?(ENV['environment']) && !ENV['environment'].nil?
|
|
213
213
|
return ENV['environment']
|
|
214
|
-
elsif defined?(ENV['RAILS_ENV']) && !
|
|
214
|
+
elsif defined?(ENV['RAILS_ENV']) && !ENV['RAILS_ENV'].nil?
|
|
215
215
|
raise "You're depending on RAILS_ENV for setting your environment. Please use ENV['environment'] for non-rails environment setting: 'rake foo:bar environment=test'"
|
|
216
216
|
else
|
|
217
217
|
ENV['environment'] = 'development'
|
|
@@ -44,8 +44,8 @@ module ActiveFedora
|
|
|
44
44
|
def key?(key)
|
|
45
45
|
keys.include?(key) || keys.map(&:to_s).include?(key)
|
|
46
46
|
end
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
alias include? key?
|
|
48
|
+
alias has_key? key?
|
|
49
49
|
|
|
50
50
|
def values
|
|
51
51
|
keys.map { |k| self[k] }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'active_fedora/associations'
|
|
2
2
|
module ActiveFedora::Associations::Builder
|
|
3
3
|
class CollectionAssociation < Association #:nodoc:
|
|
4
|
-
CALLBACKS = [:before_add, :after_add, :before_remove, :after_remove]
|
|
4
|
+
CALLBACKS = [:before_add, :after_add, :before_remove, :after_remove].freeze
|
|
5
5
|
|
|
6
6
|
self.valid_options += [
|
|
7
7
|
:before_add, :after_add, :before_remove, :after_remove
|
|
@@ -52,7 +52,7 @@ module ActiveFedora::Associations::Builder
|
|
|
52
52
|
send(name).delete_all
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
|
-
|
|
55
|
+
alias define_nullify_dependency_method define_delete_all_dependency_method
|
|
56
56
|
|
|
57
57
|
def define_restrict_dependency_method
|
|
58
58
|
name = self.name
|
|
@@ -835,7 +835,7 @@ module ActiveFedora
|
|
|
835
835
|
@association.include?(record)
|
|
836
836
|
end
|
|
837
837
|
|
|
838
|
-
|
|
838
|
+
alias new build
|
|
839
839
|
|
|
840
840
|
def proxy_association
|
|
841
841
|
@association
|
|
@@ -845,17 +845,17 @@ module ActiveFedora
|
|
|
845
845
|
def scope
|
|
846
846
|
@association.scope
|
|
847
847
|
end
|
|
848
|
-
|
|
848
|
+
alias spawn scope
|
|
849
849
|
|
|
850
850
|
def to_ary
|
|
851
851
|
load_target.dup
|
|
852
852
|
end
|
|
853
|
-
|
|
853
|
+
alias to_a to_ary
|
|
854
854
|
|
|
855
855
|
def <<(*records)
|
|
856
856
|
proxy_association.concat(records) && self
|
|
857
857
|
end
|
|
858
|
-
|
|
858
|
+
alias push <<
|
|
859
859
|
|
|
860
860
|
def clear
|
|
861
861
|
delete_all
|
|
@@ -98,13 +98,9 @@ module ActiveFedora
|
|
|
98
98
|
# Returns the RDF node that contains metadata like RDF.type assertions for the record
|
|
99
99
|
# Sometimes this is the record, other times it's record.metadata_node
|
|
100
100
|
def metadata_node_for_record(record)
|
|
101
|
-
if record.respond_to?(:type) && record.respond_to?(:set_value)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return record.metadata_node
|
|
105
|
-
else
|
|
106
|
-
raise ArgumentError, "record must either have a metadata node or must respond to .type"
|
|
107
|
-
end
|
|
101
|
+
return record if record.respond_to?(:type) && record.respond_to?(:set_value)
|
|
102
|
+
return record.metadata_node if record.respond_to?(:metadata_node)
|
|
103
|
+
raise ArgumentError, "record must either have a metadata node or must respond to .type"
|
|
108
104
|
end
|
|
109
105
|
end
|
|
110
106
|
end
|
|
@@ -69,40 +69,33 @@ module ActiveFedora
|
|
|
69
69
|
|
|
70
70
|
# Deletes the records according to the <tt>:dependent</tt> option.
|
|
71
71
|
def delete_records(records, method)
|
|
72
|
-
if method == :destroy
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
# keys = records.map { |r| r[reflection.association_primary_key] }
|
|
77
|
-
# scope = scoped.where(reflection.association_primary_key => keys)
|
|
72
|
+
return records.each(&:destroy) if method == :destroy
|
|
73
|
+
# Find all the records that point to this and nullify them
|
|
74
|
+
# keys = records.map { |r| r[reflection.association_primary_key] }
|
|
75
|
+
# scope = scoped.where(reflection.association_primary_key => keys)
|
|
78
76
|
|
|
79
|
-
|
|
80
|
-
raise "Not Implemented"
|
|
81
|
-
# update_counter(-scope.delete_all)
|
|
82
|
-
else
|
|
77
|
+
raise "Not Implemented" if method == :delete_all # update_counter(-scope.delete_all)
|
|
83
78
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
end
|
|
97
|
-
# Check to see if the object still exists (may be already deleted).
|
|
98
|
-
# In Rails, they do this with an update_all to avoid callbacks and validations, we may need the same.
|
|
99
|
-
record.save! if record.class.exists?(record.id)
|
|
100
|
-
end
|
|
79
|
+
if reflection.inverse_of # Can't get an inverse when class_name: 'ActiveFedora::Base' is supplied
|
|
80
|
+
inverse = reflection.inverse_of
|
|
81
|
+
records.each do |record|
|
|
82
|
+
next unless record.persisted?
|
|
83
|
+
if inverse.collection?
|
|
84
|
+
# Remove from a has_and_belongs_to_many
|
|
85
|
+
record.association(inverse.name).delete(@owner)
|
|
86
|
+
elsif inverse.klass == ActiveFedora::Base
|
|
87
|
+
record[inverse.foreign_key] = nil
|
|
88
|
+
else
|
|
89
|
+
# Remove from a belongs_to
|
|
90
|
+
record[reflection.foreign_key] = nil
|
|
101
91
|
end
|
|
102
|
-
|
|
103
|
-
#
|
|
92
|
+
# Check to see if the object still exists (may be already deleted).
|
|
93
|
+
# In Rails, they do this with an update_all to avoid callbacks and validations, we may need the same.
|
|
94
|
+
record.save! if record.class.exists?(record.id)
|
|
104
95
|
end
|
|
105
96
|
end
|
|
97
|
+
|
|
98
|
+
# update_counter(-scope.update_all(reflection.foreign_key => nil))
|
|
106
99
|
end
|
|
107
100
|
end
|
|
108
101
|
end
|
|
@@ -75,7 +75,7 @@ module ActiveFedora
|
|
|
75
75
|
module AutosaveAssociation
|
|
76
76
|
extend ActiveSupport::Concern
|
|
77
77
|
|
|
78
|
-
ASSOCIATION_TYPES = %w( HasMany BelongsTo HasAndBelongsToMany DirectlyContains IndirectlyContains)
|
|
78
|
+
ASSOCIATION_TYPES = %w( HasMany BelongsTo HasAndBelongsToMany DirectlyContains IndirectlyContains).freeze
|
|
79
79
|
|
|
80
80
|
module AssociationBuilderExtension #:nodoc:
|
|
81
81
|
def self.included(base)
|
data/lib/active_fedora/base.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
SOLR_DOCUMENT_ID = "id" unless defined?(SOLR_DOCUMENT_ID) && !SOLR_DOCUMENT_ID.nil?
|
|
1
|
+
SOLR_DOCUMENT_ID = "id".freeze unless defined?(SOLR_DOCUMENT_ID) && !SOLR_DOCUMENT_ID.nil?
|
|
2
2
|
ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
|
|
3
3
|
require 'active_support/descendants_tracker'
|
|
4
4
|
require 'active_fedora/errors'
|
|
@@ -216,7 +216,7 @@ module ActiveFedora
|
|
|
216
216
|
:before_save, :around_save, :after_save, :before_create, :around_create,
|
|
217
217
|
:after_create, :before_update, :around_update, :after_update,
|
|
218
218
|
:before_destroy, :around_destroy, :after_destroy
|
|
219
|
-
]
|
|
219
|
+
].freeze
|
|
220
220
|
|
|
221
221
|
included do
|
|
222
222
|
extend ActiveModel::Callbacks
|
|
@@ -59,8 +59,7 @@ module ActiveFedora
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def internal?
|
|
62
|
-
value.object.to_s.start_with?("http://www.jcp.org") ||
|
|
63
|
-
value.object.to_s.start_with?("http://fedora.info") ||
|
|
62
|
+
value.object.to_s.start_with?("http://www.jcp.org", "http://fedora.info") ||
|
|
64
63
|
value.predicate.to_s.start_with?("http://fedora.info")
|
|
65
64
|
end
|
|
66
65
|
end
|
|
@@ -15,12 +15,12 @@ module ActiveFedora
|
|
|
15
15
|
|
|
16
16
|
def ng_xml
|
|
17
17
|
@ng_xml ||= begin
|
|
18
|
-
if new_record?
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
xml = if new_record?
|
|
19
|
+
## Load up the template
|
|
20
|
+
self.class.xml_template
|
|
21
|
+
else
|
|
22
|
+
Nokogiri::XML::Document.parse(remote_content)
|
|
23
|
+
end
|
|
24
24
|
self.class.decorate_ng_xml xml
|
|
25
25
|
end
|
|
26
26
|
end
|
data/lib/active_fedora/file.rb
CHANGED
|
@@ -188,6 +188,11 @@ module ActiveFedora
|
|
|
188
188
|
false
|
|
189
189
|
end
|
|
190
190
|
|
|
191
|
+
def self.relation
|
|
192
|
+
FileRelation.new(self)
|
|
193
|
+
end
|
|
194
|
+
private_class_method :relation
|
|
195
|
+
|
|
191
196
|
protected
|
|
192
197
|
|
|
193
198
|
# The string to prefix all solr fields with. Override this method if you want
|
|
@@ -198,10 +203,6 @@ module ActiveFedora
|
|
|
198
203
|
|
|
199
204
|
private
|
|
200
205
|
|
|
201
|
-
def self.relation
|
|
202
|
-
FileRelation.new(self)
|
|
203
|
-
end
|
|
204
|
-
|
|
205
206
|
# Rack::Test::UploadedFile is often set via content=, however it's not an IO, though it wraps an io object.
|
|
206
207
|
def behaves_like_io?(obj)
|
|
207
208
|
[IO, Tempfile, StringIO].any? { |klass| obj.is_a? klass } || (defined?(Rack) && obj.is_a?(Rack::Test::UploadedFile))
|
|
@@ -149,14 +149,12 @@ module ActiveFedora
|
|
|
149
149
|
# Given the solr_config that's been loaded for this environment,
|
|
150
150
|
# determine which solr url to use
|
|
151
151
|
def solr_url(solr_config)
|
|
152
|
+
return solr_config[:url] if solr_config.key?(:url)
|
|
153
|
+
return solr_config['url'] if solr_config.key?('url')
|
|
152
154
|
if @index_full_text == true && solr_config.key?(:fulltext) && solr_config[:fulltext].key?('url')
|
|
153
|
-
|
|
155
|
+
solr_config[:fulltext]['url']
|
|
154
156
|
elsif solr_config.key?(:default) && solr_config[:default].key?('url')
|
|
155
|
-
|
|
156
|
-
elsif solr_config.key?('url')
|
|
157
|
-
return solr_config['url']
|
|
158
|
-
elsif solr_config.key?(:url)
|
|
159
|
-
return solr_config[:url]
|
|
157
|
+
solr_config[:default]['url']
|
|
160
158
|
else
|
|
161
159
|
raise URI::InvalidURIError
|
|
162
160
|
end
|
|
@@ -208,11 +206,8 @@ module ActiveFedora
|
|
|
208
206
|
# Checks the existing fedora_config.path to see if there is a solr.yml there
|
|
209
207
|
def check_fedora_path_for_solr
|
|
210
208
|
path = ::File.dirname(self.path) + "/solr.yml"
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
else
|
|
214
|
-
return nil
|
|
215
|
-
end
|
|
209
|
+
return unless ::File.file? path
|
|
210
|
+
path
|
|
216
211
|
end
|
|
217
212
|
|
|
218
213
|
def predicate_config
|
|
@@ -39,9 +39,9 @@ module ActiveFedora
|
|
|
39
39
|
Solrizer.set_field(solr_doc, 'system_create', c_time, :stored_sortable)
|
|
40
40
|
Solrizer.set_field(solr_doc, 'system_modified', m_time, :stored_sortable)
|
|
41
41
|
Solrizer.set_field(solr_doc, 'active_fedora_model', object.class.inspect, :stored_sortable)
|
|
42
|
-
solr_doc
|
|
43
|
-
solr_doc
|
|
44
|
-
solr_doc
|
|
42
|
+
solr_doc[QueryResultBuilder::HAS_MODEL_SOLR_FIELD] = object.has_model
|
|
43
|
+
solr_doc[SOLR_DOCUMENT_ID.to_sym] = object.id
|
|
44
|
+
solr_doc[self.class.profile_solr_name] = profile_service.new(object).export
|
|
45
45
|
object.declared_attached_files.each do |name, file|
|
|
46
46
|
solr_doc.merge! file.to_solr(solr_doc, name: name.to_s)
|
|
47
47
|
end
|
data/lib/active_fedora/model.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
SOLR_DOCUMENT_ID = "id" unless defined?(SOLR_DOCUMENT_ID)
|
|
1
|
+
SOLR_DOCUMENT_ID = "id".freeze unless defined?(SOLR_DOCUMENT_ID)
|
|
2
2
|
|
|
3
3
|
module ActiveFedora
|
|
4
4
|
# = ActiveFedora
|
|
@@ -17,14 +17,13 @@ module ActiveFedora
|
|
|
17
17
|
ActiveFedora.class_from_string(model_value)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
end
|
|
20
|
+
def self.class_exists?(class_name)
|
|
21
|
+
return false if class_name.empty?
|
|
22
|
+
klass = class_name.constantize
|
|
23
|
+
return klass.is_a?(Class)
|
|
24
|
+
rescue NameError
|
|
25
|
+
return false
|
|
26
|
+
end
|
|
27
|
+
private_class_method :class_exists?
|
|
29
28
|
end
|
|
30
29
|
end
|
|
@@ -113,7 +113,7 @@ module ActiveFedora
|
|
|
113
113
|
|
|
114
114
|
# Attribute hash keys that should not be assigned as normal attributes.
|
|
115
115
|
# These hash keys are nested attributes implementation details.
|
|
116
|
-
UNASSIGNABLE_KEYS = %w( id _destroy )
|
|
116
|
+
UNASSIGNABLE_KEYS = %w( id _destroy ).freeze
|
|
117
117
|
|
|
118
118
|
def assign_nested_attributes_for_collection_association(association_name, attributes_collection)
|
|
119
119
|
options = nested_attributes_options[association_name]
|
|
@@ -34,11 +34,11 @@ module ActiveFedora
|
|
|
34
34
|
term.values.each do |v|
|
|
35
35
|
Array(term.options[:index]).each do |index_as|
|
|
36
36
|
solr_doc[index_as] ||= []
|
|
37
|
-
if v.is_a? Nokogiri::XML::Node
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
solr_doc[index_as] << if v.is_a? Nokogiri::XML::Node
|
|
38
|
+
v.text
|
|
39
|
+
else
|
|
40
|
+
v
|
|
41
|
+
end
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -13,8 +13,8 @@ module ActiveFedora
|
|
|
13
13
|
include OM::XML::TerminologyBasedSolrizer # this adds support for calling .to_solr
|
|
14
14
|
include Datastreams::NokogiriDatastreams
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
alias om_term_values term_values unless method_defined?(:om_term_values)
|
|
17
|
+
alias om_update_values update_values unless method_defined?(:om_update_values)
|
|
18
18
|
|
|
19
19
|
def default_mime_type
|
|
20
20
|
'text/xml'
|
|
@@ -37,7 +37,7 @@ module ActiveFedora
|
|
|
37
37
|
save
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
alias update_attributes update
|
|
41
41
|
|
|
42
42
|
# Deletes an object from Fedora and deletes the indexed record from Solr.
|
|
43
43
|
# Delete does not run any callbacks, so consider using _destroy_ instead.
|
|
@@ -186,7 +186,7 @@ module ActiveFedora
|
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
def base_path_for_resource
|
|
189
|
-
init_root_path if
|
|
189
|
+
init_root_path if has_uri_prefix?
|
|
190
190
|
root_resource_path
|
|
191
191
|
end
|
|
192
192
|
|
|
@@ -157,6 +157,12 @@ module ActiveFedora::RDF
|
|
|
157
157
|
comment: %(indicates the owner of an object).freeze,
|
|
158
158
|
label: "ownerId".freeze,
|
|
159
159
|
type: "rdf:Property".freeze
|
|
160
|
+
property :PID,
|
|
161
|
+
comment: %(the Fedora 3 PID for an object).freeze,
|
|
162
|
+
label: "PID".freeze,
|
|
163
|
+
domain: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
|
|
164
|
+
range: "xsd:string".freeze,
|
|
165
|
+
type: "rdf:Property".freeze
|
|
160
166
|
property :state,
|
|
161
167
|
comment: %(indicates the state of the object or datastream).freeze,
|
|
162
168
|
label: "state".freeze,
|
|
@@ -10,7 +10,7 @@ module ActiveFedora
|
|
|
10
10
|
module Persistence
|
|
11
11
|
extend ActiveSupport::Concern
|
|
12
12
|
|
|
13
|
-
BASE_URI = 'info:fedora/'
|
|
13
|
+
BASE_URI = 'info:fedora/'.freeze
|
|
14
14
|
|
|
15
15
|
included do
|
|
16
16
|
configure base_uri: BASE_URI unless base_uri
|
|
@@ -25,7 +25,7 @@ module ActiveFedora
|
|
|
25
25
|
|
|
26
26
|
# Overrides ActiveTriples::Resource
|
|
27
27
|
def persisted?
|
|
28
|
-
@persisted ||=
|
|
28
|
+
@persisted ||= !datastream.new_record?
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -217,7 +217,7 @@ module ActiveFedora
|
|
|
217
217
|
[self]
|
|
218
218
|
end
|
|
219
219
|
|
|
220
|
-
|
|
220
|
+
alias source_macro macro
|
|
221
221
|
|
|
222
222
|
def has_inverse?
|
|
223
223
|
inverse_name
|
|
@@ -265,8 +265,8 @@ module ActiveFedora
|
|
|
265
265
|
end
|
|
266
266
|
end
|
|
267
267
|
|
|
268
|
-
VALID_AUTOMATIC_INVERSE_MACROS = [:has_many, :has_and_belongs_to_many, :belongs_to]
|
|
269
|
-
INVALID_AUTOMATIC_INVERSE_OPTIONS = [:conditions, :through, :polymorphic, :foreign_key]
|
|
268
|
+
VALID_AUTOMATIC_INVERSE_MACROS = [:has_many, :has_and_belongs_to_many, :belongs_to].freeze
|
|
269
|
+
INVALID_AUTOMATIC_INVERSE_OPTIONS = [:conditions, :through, :polymorphic, :foreign_key].freeze
|
|
270
270
|
|
|
271
271
|
private
|
|
272
272
|
|
|
@@ -5,7 +5,7 @@ module ActiveFedora
|
|
|
5
5
|
|
|
6
6
|
attr_reader :loaded
|
|
7
7
|
attr_accessor :default_scoped
|
|
8
|
-
|
|
8
|
+
alias loaded? loaded
|
|
9
9
|
|
|
10
10
|
attr_accessor :values, :klass
|
|
11
11
|
|
|
@@ -129,7 +129,7 @@ module ActiveFedora
|
|
|
129
129
|
|
|
130
130
|
private
|
|
131
131
|
|
|
132
|
-
VALID_FIND_OPTIONS = [:order, :limit, :start, :conditions, :cast]
|
|
132
|
+
VALID_FIND_OPTIONS = [:order, :limit, :start, :conditions, :cast].freeze
|
|
133
133
|
|
|
134
134
|
def apply_finder_options(options)
|
|
135
135
|
relation = clone
|
|
@@ -2,114 +2,116 @@ module ActiveFedora
|
|
|
2
2
|
module SolrQueryBuilder
|
|
3
3
|
PARSED_SUFFIX = '_tesim'.freeze
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
class << self
|
|
6
|
+
# Construct a solr query for a list of ids
|
|
7
|
+
# This is used to get a solr response based on the list of ids in an object's RELS-EXT relationhsips
|
|
8
|
+
# If the id_array is empty, defaults to a query of "id:NEVER_USE_THIS_ID", which will return an empty solr response
|
|
9
|
+
# @param [Array] id_array the ids that you want included in the query
|
|
10
|
+
def construct_query_for_ids(id_array)
|
|
11
|
+
ids = id_array.reject(&:blank?)
|
|
12
|
+
return "id:NEVER_USE_THIS_ID" if ids.empty?
|
|
13
|
+
"{!terms f=#{SOLR_DOCUMENT_ID}}#{ids.join(',')}"
|
|
14
|
+
end
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
# Create a raw query clause suitable for sending to solr as an fq element
|
|
17
|
+
# @param [String] key
|
|
18
|
+
# @param [String] value
|
|
19
|
+
def raw_query(key, value)
|
|
20
|
+
"_query_:\"{!raw f=#{key}}#{value.gsub('"', '\"')}\""
|
|
21
|
+
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
def solr_name(*args)
|
|
24
|
+
Solrizer.default_field_mapper.solr_name(*args)
|
|
25
|
+
end
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
# Create a query with a clause for each key, value
|
|
28
|
+
# @param [Hash, Array<Array<String>>] field_pairs key is the predicate, value is the target_uri
|
|
29
|
+
# @param [String] join_with ('AND') the value we're joining the clauses with
|
|
30
|
+
# @example
|
|
31
|
+
# construct_query_for_rel [[:has_model, "info:fedora/afmodel:ComplexCollection"], [:has_model, "info:fedora/afmodel:ActiveFedora_Base"]], 'OR'
|
|
32
|
+
# # => _query_:"{!raw f=has_model_ssim}info:fedora/afmodel:ComplexCollection" OR _query_:"{!raw f=has_model_ssim}info:fedora/afmodel:ActiveFedora_Base"
|
|
33
|
+
#
|
|
34
|
+
# construct_query_for_rel [[Book.reflect_on_association(:library), "foo/bar/baz"]]
|
|
35
|
+
def construct_query_for_rel(field_pairs, join_with = ' AND ')
|
|
36
|
+
field_pairs = field_pairs.to_a if field_pairs.is_a? Hash
|
|
37
|
+
construct_query(property_values_to_solr(field_pairs), join_with)
|
|
38
|
+
end
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
# Construct a solr query from a list of pairs (e.g. [field name, values])
|
|
41
|
+
# @param [Array<Array>] field_pairs a list of pairs of property name and values
|
|
42
|
+
# @param [String] join_with ('AND') the value we're joining the clauses with
|
|
43
|
+
# @return [String] a solr query
|
|
44
|
+
# @example
|
|
45
|
+
# construct_query([['library_id_ssim', '123'], ['owner_ssim', 'Fred']])
|
|
46
|
+
# # => "_query_:\"{!raw f=library_id_ssim}123\" AND _query_:\"{!raw f=owner_ssim}Fred\""
|
|
47
|
+
def construct_query(field_pairs, join_with = ' AND ')
|
|
48
|
+
pairs_to_clauses(field_pairs).join(join_with)
|
|
49
|
+
end
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
private
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
# @param [Array<Array>] pairs a list of (key, value) pairs. The value itself may
|
|
54
|
+
# @return [Array] a list of solr clauses
|
|
55
|
+
def pairs_to_clauses(pairs)
|
|
56
|
+
pairs.flat_map do |field, value|
|
|
57
|
+
condition_to_clauses(field, value)
|
|
58
|
+
end
|
|
57
59
|
end
|
|
58
|
-
end
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
# @param [String] field
|
|
62
|
+
# @param [String, Array<String>] values
|
|
63
|
+
# @return [Array<String>]
|
|
64
|
+
def condition_to_clauses(field, values)
|
|
65
|
+
values = Array(values)
|
|
66
|
+
values << nil if values.empty?
|
|
67
|
+
values.map do |value|
|
|
68
|
+
if value.present?
|
|
69
|
+
if parsed?(field)
|
|
70
|
+
# If you do a raw query on a parsed field you won't get the matches you expect.
|
|
71
|
+
"#{field}:#{solr_escape(value)}"
|
|
72
|
+
else
|
|
73
|
+
raw_query(field, value)
|
|
74
|
+
end
|
|
71
75
|
else
|
|
72
|
-
|
|
76
|
+
# Check that the field is not present. In SQL: "WHERE field IS NULL"
|
|
77
|
+
"-#{field}:[* TO *]"
|
|
73
78
|
end
|
|
74
|
-
else
|
|
75
|
-
# Check that the field is not present. In SQL: "WHERE field IS NULL"
|
|
76
|
-
"-#{field}:[* TO *]"
|
|
77
79
|
end
|
|
78
80
|
end
|
|
79
|
-
end
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
def parsed?(field)
|
|
83
|
+
field.end_with?(PARSED_SUFFIX)
|
|
84
|
+
end
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
# Adds esaping for spaces which are not handled by RSolr.solr_escape
|
|
87
|
+
# See rsolr/rsolr#101
|
|
88
|
+
def solr_escape(terms)
|
|
89
|
+
RSolr.solr_escape(terms).gsub(/\s+/, "\\ ")
|
|
90
|
+
end
|
|
90
91
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
# Given a list of pairs (e.g. [field name, values]), convert the field names
|
|
93
|
+
# to solr names
|
|
94
|
+
# @param [Array<Array>] pairs a list of pairs of property name and values
|
|
95
|
+
# @return [Hash] map of solr fields to values
|
|
96
|
+
# @example
|
|
97
|
+
# property_values_to_solr([['library_id', '123'], ['owner', 'Fred']])
|
|
98
|
+
# # => [['library_id_ssim', '123'], ['owner_ssim', 'Fred']]
|
|
99
|
+
def property_values_to_solr(pairs)
|
|
100
|
+
pairs.each_with_object([]) do |(property, value), list|
|
|
101
|
+
list << [solr_field(property), value]
|
|
102
|
+
end
|
|
101
103
|
end
|
|
102
|
-
end
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
105
|
+
# @param [String, ActiveFedora::Relation] field
|
|
106
|
+
# @return [String] the corresponding solr field for the string
|
|
107
|
+
def solr_field(field)
|
|
108
|
+
case field
|
|
109
|
+
when ActiveFedora::Reflection::AssociationReflection
|
|
110
|
+
field.solr_key
|
|
111
|
+
else
|
|
112
|
+
solr_name(field, :symbol)
|
|
113
|
+
end
|
|
112
114
|
end
|
|
113
|
-
|
|
115
|
+
end
|
|
114
116
|
end
|
|
115
117
|
end
|
|
@@ -10,7 +10,7 @@ module ActiveFedora
|
|
|
10
10
|
def initialize(host, args)
|
|
11
11
|
host = 'http://localhost:8080/solr' unless host
|
|
12
12
|
args = { read_timeout: 120, open_timeout: 120 }.merge(args.dup)
|
|
13
|
-
args
|
|
13
|
+
args[:url] = host
|
|
14
14
|
@conn = RSolr.connect args
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -71,7 +71,7 @@ module ActiveFedora
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def construct_query_for_pids(id_array)
|
|
74
|
-
Deprecation.warn SolrService, "construct_query_for_pids is deprecated
|
|
74
|
+
Deprecation.warn SolrService, "SolrService.construct_query_for_pids is deprecated. Use SolrQueryBuilder.construct_query_for_ids instead. This will be removed in active-fedora 10.0"
|
|
75
75
|
SolrQueryBuilder.construct_query_for_ids(id_array)
|
|
76
76
|
end
|
|
77
77
|
|
|
@@ -15,7 +15,7 @@ module ActiveFedora
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def model_type
|
|
18
|
-
if
|
|
18
|
+
if respond_to?(:metadata)
|
|
19
19
|
metadata.ldp_source.graph.query(predicate: ::RDF.type).objects
|
|
20
20
|
else
|
|
21
21
|
resource.query(subject: resource.rdf_subject, predicate: ::RDF.type).objects
|
|
@@ -50,23 +50,17 @@ module ActiveFedora
|
|
|
50
50
|
resp = ActiveFedora.fedora.connection.patch(versions.with_label(label).uri, nil)
|
|
51
51
|
@versions = nil
|
|
52
52
|
reload
|
|
53
|
-
refresh_attributes if
|
|
53
|
+
refresh_attributes if respond_to?("refresh_attributes")
|
|
54
54
|
resp.success?
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
private
|
|
58
58
|
|
|
59
59
|
def versions_request
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
if !resp.success?
|
|
66
|
-
raise "unexpected return value #{resp.status} for when getting datastream content at #{uri}\n\t#{resp.body}"
|
|
67
|
-
elsif resp.headers['content-type'] != 'text/turtle'
|
|
68
|
-
raise "unknown response format. got '#{resp.headers['content-type']}', but was expecting 'text/turtle'"
|
|
69
|
-
end
|
|
60
|
+
return '' unless has_versions?
|
|
61
|
+
resp = ActiveFedora.fedora.connection.get(versions_uri)
|
|
62
|
+
raise ActiveFedoraError, status_message(resp) unless resp.success?
|
|
63
|
+
raise ActiveFedoraError, bad_headers(resp) unless resp.headers['content-type'] == 'text/turtle'
|
|
70
64
|
resp.body
|
|
71
65
|
end
|
|
72
66
|
|
|
@@ -81,5 +75,13 @@ module ActiveFedora
|
|
|
81
75
|
"version" + (versions.all.count + 1).to_s
|
|
82
76
|
end
|
|
83
77
|
end
|
|
78
|
+
|
|
79
|
+
def status_message(response)
|
|
80
|
+
"Unexpected return value #{response.status} when retrieving datastream content at #{uri}\n\t#{response.body}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def bad_headers(response)
|
|
84
|
+
"Unknown response format. Got '#{response.headers['content-type']}', but was expecting 'text/turtle'"
|
|
85
|
+
end
|
|
84
86
|
end
|
|
85
87
|
end
|
|
@@ -3,7 +3,7 @@ module ActiveFedora
|
|
|
3
3
|
def all(opts = {})
|
|
4
4
|
versions = fedora_versions
|
|
5
5
|
unless opts[:include_auto_save]
|
|
6
|
-
versions.reject! { |version| version.label
|
|
6
|
+
versions.reject! { |version| version.label =~ /auto/ }
|
|
7
7
|
end
|
|
8
8
|
versions.sort_by { |version| DateTime.parse(version.created) }
|
|
9
9
|
rescue ArgumentError, NoMethodError
|
|
@@ -140,7 +140,7 @@ describe ActiveFedora::Base do
|
|
|
140
140
|
|
|
141
141
|
@dublin_core_sample_values.each_pair do |field, value|
|
|
142
142
|
next if [:format, :type].include?(field) # format and type are methods declared on Object
|
|
143
|
-
expect(dublin_core_ds.send(
|
|
143
|
+
expect(dublin_core_ds.send(field.to_s)).to eq [value]
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
@@ -40,7 +40,7 @@ describe ActiveFedora::Querying do
|
|
|
40
40
|
expect(result).to be_instance_of(Array)
|
|
41
41
|
# this test is meaningless if the array length is zero
|
|
42
42
|
expect(result.length > 0).to be true
|
|
43
|
-
expect(result).to all(be_an
|
|
43
|
+
expect(result).to all(be_an(ModelIntegrationSpec::Basic))
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
@@ -90,7 +90,7 @@ describe ActiveFedora::Querying do
|
|
|
90
90
|
first_condition = { ActiveFedora::SolrQueryBuilder.solr_name('bar', type: :string) => 'Peanuts' }
|
|
91
91
|
second_condition = "foo_tesim:bar"
|
|
92
92
|
where_values = ModelIntegrationSpec::Basic.where(first_condition)
|
|
93
|
-
|
|
93
|
+
.where(second_condition).where_values
|
|
94
94
|
expect(where_values).to eq ["bar_tesim:Peanuts",
|
|
95
95
|
"(foo_tesim:bar)"]
|
|
96
96
|
end
|
|
@@ -75,9 +75,7 @@ describe ActiveFedora::Versionable do
|
|
|
75
75
|
subject.create_version
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
it
|
|
79
|
-
expect(subject.reload.model_type).to include ::RDF::URI.new('http://www.jcp.org/jcr/mix/1.0versionable')
|
|
80
|
-
end
|
|
78
|
+
it { is_expected.to have_versions }
|
|
81
79
|
|
|
82
80
|
it "has one version" do
|
|
83
81
|
expect(subject.versions).to be_kind_of ActiveFedora::VersionsGraph
|
|
@@ -4,7 +4,7 @@ describe ActiveFedora::Attributes, ".new" do
|
|
|
4
4
|
before(:all) do
|
|
5
5
|
class ProtectedParams < ActiveSupport::HashWithIndifferentAccess
|
|
6
6
|
attr_accessor :permitted
|
|
7
|
-
|
|
7
|
+
alias permitted? permitted
|
|
8
8
|
|
|
9
9
|
def initialize(attributes)
|
|
10
10
|
super(attributes)
|
|
@@ -12,7 +12,7 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
|
12
12
|
property :based_near, predicate: ::RDF::FOAF.based_near
|
|
13
13
|
property :related_url, predicate: ::RDF::RDFS.seeAlso
|
|
14
14
|
end
|
|
15
|
-
@subject = MyDatastream.new(ActiveFedora::Base.id_to_uri
|
|
15
|
+
@subject = MyDatastream.new(ActiveFedora::Base.id_to_uri('/test:1/descMetadata'))
|
|
16
16
|
@subject.content = File.new('spec/fixtures/mixed_rdf_descMetadata.nt').read
|
|
17
17
|
end
|
|
18
18
|
after do
|
|
@@ -19,7 +19,7 @@ describe ActiveFedora::Persistence do
|
|
|
19
19
|
context 'when a block is provided' do
|
|
20
20
|
it 'passes the block to initialize' do
|
|
21
21
|
expect_any_instance_of(ActiveFedora::Base).to receive(:save)
|
|
22
|
-
expect { |b| ActiveFedora::Base.create(&b) }.to yield_with_args(an_instance_of
|
|
22
|
+
expect { |b| ActiveFedora::Base.create(&b) }.to yield_with_args(an_instance_of(ActiveFedora::Base))
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -77,7 +77,7 @@ describe ActiveFedora::Predicates do
|
|
|
77
77
|
expect(described_class.predicate_lookup(:is_part_of)).to eq "isPartOf"
|
|
78
78
|
expect(described_class.predicate_lookup(:is_member_of)).to eq "isMemberOf"
|
|
79
79
|
expect(described_class.predicate_lookup("isPartOfCollection")).to eq "isPartOfCollection"
|
|
80
|
-
described_class.predicate_config[:predicate_mapping]
|
|
80
|
+
described_class.predicate_config[:predicate_mapping]["some_namespace"] = { has_foo: "hasFOO" }
|
|
81
81
|
expect(described_class.find_predicate(:has_foo)).to eq ["hasFOO", "some_namespace"]
|
|
82
82
|
expect(described_class.predicate_lookup(:has_foo, "some_namespace")).to eq "hasFOO"
|
|
83
83
|
expect(lambda { described_class.predicate_lookup(:has_foo) }).to raise_error ActiveFedora::UnregisteredPredicateError
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
4
|
-
DC_ELEMENTS = [:contributor, :coverage, :creator, :date, :description, :identifier, :language, :publisher, :relation, :rights, :source]
|
|
4
|
+
DC_ELEMENTS = [:contributor, :coverage, :creator, :date, :description, :identifier, :language, :publisher, :relation, :rights, :source].freeze
|
|
5
5
|
|
|
6
6
|
let(:sample_xml) do "<dc xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dcterms='http://purl.org/dc/terms/'>
|
|
7
7
|
<dcterms:type xsi:type='DCMITYPE'>sound</dcterms:type>
|
|
@@ -14,14 +14,14 @@ describe ActiveFedora do
|
|
|
14
14
|
|
|
15
15
|
describe "SOLR_DOCUMENT_ID" do
|
|
16
16
|
before(:all) do
|
|
17
|
-
SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
|
|
17
|
+
SOLR_DOCUMENT_ID = "MY_SAMPLE_ID".freeze
|
|
18
18
|
end
|
|
19
19
|
after(:all) do
|
|
20
|
-
SOLR_DOCUMENT_ID = "id"
|
|
20
|
+
SOLR_DOCUMENT_ID = "id".freeze
|
|
21
21
|
end
|
|
22
22
|
it "is used by ActiveFedora::Base.to_solr" do
|
|
23
23
|
allow(@test_object).to receive(:id).and_return('changeme:123')
|
|
24
|
-
SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
|
|
24
|
+
SOLR_DOCUMENT_ID = "MY_SAMPLE_ID".freeze
|
|
25
25
|
expect(@test_object.to_solr[SOLR_DOCUMENT_ID.to_sym]).to eq 'changeme:123'
|
|
26
26
|
expect(@test_object.to_solr[:id]).to be_nil
|
|
27
27
|
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: 9.7.
|
|
4
|
+
version: 9.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Zumwalt
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2016-01-29 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rsolr
|
|
@@ -638,7 +638,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
638
638
|
version: '0'
|
|
639
639
|
requirements: []
|
|
640
640
|
rubyforge_project:
|
|
641
|
-
rubygems_version: 2.
|
|
641
|
+
rubygems_version: 2.5.1
|
|
642
642
|
signing_key:
|
|
643
643
|
specification_version: 4
|
|
644
644
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|