active-fedora 13.1.2 → 13.1.3
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/.github_changelog_generator +2 -0
- data/CHANGELOG.md +3362 -0
- data/CONTRIBUTING.md +23 -1
- data/README.md +4 -0
- data/active-fedora.gemspec +14 -13
- data/lib/active_fedora/version.rb +1 -1
- metadata +104 -206
- data/spec/config_helper.rb +0 -17
- data/spec/fixtures/dino.jpg +0 -0
- data/spec/fixtures/dino_jpg_no_file_ext +0 -0
- data/spec/fixtures/minivan.jpg +0 -0
- data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
- data/spec/fixtures/rails_root/config/fedora.yml +0 -12
- data/spec/fixtures/rails_root/config/solr.yml +0 -15
- data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
- data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
- data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
- data/spec/integration/associations/rdf_spec.rb +0 -61
- data/spec/integration/associations_spec.rb +0 -680
- data/spec/integration/attached_files_spec.rb +0 -146
- data/spec/integration/attributes_spec.rb +0 -73
- data/spec/integration/autosave_association_spec.rb +0 -24
- data/spec/integration/base_spec.rb +0 -184
- data/spec/integration/basic_contains_association_spec.rb +0 -121
- data/spec/integration/belongs_to_association_spec.rb +0 -260
- data/spec/integration/caching_spec.rb +0 -59
- data/spec/integration/clean_connection_spec.rb +0 -21
- data/spec/integration/collection_association_spec.rb +0 -166
- data/spec/integration/date_time_properties_spec.rb +0 -41
- data/spec/integration/delete_all_spec.rb +0 -64
- data/spec/integration/direct_container_spec.rb +0 -250
- data/spec/integration/directly_contains_one_association_spec.rb +0 -96
- data/spec/integration/eradicate_spec.rb +0 -52
- data/spec/integration/fedora_solr_sync_spec.rb +0 -30
- data/spec/integration/file_fixity_spec.rb +0 -36
- data/spec/integration/file_spec.rb +0 -221
- data/spec/integration/generators/fedora_generator_spec.rb +0 -26
- data/spec/integration/generators/solr_generator_spec.rb +0 -23
- data/spec/integration/gone_spec.rb +0 -41
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
- data/spec/integration/has_many_associations_spec.rb +0 -436
- data/spec/integration/has_subresource_spec.rb +0 -34
- data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
- data/spec/integration/indexing_spec.rb +0 -110
- data/spec/integration/indirect_container_spec.rb +0 -290
- data/spec/integration/json_serialization_spec.rb +0 -32
- data/spec/integration/marshal_spec.rb +0 -39
- data/spec/integration/nested_attribute_spec.rb +0 -177
- data/spec/integration/nested_hash_resources_spec.rb +0 -43
- data/spec/integration/persistence_spec.rb +0 -37
- data/spec/integration/query_result_builder_spec.rb +0 -37
- data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
- data/spec/integration/relation_delegation_spec.rb +0 -52
- data/spec/integration/relation_spec.rb +0 -117
- data/spec/integration/scoped_query_spec.rb +0 -134
- data/spec/integration/scoping_spec.rb +0 -48
- data/spec/integration/solr_hit_spec.rb +0 -32
- data/spec/integration/versionable_spec.rb +0 -256
- data/spec/integration/with_metadata_spec.rb +0 -111
- data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
- data/spec/rcov.opts +0 -2
- data/spec/spec.opts +0 -5
- data/spec/spec_helper.rb +0 -106
- data/spec/support/an_active_model.rb +0 -29
- data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
- data/spec/unit/active_fedora_spec.rb +0 -118
- data/spec/unit/aggregation/list_source_spec.rb +0 -134
- data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
- data/spec/unit/association_hash_spec.rb +0 -64
- data/spec/unit/attached_files_spec.rb +0 -218
- data/spec/unit/attributes_spec.rb +0 -146
- data/spec/unit/base_active_model_spec.rb +0 -28
- data/spec/unit/base_cma_spec.rb +0 -15
- data/spec/unit/base_extra_spec.rb +0 -33
- data/spec/unit/base_spec.rb +0 -328
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
- data/spec/unit/callback_spec.rb +0 -65
- data/spec/unit/change_set_spec.rb +0 -60
- data/spec/unit/checksum_spec.rb +0 -25
- data/spec/unit/code_configurator_spec.rb +0 -41
- data/spec/unit/collection_proxy_spec.rb +0 -25
- data/spec/unit/config_spec.rb +0 -18
- data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
- data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
- data/spec/unit/core/logger_spec.rb +0 -18
- data/spec/unit/core_spec.rb +0 -242
- data/spec/unit/default_model_mapper_spec.rb +0 -39
- data/spec/unit/fedora_spec.rb +0 -31
- data/spec/unit/file/streaming_spec.rb +0 -33
- data/spec/unit/file_configurator_spec.rb +0 -295
- data/spec/unit/file_io_spec.rb +0 -137
- data/spec/unit/file_path_builder_spec.rb +0 -18
- data/spec/unit/file_spec.rb +0 -489
- data/spec/unit/files_hash_spec.rb +0 -52
- data/spec/unit/filter_spec.rb +0 -133
- data/spec/unit/finder_methods_spec.rb +0 -154
- data/spec/unit/fixity_service_spec.rb +0 -128
- data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
- data/spec/unit/has_many_association_spec.rb +0 -131
- data/spec/unit/indexers/global_indexer_spec.rb +0 -41
- data/spec/unit/indexing/map/index_object_spec.rb +0 -25
- data/spec/unit/indexing/map_spec.rb +0 -27
- data/spec/unit/indexing_service_spec.rb +0 -28
- data/spec/unit/indexing_spec.rb +0 -86
- data/spec/unit/inheritance_spec.rb +0 -60
- data/spec/unit/ldp_resource_spec.rb +0 -15
- data/spec/unit/loadable_from_json_spec.rb +0 -40
- data/spec/unit/logger_spec.rb +0 -19
- data/spec/unit/model_classifier_spec.rb +0 -49
- data/spec/unit/ordered_spec.rb +0 -367
- data/spec/unit/orders/list_node_spec.rb +0 -151
- data/spec/unit/orders/ordered_list_spec.rb +0 -335
- data/spec/unit/orders/reflection_spec.rb +0 -22
- data/spec/unit/pathing_spec.rb +0 -35
- data/spec/unit/persistence_spec.rb +0 -115
- data/spec/unit/property_predicate_spec.rb +0 -35
- data/spec/unit/property_spec.rb +0 -25
- data/spec/unit/query_result_builder_spec.rb +0 -31
- data/spec/unit/query_spec.rb +0 -307
- data/spec/unit/querying_spec.rb +0 -24
- data/spec/unit/rdf/indexing_service_spec.rb +0 -114
- data/spec/unit/rdf_vocab_spec.rb +0 -30
- data/spec/unit/readonly_spec.rb +0 -24
- data/spec/unit/reflection_spec.rb +0 -42
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
- data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
- data/spec/unit/scoping_spec.rb +0 -67
- data/spec/unit/serializers_spec.rb +0 -19
- data/spec/unit/solr_config_options_spec.rb +0 -57
- data/spec/unit/solr_hit_spec.rb +0 -57
- data/spec/unit/solr_query_builder_spec.rb +0 -18
- data/spec/unit/solr_service_spec.rb +0 -165
- data/spec/unit/sparql_insert_spec.rb +0 -31
- data/spec/unit/validations_spec.rb +0 -92
- data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
- data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe ActiveFedora::Base do
|
|
4
|
-
before do
|
|
5
|
-
class Library < ActiveFedora::Base
|
|
6
|
-
has_many :books
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class Book < ActiveFedora::Base
|
|
10
|
-
belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent
|
|
11
|
-
end
|
|
12
|
-
class SpecialInheritedBook < Book
|
|
13
|
-
def assert_content_model
|
|
14
|
-
self.has_model = [self.class.to_s, self.class.superclass.to_s]
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
after do
|
|
19
|
-
Object.send(:remove_const, :Library)
|
|
20
|
-
Object.send(:remove_const, :SpecialInheritedBook)
|
|
21
|
-
Object.send(:remove_const, :Book)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
let(:library) { Library.create }
|
|
25
|
-
let(:book) { Book.new }
|
|
26
|
-
|
|
27
|
-
describe "setting the id property" do
|
|
28
|
-
it "stores it" do
|
|
29
|
-
book.library_id = library.id
|
|
30
|
-
expect(book.library_id).to eq library.id
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "marks it as changed" do
|
|
34
|
-
expect {
|
|
35
|
-
book.library_id = library.id
|
|
36
|
-
}.to change { book.changed? }.from(false).to(true)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe "reassigning the parent_id" do
|
|
40
|
-
let(:library2) { Library.create }
|
|
41
|
-
before { book.library = library2 }
|
|
42
|
-
|
|
43
|
-
it "updates the object" do
|
|
44
|
-
expect(book.library).to eq library2 # cause the association to set @loaded
|
|
45
|
-
library_proxy = book.send(:association_instance_get, :library)
|
|
46
|
-
expect(library_proxy).to_not be_stale_target
|
|
47
|
-
book.library_id = library.id
|
|
48
|
-
expect(library_proxy).to be_stale_target
|
|
49
|
-
expect(book.library).to eq library
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "is settable via []=" do
|
|
54
|
-
book[:library_id] = library.id
|
|
55
|
-
expect(book.library_id).to eq library.id
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
describe "getting the id property" do
|
|
60
|
-
it "is accessable via []" do
|
|
61
|
-
book[:library_id] = library.id
|
|
62
|
-
expect(book[:library_id]).to eq library.id
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
describe "when dealing with inherited objects" do
|
|
67
|
-
before do
|
|
68
|
-
@library2 = Library.create
|
|
69
|
-
@special_book = SpecialInheritedBook.create
|
|
70
|
-
|
|
71
|
-
book.library = @library2
|
|
72
|
-
book.save
|
|
73
|
-
@special_book.library = @library2
|
|
74
|
-
@special_book.save
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "casts to the most specific class for the association" do
|
|
78
|
-
expect(@library2.books[0]).to be_instance_of Book
|
|
79
|
-
expect(@library2.books[1]).to be_instance_of SpecialInheritedBook
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
after do
|
|
83
|
-
@library2.delete
|
|
84
|
-
@special_book.delete
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
describe "casting inheritance detailed test cases" do
|
|
89
|
-
before :all do
|
|
90
|
-
class SimpleObject < ActiveFedora::Base
|
|
91
|
-
belongs_to :simple_collection, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SimpleCollection'
|
|
92
|
-
belongs_to :complex_collection, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ComplexCollection'
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# NOTE: As RDF assertions seem to be returned in alphabetical order, the "Z" is to insure this is stored
|
|
96
|
-
# after the SimpleObject relationship for this particular case. This is to ensure people don't just change ActiveFedora
|
|
97
|
-
# to pick the first content model and it works by alphabetical chance.
|
|
98
|
-
class ZComplexObject < SimpleObject
|
|
99
|
-
belongs_to :simple_collection, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SimpleCollection'
|
|
100
|
-
belongs_to :complex_collection, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ComplexCollection'
|
|
101
|
-
|
|
102
|
-
def assert_content_model
|
|
103
|
-
self.has_model = [self.class.to_s, self.class.superclass.to_s]
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
class SimpleCollection < ActiveFedora::Base
|
|
108
|
-
has_many :objects, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SimpleObject'
|
|
109
|
-
has_many :complex_objects, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ZComplexObject'
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
class ComplexCollection < SimpleCollection
|
|
113
|
-
has_many :objects, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SimpleObject'
|
|
114
|
-
has_many :complex_objects, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ZComplexObject'
|
|
115
|
-
|
|
116
|
-
def assert_content_model
|
|
117
|
-
self.has_model = [self.class.to_s, self.class.superclass.to_s]
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
after :all do
|
|
122
|
-
Object.send(:remove_const, :SimpleObject)
|
|
123
|
-
Object.send(:remove_const, :ZComplexObject)
|
|
124
|
-
Object.send(:remove_const, :SimpleCollection)
|
|
125
|
-
Object.send(:remove_const, :ComplexCollection)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe "saving between the before and after hooks" do
|
|
129
|
-
let(:complex_object) { ZComplexObject.find(ZComplexObject.create.id) }
|
|
130
|
-
let(:complex_collection) { ComplexCollection.find(ComplexCollection.create.id) }
|
|
131
|
-
|
|
132
|
-
context "Verify that an inherited object will save and retrieve with the correct models" do
|
|
133
|
-
it "has added the inverse relationship for the correct class" do
|
|
134
|
-
expect(complex_object.has_model).to match_array(["SimpleObject", "ZComplexObject"])
|
|
135
|
-
expect(complex_collection.has_model).to match_array(["SimpleCollection", "ComplexCollection"])
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
context "Add a complex_object into a simple_collection" do
|
|
140
|
-
let(:simple_collection) { SimpleCollection.create }
|
|
141
|
-
|
|
142
|
-
before do
|
|
143
|
-
simple_collection.objects = [complex_object]
|
|
144
|
-
simple_collection.save!
|
|
145
|
-
complex_collection.save!
|
|
146
|
-
end
|
|
147
|
-
it "has added the inverse relationship for the correct class" do
|
|
148
|
-
expect(complex_object.simple_collection).to be_instance_of SimpleCollection
|
|
149
|
-
expect(complex_object.complex_collection).to be_nil
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
context "Add a complex_object into a complex_collection" do
|
|
154
|
-
before do
|
|
155
|
-
complex_collection.objects = [complex_object] # this sticks it into the :objects association, but since it is a ZComplexObject it should also be fetched by :complex_collection association
|
|
156
|
-
complex_collection.save
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
it "has added the inverse relationship for the correct class" do
|
|
160
|
-
expect(complex_object.complex_collection).to be_instance_of ComplexCollection
|
|
161
|
-
expect(complex_object.reload.simple_collection).to be_instance_of ComplexCollection
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
context "Adding mixed types on a base class with a filtered has_many relationship" do
|
|
166
|
-
let(:simple_collection) { SimpleCollection.create }
|
|
167
|
-
let(:simple_object) { SimpleObject.create }
|
|
168
|
-
|
|
169
|
-
before do
|
|
170
|
-
simple_collection.objects = [complex_object, simple_object]
|
|
171
|
-
simple_collection.save!
|
|
172
|
-
end
|
|
173
|
-
it "ignores objects whose classes aren't specified" do
|
|
174
|
-
expect(simple_collection.complex_objects.size).to eq 1
|
|
175
|
-
expect(simple_collection.complex_objects[0]).to be_instance_of ZComplexObject
|
|
176
|
-
expect(simple_collection.complex_objects[1]).to be_nil
|
|
177
|
-
|
|
178
|
-
expect(simple_collection.objects.size).to eq 2
|
|
179
|
-
expect(simple_collection.objects[0]).to be_instance_of ZComplexObject
|
|
180
|
-
expect(simple_collection.objects[1]).to be_instance_of SimpleObject
|
|
181
|
-
|
|
182
|
-
expect(simple_object.simple_collection).to be_instance_of SimpleCollection
|
|
183
|
-
expect(simple_object.complex_collection).to be_nil
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
context "Adding mixed types on a subclass with a filtered has_many relationship" do
|
|
188
|
-
let(:simple_object) { SimpleObject.create }
|
|
189
|
-
|
|
190
|
-
before do
|
|
191
|
-
complex_collection.objects = [complex_object, simple_object]
|
|
192
|
-
complex_collection.save!
|
|
193
|
-
end
|
|
194
|
-
it "ignores objects who's classes aren't specified" do
|
|
195
|
-
expect(complex_collection.complex_objects.size).to eq 1
|
|
196
|
-
expect(complex_collection.complex_objects[0]).to be_instance_of ZComplexObject
|
|
197
|
-
expect(complex_collection.complex_objects[1]).to be_nil
|
|
198
|
-
|
|
199
|
-
expect(complex_collection.objects.size).to eq 2
|
|
200
|
-
expect(complex_collection.objects[0]).to be_instance_of ZComplexObject
|
|
201
|
-
expect(complex_collection.objects[1]).to be_instance_of SimpleObject
|
|
202
|
-
|
|
203
|
-
expect(simple_object.complex_collection).to be_instance_of ComplexCollection
|
|
204
|
-
expect(simple_object.reload.simple_collection).to be_instance_of ComplexCollection
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
describe "casting inheritance super class test cases" do
|
|
211
|
-
before :all do
|
|
212
|
-
class SuperclassObject < ActiveFedora::Base
|
|
213
|
-
belongs_to :superclass_collection, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SuperclassCollection'
|
|
214
|
-
|
|
215
|
-
def assert_content_model
|
|
216
|
-
self.has_model = [self.class.to_s, self.class.superclass.to_s]
|
|
217
|
-
end
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
class SubclassObject < SuperclassObject
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
class SuperclassCollection < ActiveFedora::Base
|
|
224
|
-
has_many :objects, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'SuperclassObject'
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
after :all do
|
|
228
|
-
Object.send(:remove_const, :SuperclassObject)
|
|
229
|
-
Object.send(:remove_const, :SubclassObject)
|
|
230
|
-
Object.send(:remove_const, :SuperclassCollection)
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
describe "Adding subclass objects" do
|
|
234
|
-
let(:superclass_collection) { SuperclassCollection.create }
|
|
235
|
-
let(:superclass_object) { SubclassObject.create }
|
|
236
|
-
|
|
237
|
-
context "Add a subclass_object into a superclass_collection" do
|
|
238
|
-
before do
|
|
239
|
-
superclass_collection.objects = [subclass_object]
|
|
240
|
-
superclass_collection.save!
|
|
241
|
-
end
|
|
242
|
-
it "has added the inverse relationship for the correct class" do
|
|
243
|
-
expect(subclass_object.superclass_collection).to be_instance_of SuperclassCollection
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
context "Set the superclass_collection of a subclass object"
|
|
248
|
-
let(:subclass_object) { SubclassObject.create }
|
|
249
|
-
|
|
250
|
-
before do
|
|
251
|
-
subclass_object.superclass_collection = superclass_collection
|
|
252
|
-
subclass_object.save!
|
|
253
|
-
end
|
|
254
|
-
it "has added the inverse relationship for the correct class" do
|
|
255
|
-
expect(superclass_collection.objects.size).to eq 1
|
|
256
|
-
expect(superclass_collection.objects[0]).to be_instance_of SubclassObject
|
|
257
|
-
end
|
|
258
|
-
end
|
|
259
|
-
end
|
|
260
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe "Caching" do
|
|
4
|
-
before do
|
|
5
|
-
class TestClass < ActiveFedora::Base
|
|
6
|
-
property :title, predicate: ::RDF::Vocab::DC.title
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
after { Object.send(:remove_const, :TestClass) }
|
|
11
|
-
|
|
12
|
-
let!(:object) { TestClass.create(id: '123') }
|
|
13
|
-
|
|
14
|
-
describe "#cache" do
|
|
15
|
-
it "finds records in the cache" do
|
|
16
|
-
expect_any_instance_of(Faraday::Connection).to receive(:get).once.and_call_original
|
|
17
|
-
ActiveFedora::Base.cache do
|
|
18
|
-
o1 = TestClass.find(object.id)
|
|
19
|
-
o2 = TestClass.find(object.id)
|
|
20
|
-
expect(o1.ldp_source.get.body.object_id).to eq o2.ldp_source.get.body.object_id
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "clears the cache at the end of the block" do
|
|
25
|
-
expect_any_instance_of(Faraday::Connection).to receive(:get).twice.and_call_original
|
|
26
|
-
ActiveFedora::Base.cache do
|
|
27
|
-
TestClass.find(object.id)
|
|
28
|
-
end
|
|
29
|
-
ActiveFedora::Base.cache do
|
|
30
|
-
TestClass.find(object.id)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
context "an update" do
|
|
35
|
-
it "flushes the cache" do
|
|
36
|
-
expect_any_instance_of(Faraday::Connection).to receive(:get).twice.and_call_original
|
|
37
|
-
ActiveFedora::Base.cache do
|
|
38
|
-
TestClass.find(object.id)
|
|
39
|
-
object.title = ['foo']
|
|
40
|
-
object.save!
|
|
41
|
-
TestClass.find(object.id)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
describe "#uncached" do
|
|
48
|
-
it "does not use the cache" do
|
|
49
|
-
expect_any_instance_of(Faraday::Connection).to receive(:get).twice.and_call_original
|
|
50
|
-
ActiveFedora::Base.cache do
|
|
51
|
-
TestClass.find(object.id)
|
|
52
|
-
ActiveFedora::Base.uncached do
|
|
53
|
-
TestClass.find(object.id)
|
|
54
|
-
end
|
|
55
|
-
TestClass.find(object.id)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveFedora::CleanConnection do
|
|
4
|
-
subject { ActiveFedora.fedora.clean_connection }
|
|
5
|
-
describe "#get" do
|
|
6
|
-
context "when given an existing resource uri" do
|
|
7
|
-
let(:uri) { asset.rdf_subject }
|
|
8
|
-
let(:asset) do
|
|
9
|
-
ActiveFedora::Base.create do |a|
|
|
10
|
-
a.resource << [a.rdf_subject, RDF::Vocab::DC.title, "test"]
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
let(:result) { subject.get(uri) }
|
|
14
|
-
it "returns a clean graph" do
|
|
15
|
-
graph = result.graph
|
|
16
|
-
expect(graph.statements.to_a.length).to eq 1
|
|
17
|
-
expect(graph.statements.to_a.first).to contain_exactly asset.rdf_subject, RDF::Vocab::DC.title, RDF::Literal.new("test")
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe ActiveFedora::Base do
|
|
4
|
-
before do
|
|
5
|
-
class Library < ActiveFedora::Base
|
|
6
|
-
has_many :books
|
|
7
|
-
end
|
|
8
|
-
class Book < ActiveFedora::Base
|
|
9
|
-
belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasMember
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
let(:library) { Library.create! }
|
|
14
|
-
|
|
15
|
-
after do
|
|
16
|
-
Object.send(:remove_const, :Library)
|
|
17
|
-
Object.send(:remove_const, :Book)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "load_from_solr" do
|
|
21
|
-
let!(:book1) { Book.create!(library: library) }
|
|
22
|
-
let!(:book2) { Book.create!(library: library) }
|
|
23
|
-
|
|
24
|
-
it "sets rows to count, if not specified" do
|
|
25
|
-
expect(library.books(response_format: :solr).size).to eq 2
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "limits rows returned if option passed" do
|
|
29
|
-
expect(library.books(response_format: :solr, rows: 1).size).to eq 1
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "does not query solr if rows is 0" do
|
|
33
|
-
expect(ActiveFedora::SolrService).not_to receive(:query)
|
|
34
|
-
expect(library.books(response_format: :solr, rows: 0)).to eq []
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
describe "#delete_all" do
|
|
39
|
-
let!(:book1) { Book.create!(library: library) }
|
|
40
|
-
let!(:book2) { Book.create!(library: library) }
|
|
41
|
-
it "deletes em" do
|
|
42
|
-
expect {
|
|
43
|
-
library.books.delete_all
|
|
44
|
-
}.to change { library.books.count }.by(-2)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
describe "#delete" do
|
|
49
|
-
context "when given items not in collection" do
|
|
50
|
-
it "returns an empty set" do
|
|
51
|
-
expect(library.books.delete(Book.new)).to eq []
|
|
52
|
-
end
|
|
53
|
-
it "does not act on it" do
|
|
54
|
-
b = Book.new
|
|
55
|
-
allow(b).to receive(:persisted?).and_return(true)
|
|
56
|
-
|
|
57
|
-
library.books.delete(b)
|
|
58
|
-
|
|
59
|
-
expect(b).not_to have_received(:persisted?)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
describe "#destroy_all" do
|
|
65
|
-
let!(:book1) { Book.create!(library: library) }
|
|
66
|
-
let!(:book2) { Book.create!(library: library) }
|
|
67
|
-
it "deletes em" do
|
|
68
|
-
expect {
|
|
69
|
-
library.books.destroy_all
|
|
70
|
-
}.to change { library.books.count }.by(-2)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
describe "#find" do
|
|
75
|
-
let!(:book1) { Book.create!(library: library) }
|
|
76
|
-
let!(:book2) { Book.create!(library: library) }
|
|
77
|
-
it "finds the record that matches" do
|
|
78
|
-
expected = library.books.find(book1.id)
|
|
79
|
-
expect(expected).to eq book1
|
|
80
|
-
end
|
|
81
|
-
describe "with some records that aren't part of the collection" do
|
|
82
|
-
let!(:book3) { Book.create }
|
|
83
|
-
it "finds no records" do
|
|
84
|
-
expect(library.books.find(book3.id)).to be_nil
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
describe "#select" do
|
|
90
|
-
let!(:book1) { Book.create!(library: library) }
|
|
91
|
-
let!(:book2) { Book.create!(library: library) }
|
|
92
|
-
|
|
93
|
-
# TODO: Bug described in issue #609
|
|
94
|
-
xit "chooses a subset of objects in the relationship" do
|
|
95
|
-
expect(library.books.select([:id])).to include(book1.id)
|
|
96
|
-
end
|
|
97
|
-
it "works as a block" do
|
|
98
|
-
expect(library.books.select { |x| x.id == book1.id }).to eq [book1]
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
describe "#size" do
|
|
103
|
-
context "with associations in memory" do
|
|
104
|
-
context "and the association is already loaded" do
|
|
105
|
-
before do
|
|
106
|
-
library.books.to_a # force the association to be loaded
|
|
107
|
-
library.books.build
|
|
108
|
-
end
|
|
109
|
-
subject { library.books.size }
|
|
110
|
-
it { is_expected.to eq 1 }
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
context "and the association is not loaded" do
|
|
114
|
-
before do
|
|
115
|
-
library.books.build
|
|
116
|
-
end
|
|
117
|
-
subject { library.books.size }
|
|
118
|
-
it { is_expected.to eq 1 }
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
describe "finding the inverse" do
|
|
124
|
-
context "when no inverse exists" do
|
|
125
|
-
before do
|
|
126
|
-
class Item < ActiveFedora::Base
|
|
127
|
-
end
|
|
128
|
-
class SpecContainer < ActiveFedora::Base
|
|
129
|
-
has_many :items
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
after do
|
|
133
|
-
Object.send(:remove_const, :Item)
|
|
134
|
-
Object.send(:remove_const, :SpecContainer)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
let(:instance) { SpecContainer.new }
|
|
138
|
-
|
|
139
|
-
it "raises an error" do
|
|
140
|
-
expect { instance.items }.to raise_error "No :inverse_of or :predicate attribute was set or could be inferred for has_many :items on SpecContainer"
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
context "when classes are namespaced" do
|
|
145
|
-
before do
|
|
146
|
-
class Item < ActiveFedora::Base
|
|
147
|
-
has_and_belongs_to_many :container, predicate: ::RDF::Vocab::DC.extent, class_name: 'Foo::Container'
|
|
148
|
-
end
|
|
149
|
-
module Foo
|
|
150
|
-
class Container < ActiveFedora::Base
|
|
151
|
-
has_many :items
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
after do
|
|
156
|
-
Object.send(:remove_const, :Item)
|
|
157
|
-
Object.send(:remove_const, :Foo)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
subject { instance.items }
|
|
161
|
-
let(:instance) { Foo::Container.new }
|
|
162
|
-
|
|
163
|
-
it { is_expected.to eq [] }
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
end
|