active-fedora 11.5.0 → 11.5.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +43 -0
- data/Gemfile +2 -1
- data/active-fedora.gemspec +6 -5
- data/lib/active_fedora/associations/collection_proxy.rb +2 -0
- data/lib/active_fedora/attributes/property_builder.rb +1 -1
- data/lib/active_fedora/file.rb +1 -3
- data/lib/active_fedora/relation.rb +14 -0
- data/lib/active_fedora/relation/delegation.rb +2 -1
- data/lib/active_fedora/version.rb +1 -1
- data/lib/generators/active_fedora/config/solr/templates/solr/config/schema.xml +33 -34
- data/spec/integration/relation_spec.rb +39 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/attributes_spec.rb +6 -0
- data/spec/unit/file_spec.rb +17 -0
- metadata +34 -15
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 419ffa1beafe8db1f095d978f5bf68bbc6d9ca821e2f207df12de4eb82a78662
|
4
|
+
data.tar.gz: '018d793df4de36dd4a207ca6b70af4474d7996acf6a12ec7acac19e019e63ef0'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5cf6e6c08b021586dbb3a282d2bb91d128a5578e947725c365a239807814f50c4d87067f6e79e68215a9c1870a48b2d41021af51ba7ed65b9778118ce003663
|
7
|
+
data.tar.gz: 90883925eaaf6601f24cefa301cccb40529b0034100ccf51e92a4da2fbdfa017a405289fb620c5e1352aaa177d9c37c984f5b50dd72bc66ef4ff6024fe7eeb02
|
@@ -0,0 +1,43 @@
|
|
1
|
+
version: 2.1
|
2
|
+
orbs:
|
3
|
+
samvera: samvera/circleci-orb@0
|
4
|
+
jobs:
|
5
|
+
bundle_lint_test:
|
6
|
+
parameters:
|
7
|
+
ruby_version:
|
8
|
+
type: string
|
9
|
+
bundler_version:
|
10
|
+
type: string
|
11
|
+
default: 1.17.3
|
12
|
+
rails_version:
|
13
|
+
type: string
|
14
|
+
solr_config_path:
|
15
|
+
type: string
|
16
|
+
default: lib/generators/active_fedora/config/solr/templates/solr/config
|
17
|
+
executor:
|
18
|
+
name: 'samvera/ruby_fcrepo_solr'
|
19
|
+
ruby_version: << parameters.ruby_version >>
|
20
|
+
environment:
|
21
|
+
RAILS_VERSION: << parameters.rails_version >>
|
22
|
+
steps:
|
23
|
+
- samvera/cached_checkout
|
24
|
+
|
25
|
+
- samvera/bundle_for_gem:
|
26
|
+
ruby_version: << parameters.ruby_version >>
|
27
|
+
bundler_version: << parameters.bundler_version >>
|
28
|
+
project: 'active-fedora'
|
29
|
+
|
30
|
+
- samvera/install_solr_core:
|
31
|
+
solr_config_path: << parameters.solr_config_path >>
|
32
|
+
|
33
|
+
- samvera/rubocop
|
34
|
+
|
35
|
+
- samvera/parallel_rspec
|
36
|
+
|
37
|
+
workflows:
|
38
|
+
ci:
|
39
|
+
jobs:
|
40
|
+
- bundle_lint_test:
|
41
|
+
name: ruby2-3_rails4-2
|
42
|
+
ruby_version: 2.4.9
|
43
|
+
rails_version: 4.2.8
|
data/Gemfile
CHANGED
@@ -4,7 +4,7 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gemspec path: File.expand_path('..', __FILE__)
|
6
6
|
|
7
|
-
gem 'byebug' unless ENV['
|
7
|
+
gem 'byebug' unless ENV['CI']
|
8
8
|
gem 'pry-byebug' unless ENV['CI']
|
9
9
|
|
10
10
|
gem 'activemodel', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
|
@@ -13,6 +13,7 @@ gem 'rsolr', ENV['RSOLR_VERSION'] if ENV['RSOLR_VERSION']
|
|
13
13
|
group :test do
|
14
14
|
gem 'simplecov', require: false
|
15
15
|
gem 'coveralls', require: false
|
16
|
+
gem 'rspec_junit_formatter'
|
16
17
|
end
|
17
18
|
|
18
19
|
gem 'jruby-openssl', platform: :jruby
|
data/active-fedora.gemspec
CHANGED
@@ -16,20 +16,21 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency 'rsolr', '>= 1.1.2', '< 3'
|
18
18
|
s.add_dependency 'solrizer', '>= 3.4', '< 5'
|
19
|
-
s.add_dependency "activesupport", '>= 4.2.4', '<
|
20
|
-
s.add_dependency "activemodel", '>= 4.2', '<
|
21
|
-
s.add_dependency "active-triples", '
|
19
|
+
s.add_dependency "activesupport", '>= 4.2.4', '< 5.2'
|
20
|
+
s.add_dependency "activemodel", '>= 4.2', '< 5.2'
|
21
|
+
s.add_dependency "active-triples", '>= 0.11.0', '< 2.0.0'
|
22
22
|
s.add_dependency "deprecation"
|
23
23
|
s.add_dependency "ldp", '~> 0.7.0'
|
24
|
+
s.add_dependency 'rdf-vocab', '< 3.1.5'
|
24
25
|
s.add_dependency "ruby-progressbar", '~> 1.0'
|
25
26
|
s.add_dependency 'faraday', '~> 0.12.1'
|
26
27
|
s.add_dependency 'faraday-encoding', '0.0.4'
|
27
28
|
|
28
|
-
s.add_development_dependency "rails"
|
29
|
+
s.add_development_dependency "rails", ">= 4.2"
|
29
30
|
s.add_development_dependency "rdoc"
|
30
31
|
s.add_development_dependency "yard"
|
31
32
|
s.add_development_dependency "rake"
|
32
|
-
s.add_development_dependency "solr_wrapper", "~>
|
33
|
+
s.add_development_dependency "solr_wrapper", "~> 2.0"
|
33
34
|
s.add_development_dependency 'fcrepo_wrapper', '~> 0.2'
|
34
35
|
s.add_development_dependency "rspec", "~> 3.0"
|
35
36
|
s.add_development_dependency "rspec-its"
|
@@ -45,7 +45,7 @@ module ActiveFedora::Attributes
|
|
45
45
|
def self.define_singular_writers(mixin, name)
|
46
46
|
mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
47
47
|
def #{name}=(value)
|
48
|
-
if value.respond_to?(:each)
|
48
|
+
if value.respond_to?(:each) && !(value.respond_to?(:term?) && value.term?)
|
49
49
|
raise ArgumentError, "You attempted to set the property `#{name}' of \#{id} to an enumerable value. However, this property is declared as singular."
|
50
50
|
end
|
51
51
|
set_value(:#{name}, value)
|
data/lib/active_fedora/file.rb
CHANGED
@@ -196,9 +196,7 @@ module ActiveFedora
|
|
196
196
|
end
|
197
197
|
|
198
198
|
def local_or_remote_content(ensure_fetch = true)
|
199
|
-
|
200
|
-
|
201
|
-
@content ||= ensure_fetch ? remote_content : @ds_content
|
199
|
+
@content ||= ensure_fetch ? remote_content : @ds_content unless new_record?
|
202
200
|
@content.rewind if behaves_like_io?(@content)
|
203
201
|
@content
|
204
202
|
end
|
@@ -144,6 +144,20 @@ module ActiveFedora
|
|
144
144
|
@scope_for_create ||= where_values_hash.merge(create_with_value)
|
145
145
|
end
|
146
146
|
|
147
|
+
def each
|
148
|
+
if loaded?
|
149
|
+
@records.each { |item| yield item } if block_given?
|
150
|
+
@records.to_enum
|
151
|
+
else
|
152
|
+
find_each(where_values) { |item| yield item } if block_given?
|
153
|
+
enum_for(:find_each, where_values)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def empty?
|
158
|
+
!any?
|
159
|
+
end
|
160
|
+
|
147
161
|
private
|
148
162
|
|
149
163
|
VALID_FIND_OPTIONS = [:order, :limit, :start, :conditions, :cast].freeze
|
@@ -13,7 +13,8 @@ module ActiveFedora
|
|
13
13
|
:keep_if, :pop, :shift, :delete_at, :select!
|
14
14
|
].to_set
|
15
15
|
|
16
|
-
delegate :length, :
|
16
|
+
delegate :length, :map, :to_ary, to: :to_a
|
17
|
+
delegate :any?, :all?, :collect, :include?, to: :each
|
17
18
|
|
18
19
|
protected
|
19
20
|
|
@@ -59,32 +59,32 @@
|
|
59
59
|
|
60
60
|
<types>
|
61
61
|
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
|
62
|
-
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
62
|
+
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
63
63
|
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
|
64
|
-
|
64
|
+
|
65
65
|
<!-- Default numeric field types. -->
|
66
66
|
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
|
67
67
|
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
|
68
68
|
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
|
69
69
|
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
|
70
|
-
|
70
|
+
|
71
71
|
<!-- trie numeric field types for faster range queries -->
|
72
72
|
<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
|
73
73
|
<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
|
74
74
|
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
|
75
75
|
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
|
76
|
-
|
76
|
+
|
77
77
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
78
78
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
|
79
79
|
-->
|
80
80
|
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
|
81
81
|
<!-- A Trie based date field for faster date range queries and date faceting. -->
|
82
82
|
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
|
83
|
-
|
84
|
-
|
83
|
+
|
84
|
+
|
85
85
|
<!-- This point type indexes the coordinates as separate fields (subFields)
|
86
86
|
If subFieldType is defined, it references a type, and a dynamic field
|
87
|
-
definition is created matching *___<typename>. Alternately, if
|
87
|
+
definition is created matching *___<typename>. Alternately, if
|
88
88
|
subFieldSuffix is defined, that is used to create the subFields.
|
89
89
|
Example: if subFieldType="double", then the coordinates would be
|
90
90
|
indexed in fields myloc_0___double,myloc_1___double.
|
@@ -94,17 +94,17 @@
|
|
94
94
|
users normally should not need to know about them.
|
95
95
|
-->
|
96
96
|
<fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
|
97
|
-
|
97
|
+
|
98
98
|
<!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
|
99
99
|
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
|
100
|
-
|
100
|
+
|
101
101
|
<!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
102
102
|
For more information about this and other Spatial fields new to Solr 4, see:
|
103
103
|
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
|
104
104
|
-->
|
105
105
|
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
|
106
106
|
geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
|
107
|
-
|
107
|
+
|
108
108
|
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
109
109
|
<analyzer>
|
110
110
|
<tokenizer class="solr.ICUTokenizerFactory"/>
|
@@ -112,7 +112,7 @@
|
|
112
112
|
<filter class="solr.TrimFilterFactory"/>
|
113
113
|
</analyzer>
|
114
114
|
</fieldType>
|
115
|
-
|
115
|
+
|
116
116
|
<!-- A text field that only splits on whitespace for exact matching of words -->
|
117
117
|
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
118
118
|
<analyzer>
|
@@ -120,7 +120,7 @@
|
|
120
120
|
<filter class="solr.TrimFilterFactory"/>
|
121
121
|
</analyzer>
|
122
122
|
</fieldType>
|
123
|
-
|
123
|
+
|
124
124
|
<!-- single token analyzed text, for sorting. Punctuation is significant. -->
|
125
125
|
<fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
126
126
|
<analyzer>
|
@@ -129,7 +129,7 @@
|
|
129
129
|
<filter class="solr.TrimFilterFactory" />
|
130
130
|
</analyzer>
|
131
131
|
</fieldtype>
|
132
|
-
|
132
|
+
|
133
133
|
<!-- A text field with defaults appropriate for English -->
|
134
134
|
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
|
135
135
|
<analyzer>
|
@@ -144,7 +144,7 @@
|
|
144
144
|
<filter class="solr.TrimFilterFactory"/>
|
145
145
|
</analyzer>
|
146
146
|
</fieldType>
|
147
|
-
|
147
|
+
|
148
148
|
<!-- queries for paths match documents at that path, or in descendent paths -->
|
149
149
|
<fieldType name="descendent_path" class="solr.TextField">
|
150
150
|
<analyzer type="index">
|
@@ -154,7 +154,7 @@
|
|
154
154
|
<tokenizer class="solr.KeywordTokenizerFactory" />
|
155
155
|
</analyzer>
|
156
156
|
</fieldType>
|
157
|
-
|
157
|
+
|
158
158
|
<!-- queries for paths match documents at that path, or in ancestor paths -->
|
159
159
|
<fieldType name="ancestor_path" class="solr.TextField">
|
160
160
|
<analyzer type="index">
|
@@ -168,7 +168,6 @@
|
|
168
168
|
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
|
169
169
|
<analyzer>
|
170
170
|
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
171
|
-
<filter class="solr.StandardFilterFactory"/>
|
172
171
|
<filter class="solr.LowerCaseFilterFactory"/>
|
173
172
|
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
174
173
|
</analyzer>
|
@@ -179,12 +178,12 @@
|
|
179
178
|
<fields>
|
180
179
|
<!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
|
181
180
|
or Solr won't start. _version_ and update log are required for SolrCloud
|
182
|
-
-->
|
181
|
+
-->
|
183
182
|
<field name="_version_" type="long" indexed="true" stored="true"/>
|
184
|
-
|
183
|
+
|
185
184
|
<field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
|
186
185
|
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
187
|
-
|
186
|
+
|
188
187
|
<field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
189
188
|
<field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
190
189
|
|
@@ -201,7 +200,7 @@
|
|
201
200
|
<dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
202
201
|
<dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
203
202
|
<dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
204
|
-
|
203
|
+
|
205
204
|
<!-- English text (_te...) -->
|
206
205
|
<dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
|
207
206
|
<dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
|
@@ -213,7 +212,7 @@
|
|
213
212
|
<dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
214
213
|
<dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
215
214
|
<dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
216
|
-
|
215
|
+
|
217
216
|
<!-- string (_s...) -->
|
218
217
|
<dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
|
219
218
|
<dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
|
@@ -222,7 +221,7 @@
|
|
222
221
|
<dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
|
223
222
|
<dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
|
224
223
|
<dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
|
225
|
-
|
224
|
+
|
226
225
|
<!-- integer (_i...) -->
|
227
226
|
<dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
|
228
227
|
<dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
|
@@ -230,7 +229,7 @@
|
|
230
229
|
<dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
|
231
230
|
<dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
|
232
231
|
<dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
|
233
|
-
|
232
|
+
|
234
233
|
<!-- trie integer (_it...) (for faster range queries) -->
|
235
234
|
<dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
|
236
235
|
<dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
|
@@ -238,7 +237,7 @@
|
|
238
237
|
<dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
|
239
238
|
<dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
|
240
239
|
<dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
|
241
|
-
|
240
|
+
|
242
241
|
<!-- date (_dt...) -->
|
243
242
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
244
243
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
|
@@ -248,7 +247,7 @@
|
|
248
247
|
<dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
|
249
248
|
<dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
|
250
249
|
<dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
|
251
|
-
|
250
|
+
|
252
251
|
<!-- trie date (_dtt...) (for faster range queries) -->
|
253
252
|
<dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
|
254
253
|
<dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
|
@@ -256,7 +255,7 @@
|
|
256
255
|
<dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
|
257
256
|
<dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
|
258
257
|
<dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
|
259
|
-
|
258
|
+
|
260
259
|
<!-- long (_l...) -->
|
261
260
|
<dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
|
262
261
|
<dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
|
@@ -264,7 +263,7 @@
|
|
264
263
|
<dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
|
265
264
|
<dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
|
266
265
|
<dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
|
267
|
-
|
266
|
+
|
268
267
|
<!-- trie long (_lt...) (for faster range queries) -->
|
269
268
|
<dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
|
270
269
|
<dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
|
@@ -272,7 +271,7 @@
|
|
272
271
|
<dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
|
273
272
|
<dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
|
274
273
|
<dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
|
275
|
-
|
274
|
+
|
276
275
|
<!-- double (_db...) -->
|
277
276
|
<dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
|
278
277
|
<dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
|
@@ -280,7 +279,7 @@
|
|
280
279
|
<dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
|
281
280
|
<dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
|
282
281
|
<dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
|
283
|
-
|
282
|
+
|
284
283
|
<!-- trie double (_dbt...) (for faster range queries) -->
|
285
284
|
<dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
|
286
285
|
<dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
|
@@ -288,7 +287,7 @@
|
|
288
287
|
<dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
|
289
288
|
<dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
290
289
|
<dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
|
291
|
-
|
290
|
+
|
292
291
|
<!-- float (_f...) -->
|
293
292
|
<dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
|
294
293
|
<dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
|
@@ -296,7 +295,7 @@
|
|
296
295
|
<dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
|
297
296
|
<dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
|
298
297
|
<dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
|
299
|
-
|
298
|
+
|
300
299
|
<!-- trie float (_ft...) (for faster range queries) -->
|
301
300
|
<dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
|
302
301
|
<dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
|
@@ -304,12 +303,12 @@
|
|
304
303
|
<dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
|
305
304
|
<dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
|
306
305
|
<dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
|
307
|
-
|
306
|
+
|
308
307
|
<!-- boolean (_b...) -->
|
309
308
|
<dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
|
310
309
|
<dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
|
311
310
|
<dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
|
312
|
-
|
311
|
+
|
313
312
|
<!-- Type used to index the lat and lon components for the "location" FieldType -->
|
314
313
|
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
|
315
314
|
|
@@ -329,7 +328,7 @@
|
|
329
328
|
|
330
329
|
</fields>
|
331
330
|
|
332
|
-
<!-- Field to use to determine and enforce document uniqueness.
|
331
|
+
<!-- Field to use to determine and enforce document uniqueness.
|
333
332
|
Unless this field is marked with required="false", it will be a required field
|
334
333
|
-->
|
335
334
|
<uniqueKey>id</uniqueKey>
|
@@ -22,6 +22,10 @@ describe ActiveFedora::Base do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it { is_expected.to respond_to(:each_with_index) }
|
25
|
+
it { expect(libraries.any?).to eq false }
|
26
|
+
it { is_expected.to be_blank }
|
27
|
+
it { is_expected.to be_empty }
|
28
|
+
it { is_expected.not_to be_present }
|
25
29
|
|
26
30
|
context "when some records exist" do
|
27
31
|
before do
|
@@ -39,7 +43,41 @@ describe ActiveFedora::Base do
|
|
39
43
|
|
40
44
|
it "does not reload" do
|
41
45
|
expect_any_instance_of(ActiveFedora::Relation).to_not receive :find_each
|
42
|
-
libraries
|
46
|
+
libraries.each(&:id)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it { expect(libraries.any?).to eq true }
|
51
|
+
it { is_expected.not_to be_blank }
|
52
|
+
it { is_expected.not_to be_empty }
|
53
|
+
it { is_expected.to be_present }
|
54
|
+
|
55
|
+
describe '#each' do
|
56
|
+
before { Book.create }
|
57
|
+
|
58
|
+
it 'returns an enumerator' do
|
59
|
+
expect(libraries.each).to be_a Enumerator
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'yields the items' do
|
63
|
+
expect { |b| libraries.each(&b) }
|
64
|
+
.to yield_successive_args(*Library.all.to_a)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'when called from Base yields all items' do
|
68
|
+
expect { |b| described_class.all.each(&b) }
|
69
|
+
.to yield_successive_args(*(Library.all.to_a + Book.all.to_a))
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when cached' do
|
73
|
+
it 'returns an enumerator' do
|
74
|
+
expect(libraries.each).to be_a Enumerator
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'yields the items' do
|
78
|
+
expect { |b| libraries.each(&b) }
|
79
|
+
.to yield_successive_args(*Library.all.to_a)
|
80
|
+
end
|
43
81
|
end
|
44
82
|
end
|
45
83
|
|
data/spec/spec_helper.rb
CHANGED
@@ -13,7 +13,7 @@ require 'rspec'
|
|
13
13
|
require 'rspec/its'
|
14
14
|
require 'equivalent-xml/rspec_matchers'
|
15
15
|
require 'logger'
|
16
|
-
require 'pry' unless ENV['
|
16
|
+
require 'pry' unless ENV['CI']
|
17
17
|
|
18
18
|
ActiveFedora::Base.logger = Logger.new(STDERR)
|
19
19
|
ActiveFedora::Base.logger.level = Logger::WARN
|
@@ -133,11 +133,17 @@ describe ActiveFedora::Base do
|
|
133
133
|
expect { history.title = nil }.not_to raise_error
|
134
134
|
end
|
135
135
|
|
136
|
+
it "allow setting to multiple properties with unintended legacy behavior" do
|
137
|
+
expect { history.title = '' }.not_to raise_error
|
138
|
+
expect { history.title = ActiveTriples::Resource.new }.not_to raise_error
|
139
|
+
end
|
140
|
+
|
136
141
|
it "does not allow an enumerable to a unique attribute writer" do
|
137
142
|
expect { history.abstract = "Low" }.not_to raise_error
|
138
143
|
expect { history.abstract = ["Low"]
|
139
144
|
}.to raise_error ArgumentError, "You attempted to set the property `abstract' of test:123 to an enumerable value. However, this property is declared as singular."
|
140
145
|
expect { history.abstract = nil }.not_to raise_error
|
146
|
+
expect { history.abstract = ActiveTriples::Resource.new }.not_to raise_error
|
141
147
|
end
|
142
148
|
end
|
143
149
|
end
|
data/spec/unit/file_spec.rb
CHANGED
@@ -192,6 +192,23 @@ describe ActiveFedora::File do
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
context 'when file is new and content behaves like io' do
|
196
|
+
let(:file_content) { "hello world" }
|
197
|
+
|
198
|
+
before do
|
199
|
+
af_file.uri = "http://localhost:8983/fedora/rest/test/1234/abcd"
|
200
|
+
af_file.content = StringIO.new(file_content)
|
201
|
+
allow(af_file).to receive(:new_record?).and_return(true)
|
202
|
+
end
|
203
|
+
|
204
|
+
describe "#content" do
|
205
|
+
it 'can be re-read' do
|
206
|
+
expect(af_file.content.read).to eq file_content
|
207
|
+
expect(af_file.content.read).to eq file_content
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
195
212
|
describe "#mime_type" do
|
196
213
|
let(:parent) { ActiveFedora::Base.create }
|
197
214
|
before do
|
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: 11.5.
|
4
|
+
version: 11.5.6
|
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: 2020-06-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
version: 4.2.4
|
62
62
|
- - "<"
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: '
|
64
|
+
version: '5.2'
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,7 +71,7 @@ dependencies:
|
|
71
71
|
version: 4.2.4
|
72
72
|
- - "<"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '5.2'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: activemodel
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
version: '4.2'
|
82
82
|
- - "<"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
84
|
+
version: '5.2'
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,21 +91,27 @@ dependencies:
|
|
91
91
|
version: '4.2'
|
92
92
|
- - "<"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
94
|
+
version: '5.2'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: active-triples
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- - "
|
99
|
+
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: 0.11.0
|
102
|
+
- - "<"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 2.0.0
|
102
105
|
type: :runtime
|
103
106
|
prerelease: false
|
104
107
|
version_requirements: !ruby/object:Gem::Requirement
|
105
108
|
requirements:
|
106
|
-
- - "
|
109
|
+
- - ">="
|
107
110
|
- !ruby/object:Gem::Version
|
108
111
|
version: 0.11.0
|
112
|
+
- - "<"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 2.0.0
|
109
115
|
- !ruby/object:Gem::Dependency
|
110
116
|
name: deprecation
|
111
117
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +140,20 @@ dependencies:
|
|
134
140
|
- - "~>"
|
135
141
|
- !ruby/object:Gem::Version
|
136
142
|
version: 0.7.0
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: rdf-vocab
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "<"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 3.1.5
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "<"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 3.1.5
|
137
157
|
- !ruby/object:Gem::Dependency
|
138
158
|
name: ruby-progressbar
|
139
159
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,14 +202,14 @@ dependencies:
|
|
182
202
|
requirements:
|
183
203
|
- - ">="
|
184
204
|
- !ruby/object:Gem::Version
|
185
|
-
version: '
|
205
|
+
version: '4.2'
|
186
206
|
type: :development
|
187
207
|
prerelease: false
|
188
208
|
version_requirements: !ruby/object:Gem::Requirement
|
189
209
|
requirements:
|
190
210
|
- - ">="
|
191
211
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
212
|
+
version: '4.2'
|
193
213
|
- !ruby/object:Gem::Dependency
|
194
214
|
name: rdoc
|
195
215
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,14 +258,14 @@ dependencies:
|
|
238
258
|
requirements:
|
239
259
|
- - "~>"
|
240
260
|
- !ruby/object:Gem::Version
|
241
|
-
version: '
|
261
|
+
version: '2.0'
|
242
262
|
type: :development
|
243
263
|
prerelease: false
|
244
264
|
version_requirements: !ruby/object:Gem::Requirement
|
245
265
|
requirements:
|
246
266
|
- - "~>"
|
247
267
|
- !ruby/object:Gem::Version
|
248
|
-
version: '
|
268
|
+
version: '2.0'
|
249
269
|
- !ruby/object:Gem::Dependency
|
250
270
|
name: fcrepo_wrapper
|
251
271
|
requirement: !ruby/object:Gem::Requirement
|
@@ -354,6 +374,7 @@ extra_rdoc_files:
|
|
354
374
|
- LICENSE
|
355
375
|
- README.md
|
356
376
|
files:
|
377
|
+
- ".circleci/config.yml"
|
357
378
|
- ".gitignore"
|
358
379
|
- ".gitmodules"
|
359
380
|
- ".mailmap"
|
@@ -361,7 +382,6 @@ files:
|
|
361
382
|
- ".rubocop.yml"
|
362
383
|
- ".rubocop_todo.yml"
|
363
384
|
- ".solr_wrapper"
|
364
|
-
- ".travis.yml"
|
365
385
|
- CONTRIBUTING.md
|
366
386
|
- CONTRIBUTORS.md
|
367
387
|
- Gemfile
|
@@ -728,8 +748,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
728
748
|
- !ruby/object:Gem::Version
|
729
749
|
version: '0'
|
730
750
|
requirements: []
|
731
|
-
|
732
|
-
rubygems_version: 2.5.1
|
751
|
+
rubygems_version: 3.1.4
|
733
752
|
signing_key:
|
734
753
|
specification_version: 4
|
735
754
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache: bundler
|
3
|
-
sudo: false
|
4
|
-
rvm: 2.4.1
|
5
|
-
matrix:
|
6
|
-
include:
|
7
|
-
- rvm: 2.3.4
|
8
|
-
env: "RAILS_VERSION=4.2.8"
|
9
|
-
- env: "RSOLR_VERSION=2.0.1"
|
10
|
-
global_env:
|
11
|
-
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
12
|
-
before_install:
|
13
|
-
- gem update --system
|
14
|
-
before_script:
|
15
|
-
- jdk_switcher use oraclejdk8
|