active-fedora 9.4.3 → 9.5.0
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/History.txt +13 -0
- data/lib/active_fedora.rb +1 -0
- data/lib/active_fedora/association_hash.rb +117 -0
- data/lib/active_fedora/associations.rb +28 -25
- data/lib/active_fedora/associations/basic_contains_association.rb +14 -2
- data/lib/active_fedora/associations/builder/contains.rb +6 -1
- data/lib/active_fedora/associations/id_composite.rb +4 -1
- data/lib/active_fedora/core.rb +12 -0
- data/lib/active_fedora/errors.rb +4 -0
- data/lib/active_fedora/file.rb +5 -2
- data/lib/active_fedora/files_hash.rb +1 -68
- data/lib/active_fedora/fixity_service.rb +13 -4
- data/lib/active_fedora/persistence.rb +18 -9
- data/lib/active_fedora/reflection.rb +5 -1
- data/lib/active_fedora/relation/calculations.rb +2 -2
- data/lib/active_fedora/relation/finder_methods.rb +25 -36
- data/lib/active_fedora/relation/query_methods.rb +5 -3
- data/lib/active_fedora/solr_query_builder.rb +62 -6
- data/lib/active_fedora/solr_service.rb +2 -2
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/contains_association_spec.rb +34 -0
- data/spec/integration/scoped_query_spec.rb +8 -4
- data/spec/unit/attached_files_spec.rb +8 -0
- data/spec/unit/file_spec.rb +14 -0
- data/spec/unit/finder_methods_spec.rb +50 -0
- data/spec/unit/fixity_service_spec.rb +33 -9
- data/spec/unit/query_spec.rb +97 -56
- data/spec/unit/solr_config_options_spec.rb +7 -3
- metadata +5 -2
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveFedora::FinderMethods do
|
4
|
+
let(:object_class) do
|
5
|
+
Class.new do
|
6
|
+
def self.delegated_attributes
|
7
|
+
{}
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:finder_class) do
|
13
|
+
this = self
|
14
|
+
Class.new do
|
15
|
+
include ActiveFedora::FinderMethods
|
16
|
+
@@klass = this.object_class
|
17
|
+
def initialize
|
18
|
+
@klass = @@klass
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:finder) { finder_class.new }
|
24
|
+
|
25
|
+
describe "#condition_to_clauses" do
|
26
|
+
subject { finder.send(:condition_to_clauses, key, value) }
|
27
|
+
let(:key) { 'library_id' }
|
28
|
+
|
29
|
+
context "when value is nil" do
|
30
|
+
let(:value) { nil }
|
31
|
+
it { is_expected.to eq "-library_id:[* TO *]" }
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when value is empty string" do
|
35
|
+
let(:value) { '' }
|
36
|
+
it { is_expected.to eq "-library_id:[* TO *]" }
|
37
|
+
end
|
38
|
+
|
39
|
+
context "when value is an id" do
|
40
|
+
let(:value) { 'one/two/three' }
|
41
|
+
it { is_expected.to eq "_query_:\"{!raw f=library_id}one/two/three\"" }
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when value is an array" do
|
45
|
+
let(:value) { ['one', 'four'] }
|
46
|
+
it { is_expected.to eq "_query_:\"{!raw f=library_id}one\" AND " \
|
47
|
+
"_query_:\"{!raw f=library_id}four\"" }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -24,20 +24,44 @@ describe ActiveFedora::FixityService do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#check" do
|
27
|
-
before
|
28
|
-
allow(service).to receive(:get_fixity_response_from_fedora).and_return(response)
|
29
|
-
end
|
27
|
+
before { allow(service).to receive(:get_fixity_response_from_fedora).and_return(response) }
|
30
28
|
subject { service.check }
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
|
30
|
+
context "with Fedora version >= 4.4.0" do
|
31
|
+
context "with a passing result" do
|
32
|
+
let(:response) do
|
33
|
+
instance_double("Response", body: '<subject> <http://www.loc.gov/premis/rdf/v1#hasEventOutcome> "SUCCESS"^^<http://www.w3.org/2001/XMLSchema#string> .')
|
34
|
+
end
|
35
|
+
it { is_expected.to be true }
|
36
|
+
end
|
37
|
+
|
38
|
+
context "with a failing result" do
|
39
|
+
let(:response) do
|
40
|
+
instance_double("Response", body: '<subject> <http://www.loc.gov/premis/rdf/v1#hasEventOutcome> "BAD_CHECKSUM"^^<http://www.w3.org/2001/XMLSchema#string> .')
|
41
|
+
end
|
42
|
+
it { is_expected.to be false }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "with Fedora version < 4.4.0" do
|
47
|
+
context "with a passing result" do
|
48
|
+
let(:response) do
|
49
|
+
instance_double("Response", body: '<subject> <http://fedora.info/definitions/v4/repository#status> "SUCCESS"^^<http://www.w3.org/2001/XMLSchema#string> .')
|
50
|
+
end
|
51
|
+
it { is_expected.to be true }
|
52
|
+
end
|
53
|
+
|
54
|
+
context "with a failing result" do
|
55
|
+
let(:response) do
|
56
|
+
instance_double("Response", body: '<subject> <http://fedora.info/definitions/v4/repository#status> "BAD_CHECKSUM"^^<http://www.w3.org/2001/XMLSchema#string> .')
|
57
|
+
end
|
58
|
+
it { is_expected.to be false }
|
34
59
|
end
|
35
|
-
it { is_expected.to be true }
|
36
60
|
end
|
37
61
|
|
38
|
-
context "with a
|
62
|
+
context "with a non-existent predicate" do
|
39
63
|
let(:response) do
|
40
|
-
instance_double("Response", body: '<subject> <http://
|
64
|
+
instance_double("Response", body: '<subject> <http://bogus.com/definitions/v1/bogusTerm#foo> "SUCCESS"^^<http://www.w3.org/2001/XMLSchema#string> .')
|
41
65
|
end
|
42
66
|
it { is_expected.to be false }
|
43
67
|
end
|
data/spec/unit/query_spec.rb
CHANGED
@@ -7,9 +7,9 @@ describe ActiveFedora::Base do
|
|
7
7
|
class Basic < ActiveFedora::Base
|
8
8
|
end
|
9
9
|
end
|
10
|
-
@model_query = "_query_:\"{!raw f=" + ActiveFedora::SolrQueryBuilder.solr_name("has_model", :symbol) + "}SpecModel::Basic" + "\""
|
11
|
-
@sort_query = ActiveFedora::SolrQueryBuilder.solr_name("system_create", :stored_sortable, type: :date) + ' asc'
|
12
10
|
end
|
11
|
+
let(:sort_query) { ActiveFedora::SolrQueryBuilder.solr_name("system_create", :stored_sortable, type: :date) + ' asc' }
|
12
|
+
let(:model_query) { "_query_:\"{!raw f=has_model_ssim}SpecModel::Basic\"" }
|
13
13
|
|
14
14
|
after(:all) do
|
15
15
|
Object.send(:remove_const, :SpecModel)
|
@@ -19,28 +19,40 @@ describe ActiveFedora::Base do
|
|
19
19
|
before { allow(ActiveFedora::Base).to receive(:relation).and_return(relation) }
|
20
20
|
describe "called on a concrete class" do
|
21
21
|
let(:relation) { ActiveFedora::Relation.new(SpecModel::Basic) }
|
22
|
-
|
23
|
-
|
24
|
-
expect(relation).to receive(:load_from_fedora).with("changeme:
|
25
|
-
|
22
|
+
|
23
|
+
it "queries solr for all objects with has_model_ssim of self.class" do
|
24
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:30", nil)
|
25
|
+
.and_return("Fake Object1")
|
26
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:22", nil)
|
27
|
+
.and_return("Fake Object2")
|
28
|
+
mock_docs = [{ "id" => "changeme:30" }, { "id" => "changeme:22" }]
|
26
29
|
expect(mock_docs).to receive(:has_next?).and_return(false)
|
27
|
-
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
30
|
+
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
31
|
+
.with(1, 1000, 'select',
|
32
|
+
params: { q: model_query, qt: 'standard', sort: [sort_query], fl: 'id' })
|
33
|
+
.and_return('response' => { 'docs' => mock_docs })
|
28
34
|
expect(SpecModel::Basic.all).to eq ["Fake Object1", "Fake Object2"]
|
29
35
|
end
|
30
36
|
end
|
37
|
+
|
31
38
|
describe "called without a specific class" do
|
32
39
|
let(:relation) { ActiveFedora::Relation.new(ActiveFedora::Base) }
|
33
|
-
it "
|
34
|
-
expect(relation).to receive(:load_from_fedora).with("changeme:30", true)
|
35
|
-
|
40
|
+
it "specifies a q parameter" do
|
41
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:30", true)
|
42
|
+
.and_return("Fake Object1")
|
43
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:22", true)
|
44
|
+
.and_return("Fake Object2")
|
36
45
|
mock_docs = [{"id" => "changeme:30"},{"id" => "changeme:22"}]
|
37
46
|
expect(mock_docs).to receive(:has_next?).and_return(false)
|
38
|
-
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
47
|
+
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
48
|
+
.with(1, 1000, 'select',
|
49
|
+
params: { q: '*:*', qt: 'standard', sort: [sort_query], fl: 'id' })
|
50
|
+
.and_return('response' => { 'docs' => mock_docs })
|
39
51
|
expect(ActiveFedora::Base.all).to eq ["Fake Object1", "Fake Object2"]
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
43
|
-
|
55
|
+
|
44
56
|
describe '#find' do
|
45
57
|
describe "with :cast false" do
|
46
58
|
describe "and an id is specified" do
|
@@ -66,12 +78,15 @@ describe ActiveFedora::Base do
|
|
66
78
|
end
|
67
79
|
let(:relation) { ActiveFedora::Relation.new(SpecModel::Basic) }
|
68
80
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
69
|
-
let(:expected_query) { "#{
|
70
|
-
|
81
|
+
let(:expected_query) { "#{model_query} AND " \
|
82
|
+
"_query_:\"{!raw f=foo}bar\" AND " \
|
83
|
+
"_query_:\"{!raw f=baz}quix\" AND " \
|
84
|
+
"_query_:\"{!raw f=baz}quack\"" }
|
85
|
+
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
71
86
|
let(:expected_sort_params) { { params: { sort: ["title_t desc"], fl: 'id', q: expected_query, qt: 'standard' } } }
|
72
87
|
let(:mock_docs) { [{"id" => "changeme:30"},{"id" => "changeme:22"}] }
|
73
88
|
|
74
|
-
it "
|
89
|
+
it "filters by the provided fields" do
|
75
90
|
expect(relation).to receive(:load_from_fedora).with("changeme:30", nil).and_return("Fake Object1")
|
76
91
|
expect(relation).to receive(:load_from_fedora).with("changeme:22", nil).and_return("Fake Object2")
|
77
92
|
|
@@ -80,42 +95,53 @@ describe ActiveFedora::Base do
|
|
80
95
|
expect(SpecModel::Basic.where({:foo=>'bar', :baz=>['quix','quack']})).to eq ["Fake Object1", "Fake Object2"]
|
81
96
|
end
|
82
97
|
|
83
|
-
it "
|
84
|
-
expect(SpecModel::Basic.where(
|
98
|
+
it "queries for empty strings" do
|
99
|
+
expect(SpecModel::Basic.where(active_fedora_model_ssi: '').count).to eq 0
|
85
100
|
end
|
86
101
|
|
87
|
-
it '
|
88
|
-
expect(SpecModel::Basic.where(
|
102
|
+
it 'queries for empty arrays' do
|
103
|
+
expect(SpecModel::Basic.where(active_fedora_model_ssi: []).count).to eq 0
|
89
104
|
end
|
90
105
|
|
91
|
-
it "
|
92
|
-
expect(relation).to receive(:load_from_fedora).with("changeme:30", nil)
|
93
|
-
|
106
|
+
it "adds options" do
|
107
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:30", nil)
|
108
|
+
.and_return("Fake Object1")
|
109
|
+
expect(relation).to receive(:load_from_fedora).with("changeme:22", nil)
|
110
|
+
.and_return("Fake Object2")
|
94
111
|
|
95
112
|
expect(mock_docs).to receive(:has_next?).and_return(false)
|
96
|
-
expect(solr).to receive(:paginate).with(1, 1000, 'select', expected_sort_params)
|
97
|
-
|
113
|
+
expect(solr).to receive(:paginate).with(1, 1000, 'select', expected_sort_params)
|
114
|
+
.and_return('response' => { 'docs' => mock_docs })
|
115
|
+
expect(SpecModel::Basic.where(foo: 'bar', baz: ['quix','quack'])
|
116
|
+
.order('title_t desc')).to eq ["Fake Object1", "Fake Object2"]
|
98
117
|
end
|
99
118
|
end
|
100
119
|
|
101
|
-
|
102
120
|
describe '#find_each' do
|
103
121
|
before { allow(ActiveFedora::Base).to receive(:relation).and_return(relation) }
|
104
122
|
let(:relation) { ActiveFedora::Relation.new(SpecModel::Basic) }
|
105
123
|
it "should query solr for all objects with :active_fedora_model_s of self.class" do
|
106
124
|
mock_docs = [{"id" => "changeme-30"},{"id" => "changeme-22"}]
|
107
125
|
expect(mock_docs).to receive(:has_next?).and_return(false)
|
108
|
-
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
109
|
-
|
110
|
-
|
111
|
-
|
126
|
+
expect(ActiveFedora::SolrService.instance.conn).to receive(:paginate)
|
127
|
+
.with(1, 1000, 'select',
|
128
|
+
params: { q: model_query, qt: 'standard', sort: [sort_query], fl: 'id' })
|
129
|
+
.and_return('response' => { 'docs' => mock_docs })
|
130
|
+
|
131
|
+
allow(relation).to receive(:load_from_fedora).with("changeme-30", nil)
|
132
|
+
.and_return(SpecModel::Basic.new('changeme-30'))
|
133
|
+
allow(relation).to receive(:load_from_fedora).with("changeme-22", nil)
|
134
|
+
.and_return(SpecModel::Basic.new('changeme-22'))
|
112
135
|
SpecModel::Basic.find_each(){ |obj| obj.class == SpecModel::Basic }
|
113
136
|
end
|
114
137
|
|
115
138
|
describe "with conditions" do
|
116
139
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
117
|
-
let(:expected_query) { "#{
|
118
|
-
|
140
|
+
let(:expected_query) { "#{model_query} AND " \
|
141
|
+
"_query_:\"{!raw f=foo}bar\" AND " \
|
142
|
+
"_query_:\"{!raw f=baz}quix\" AND " \
|
143
|
+
"_query_:\"{!raw f=baz}quack\"" }
|
144
|
+
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
119
145
|
let(:mock_docs) { [{"id" => "changeme-30"}, {"id" => "changeme-22"}] }
|
120
146
|
|
121
147
|
it "should filter by the provided fields" do
|
@@ -132,8 +158,11 @@ describe ActiveFedora::Base do
|
|
132
158
|
describe '#find_in_batches' do
|
133
159
|
describe "with conditions hash" do
|
134
160
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
135
|
-
let(:expected_query) { "#{
|
136
|
-
|
161
|
+
let(:expected_query) { "#{model_query} AND " \
|
162
|
+
"_query_:\"{!raw f=foo}bar\" AND " \
|
163
|
+
"_query_:\"{!raw f=baz}quix\" AND " \
|
164
|
+
"_query_:\"{!raw f=baz}quack\"" }
|
165
|
+
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
137
166
|
let(:mock_docs) { double('docs') }
|
138
167
|
|
139
168
|
it "should filter by the provided fields" do
|
@@ -147,22 +176,27 @@ describe ActiveFedora::Base do
|
|
147
176
|
end
|
148
177
|
|
149
178
|
describe '#count' do
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
expect(ActiveFedora::SolrService).to receive(:query)
|
179
|
+
let(:mock_result) { { 'response' => { 'numFound' => 7 } } }
|
180
|
+
|
181
|
+
it "returns a count" do
|
182
|
+
expect(ActiveFedora::SolrService).to receive(:query)
|
183
|
+
.with(model_query, rows: 0, raw: true)
|
184
|
+
.and_return(mock_result)
|
154
185
|
expect(SpecModel::Basic.count).to eq 7
|
155
186
|
end
|
156
|
-
|
157
|
-
|
158
|
-
expect(ActiveFedora::SolrService).to receive(:query)
|
159
|
-
|
187
|
+
|
188
|
+
it "allows conditions" do
|
189
|
+
expect(ActiveFedora::SolrService).to receive(:query)
|
190
|
+
.with("#{model_query} AND (foo:bar)", rows: 0, raw: true)
|
191
|
+
.and_return(mock_result)
|
192
|
+
expect(SpecModel::Basic.count(conditions: 'foo:bar')).to eq 7
|
160
193
|
end
|
161
194
|
|
162
|
-
it "
|
163
|
-
|
164
|
-
|
165
|
-
|
195
|
+
it "counts without a class specified" do
|
196
|
+
expect(ActiveFedora::SolrService).to receive(:query)
|
197
|
+
.with("(foo:bar)", rows: 0, raw: true)
|
198
|
+
.and_return(mock_result)
|
199
|
+
expect(ActiveFedora::Base.count(conditions: 'foo:bar')).to eq 7
|
166
200
|
end
|
167
201
|
end
|
168
202
|
|
@@ -200,37 +234,44 @@ describe ActiveFedora::Base do
|
|
200
234
|
SpecModel::Basic.first != @c
|
201
235
|
end
|
202
236
|
end
|
203
|
-
describe 'with one object' do
|
204
|
-
it '
|
237
|
+
describe 'with one object' do
|
238
|
+
it 'equals the first object when there is only one' do
|
205
239
|
a = SpecModel::Basic.create!
|
206
240
|
SpecModel::Basic.first == SpecModel::Basic.last
|
207
241
|
end
|
208
242
|
end
|
209
243
|
end
|
210
|
-
|
244
|
+
|
211
245
|
describe '#find_with_conditions' do
|
212
246
|
let(:mock_result) { double('Result') }
|
213
247
|
let(:klass) { SpecModel::Basic }
|
214
248
|
subject { klass.find_with_conditions(conditions) }
|
215
249
|
|
216
250
|
before do
|
217
|
-
expect(ActiveFedora::SolrService).to receive(:query)
|
251
|
+
expect(ActiveFedora::SolrService).to receive(:query)
|
252
|
+
.with(expected_query, sort: [sort_query]).and_return(mock_result)
|
218
253
|
end
|
219
254
|
|
220
255
|
context "with a hash of conditions" do
|
221
|
-
let(:expected_query) { "#{
|
256
|
+
let(:expected_query) { "#{model_query} AND " \
|
257
|
+
"_query_:\"{!raw f=foo}bar\" AND " \
|
258
|
+
"_query_:\"{!raw f=baz}quix\" AND " \
|
259
|
+
"_query_:\"{!raw f=baz}quack\"" }
|
222
260
|
let(:conditions) { { foo: 'bar', baz: ['quix', 'quack'] } }
|
223
261
|
|
224
|
-
it "
|
262
|
+
it "makes a query to solr and returns the results" do
|
225
263
|
expect(subject).to eq mock_result
|
226
264
|
end
|
227
265
|
end
|
228
266
|
|
229
267
|
context "with quotes in the params" do
|
230
|
-
let(:expected_query) { "#{
|
268
|
+
let(:expected_query) { "#{model_query} AND " \
|
269
|
+
"_query_:\"{!raw f=foo}9\\\" Nails\" AND " \
|
270
|
+
"_query_:\"{!raw f=baz}7\\\" version\" AND " \
|
271
|
+
"_query_:\"{!raw f=baz}quack\"" }
|
231
272
|
let(:conditions) { { foo: '9" Nails', baz: ['7" version', 'quack']} }
|
232
273
|
|
233
|
-
it "
|
274
|
+
it "escapes quotes" do
|
234
275
|
expect(subject).to eq mock_result
|
235
276
|
end
|
236
277
|
end
|
@@ -240,8 +281,8 @@ describe ActiveFedora::Base do
|
|
240
281
|
|
241
282
|
context "with a hash" do
|
242
283
|
let(:conditions) { {:baz=>'quack'} }
|
243
|
-
let(:expected_query) {
|
244
|
-
it "
|
284
|
+
let(:expected_query) { "_query_:\"{!raw f=baz}quack\"" }
|
285
|
+
it "doesn't use the class if it's called on AF:Base " do
|
245
286
|
expect(subject).to eq mock_result
|
246
287
|
end
|
247
288
|
end
|
@@ -249,7 +290,7 @@ describe ActiveFedora::Base do
|
|
249
290
|
context "called with a string" do
|
250
291
|
let(:conditions) { 'chunky:monkey' }
|
251
292
|
let(:expected_query) { '(chunky:monkey)' }
|
252
|
-
it "
|
293
|
+
it "uses the query string if it's provided and wrap it in parentheses" do
|
253
294
|
expect(subject).to eq mock_result
|
254
295
|
end
|
255
296
|
end
|
@@ -27,11 +27,15 @@ describe ActiveFedora do
|
|
27
27
|
expect(@test_object.to_solr[:id]).to be_nil
|
28
28
|
end
|
29
29
|
|
30
|
-
it "
|
30
|
+
it "is used by ActiveFedora::Base#find_with_conditions" do
|
31
31
|
mock_response = double("SolrResponse")
|
32
|
-
expect(ActiveFedora::SolrService).to receive(:query)
|
32
|
+
expect(ActiveFedora::SolrService).to receive(:query)
|
33
|
+
.with("_query_:\"{!raw f=has_model_ssim}SolrSpecModel::Basic\" AND " \
|
34
|
+
"_query_:\"{!raw f=MY_SAMPLE_ID}changeme:30\"",
|
35
|
+
sort: ["#{ActiveFedora::SolrQueryBuilder.solr_name("system_create", :stored_sortable, type: :date)} asc"])
|
36
|
+
.and_return(mock_response)
|
33
37
|
|
34
|
-
expect(SolrSpecModel::Basic.find_with_conditions(:
|
38
|
+
expect(SolrSpecModel::Basic.find_with_conditions(id: "changeme:30")).to equal(mock_response)
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
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.
|
4
|
+
version: 9.5.0
|
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: 2015-
|
13
|
+
date: 2015-10-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -284,6 +284,7 @@ files:
|
|
284
284
|
- gemfiles/rails4.2.gemfile
|
285
285
|
- lib/active-fedora.rb
|
286
286
|
- lib/active_fedora.rb
|
287
|
+
- lib/active_fedora/association_hash.rb
|
287
288
|
- lib/active_fedora/association_relation.rb
|
288
289
|
- lib/active_fedora/associations.rb
|
289
290
|
- lib/active_fedora/associations/association.rb
|
@@ -480,6 +481,7 @@ files:
|
|
480
481
|
- spec/integration/clean_connection_spec.rb
|
481
482
|
- spec/integration/collection_association_spec.rb
|
482
483
|
- spec/integration/complex_rdf_datastream_spec.rb
|
484
|
+
- spec/integration/contains_association_spec.rb
|
483
485
|
- spec/integration/datastream_rdf_nested_attributes_spec.rb
|
484
486
|
- spec/integration/delete_all_spec.rb
|
485
487
|
- spec/integration/direct_container_spec.rb
|
@@ -542,6 +544,7 @@ files:
|
|
542
544
|
- spec/unit/file_path_builder_spec.rb
|
543
545
|
- spec/unit/file_spec.rb
|
544
546
|
- spec/unit/files_hash_spec.rb
|
547
|
+
- spec/unit/finder_methods_spec.rb
|
545
548
|
- spec/unit/fixity_service_spec.rb
|
546
549
|
- spec/unit/forbidden_attributes_protection_spec.rb
|
547
550
|
- spec/unit/has_and_belongs_to_many_association_spec.rb
|