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.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/.github_changelog_generator +2 -0
  3. data/CHANGELOG.md +3362 -0
  4. data/CONTRIBUTING.md +23 -1
  5. data/README.md +4 -0
  6. data/active-fedora.gemspec +14 -13
  7. data/lib/active_fedora/version.rb +1 -1
  8. metadata +104 -206
  9. data/spec/config_helper.rb +0 -17
  10. data/spec/fixtures/dino.jpg +0 -0
  11. data/spec/fixtures/dino_jpg_no_file_ext +0 -0
  12. data/spec/fixtures/minivan.jpg +0 -0
  13. data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
  14. data/spec/fixtures/rails_root/config/fedora.yml +0 -12
  15. data/spec/fixtures/rails_root/config/solr.yml +0 -15
  16. data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
  17. data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
  18. data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
  19. data/spec/integration/associations/rdf_spec.rb +0 -61
  20. data/spec/integration/associations_spec.rb +0 -680
  21. data/spec/integration/attached_files_spec.rb +0 -146
  22. data/spec/integration/attributes_spec.rb +0 -73
  23. data/spec/integration/autosave_association_spec.rb +0 -24
  24. data/spec/integration/base_spec.rb +0 -184
  25. data/spec/integration/basic_contains_association_spec.rb +0 -121
  26. data/spec/integration/belongs_to_association_spec.rb +0 -260
  27. data/spec/integration/caching_spec.rb +0 -59
  28. data/spec/integration/clean_connection_spec.rb +0 -21
  29. data/spec/integration/collection_association_spec.rb +0 -166
  30. data/spec/integration/date_time_properties_spec.rb +0 -41
  31. data/spec/integration/delete_all_spec.rb +0 -64
  32. data/spec/integration/direct_container_spec.rb +0 -250
  33. data/spec/integration/directly_contains_one_association_spec.rb +0 -96
  34. data/spec/integration/eradicate_spec.rb +0 -52
  35. data/spec/integration/fedora_solr_sync_spec.rb +0 -30
  36. data/spec/integration/file_fixity_spec.rb +0 -36
  37. data/spec/integration/file_spec.rb +0 -221
  38. data/spec/integration/generators/fedora_generator_spec.rb +0 -26
  39. data/spec/integration/generators/solr_generator_spec.rb +0 -23
  40. data/spec/integration/gone_spec.rb +0 -41
  41. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
  42. data/spec/integration/has_many_associations_spec.rb +0 -436
  43. data/spec/integration/has_subresource_spec.rb +0 -34
  44. data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
  45. data/spec/integration/indexing_spec.rb +0 -110
  46. data/spec/integration/indirect_container_spec.rb +0 -290
  47. data/spec/integration/json_serialization_spec.rb +0 -32
  48. data/spec/integration/marshal_spec.rb +0 -39
  49. data/spec/integration/nested_attribute_spec.rb +0 -177
  50. data/spec/integration/nested_hash_resources_spec.rb +0 -43
  51. data/spec/integration/persistence_spec.rb +0 -37
  52. data/spec/integration/query_result_builder_spec.rb +0 -37
  53. data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
  54. data/spec/integration/relation_delegation_spec.rb +0 -52
  55. data/spec/integration/relation_spec.rb +0 -117
  56. data/spec/integration/scoped_query_spec.rb +0 -134
  57. data/spec/integration/scoping_spec.rb +0 -48
  58. data/spec/integration/solr_hit_spec.rb +0 -32
  59. data/spec/integration/versionable_spec.rb +0 -256
  60. data/spec/integration/with_metadata_spec.rb +0 -111
  61. data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
  62. data/spec/rcov.opts +0 -2
  63. data/spec/spec.opts +0 -5
  64. data/spec/spec_helper.rb +0 -106
  65. data/spec/support/an_active_model.rb +0 -29
  66. data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
  67. data/spec/unit/active_fedora_spec.rb +0 -118
  68. data/spec/unit/aggregation/list_source_spec.rb +0 -134
  69. data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
  70. data/spec/unit/association_hash_spec.rb +0 -64
  71. data/spec/unit/attached_files_spec.rb +0 -218
  72. data/spec/unit/attributes_spec.rb +0 -146
  73. data/spec/unit/base_active_model_spec.rb +0 -28
  74. data/spec/unit/base_cma_spec.rb +0 -15
  75. data/spec/unit/base_extra_spec.rb +0 -33
  76. data/spec/unit/base_spec.rb +0 -328
  77. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
  78. data/spec/unit/callback_spec.rb +0 -65
  79. data/spec/unit/change_set_spec.rb +0 -60
  80. data/spec/unit/checksum_spec.rb +0 -25
  81. data/spec/unit/code_configurator_spec.rb +0 -41
  82. data/spec/unit/collection_proxy_spec.rb +0 -25
  83. data/spec/unit/config_spec.rb +0 -18
  84. data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
  85. data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
  86. data/spec/unit/core/logger_spec.rb +0 -18
  87. data/spec/unit/core_spec.rb +0 -242
  88. data/spec/unit/default_model_mapper_spec.rb +0 -39
  89. data/spec/unit/fedora_spec.rb +0 -31
  90. data/spec/unit/file/streaming_spec.rb +0 -33
  91. data/spec/unit/file_configurator_spec.rb +0 -295
  92. data/spec/unit/file_io_spec.rb +0 -137
  93. data/spec/unit/file_path_builder_spec.rb +0 -18
  94. data/spec/unit/file_spec.rb +0 -489
  95. data/spec/unit/files_hash_spec.rb +0 -52
  96. data/spec/unit/filter_spec.rb +0 -133
  97. data/spec/unit/finder_methods_spec.rb +0 -154
  98. data/spec/unit/fixity_service_spec.rb +0 -128
  99. data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
  100. data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
  101. data/spec/unit/has_many_association_spec.rb +0 -131
  102. data/spec/unit/indexers/global_indexer_spec.rb +0 -41
  103. data/spec/unit/indexing/map/index_object_spec.rb +0 -25
  104. data/spec/unit/indexing/map_spec.rb +0 -27
  105. data/spec/unit/indexing_service_spec.rb +0 -28
  106. data/spec/unit/indexing_spec.rb +0 -86
  107. data/spec/unit/inheritance_spec.rb +0 -60
  108. data/spec/unit/ldp_resource_spec.rb +0 -15
  109. data/spec/unit/loadable_from_json_spec.rb +0 -40
  110. data/spec/unit/logger_spec.rb +0 -19
  111. data/spec/unit/model_classifier_spec.rb +0 -49
  112. data/spec/unit/ordered_spec.rb +0 -367
  113. data/spec/unit/orders/list_node_spec.rb +0 -151
  114. data/spec/unit/orders/ordered_list_spec.rb +0 -335
  115. data/spec/unit/orders/reflection_spec.rb +0 -22
  116. data/spec/unit/pathing_spec.rb +0 -35
  117. data/spec/unit/persistence_spec.rb +0 -115
  118. data/spec/unit/property_predicate_spec.rb +0 -35
  119. data/spec/unit/property_spec.rb +0 -25
  120. data/spec/unit/query_result_builder_spec.rb +0 -31
  121. data/spec/unit/query_spec.rb +0 -307
  122. data/spec/unit/querying_spec.rb +0 -24
  123. data/spec/unit/rdf/indexing_service_spec.rb +0 -114
  124. data/spec/unit/rdf_vocab_spec.rb +0 -30
  125. data/spec/unit/readonly_spec.rb +0 -24
  126. data/spec/unit/reflection_spec.rb +0 -42
  127. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
  128. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
  129. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
  130. data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
  131. data/spec/unit/scoping_spec.rb +0 -67
  132. data/spec/unit/serializers_spec.rb +0 -19
  133. data/spec/unit/solr_config_options_spec.rb +0 -57
  134. data/spec/unit/solr_hit_spec.rb +0 -57
  135. data/spec/unit/solr_query_builder_spec.rb +0 -18
  136. data/spec/unit/solr_service_spec.rb +0 -165
  137. data/spec/unit/sparql_insert_spec.rb +0 -31
  138. data/spec/unit/validations_spec.rb +0 -92
  139. data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
  140. data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::FilePathBuilder do
4
- describe ".build" do
5
- subject { described_class.build(parent, nil, 'FOO') }
6
- let(:parent) { ActiveFedora::Base.new(id: '1234') }
7
-
8
- it { is_expected.to eq 'FOO1' }
9
-
10
- context "when some datastreams exist" do
11
- before do
12
- allow(parent).to receive(:attached_files).and_return('FOO56' => instance_double(ActiveFedora::File))
13
- end
14
-
15
- it { is_expected.to eq 'FOO57' }
16
- end
17
- end
18
- end
@@ -1,489 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::File do
4
- subject(:af_file) { described_class.new }
5
-
6
- it { is_expected.not_to be_metadata }
7
-
8
- describe "#save!" do
9
- context "when updating metadata" do
10
- before do
11
- af_file.content = 'foo'
12
- af_file.save!
13
- af_file.mime_type = 'application/pdf'
14
- end
15
-
16
- it "Updates metadata" do
17
- expect(af_file.metadata).to receive(:save)
18
- af_file.save!
19
- end
20
- end
21
- end
22
-
23
- describe "#behaves_like_io?" do
24
- subject { af_file.send(:behaves_like_io?, object) }
25
-
26
- context "with a File" do
27
- let(:object) { File.new __FILE__ }
28
- it { is_expected.to be true }
29
- end
30
-
31
- context "with a Tempfile" do
32
- after { object.close; object.unlink }
33
- let(:object) { Tempfile.new('foo') }
34
- it { is_expected.to be true }
35
- end
36
-
37
- context "with a StringIO" do
38
- let(:object) { StringIO.new('foo') }
39
- it { is_expected.to be true }
40
- end
41
- end
42
-
43
- describe "#uri" do
44
- subject(:uri) { af_file.uri }
45
-
46
- context "when the file is in an ldp:BasicContainer" do
47
- let(:parent) { ActiveFedora::Base.new(id: '1234') }
48
-
49
- context "and it's initialized with the URI" do
50
- let(:af_file) { described_class.new(parent.uri + "/FOO1") }
51
- it "works" do
52
- expect(uri.to_s).to eq "#{ActiveFedora.fedora.base_uri}/1234/FOO1"
53
- end
54
- end
55
-
56
- context "and it's initialized with an ID" do
57
- let(:af_file) { described_class.new(parent.id + "/FOO1") }
58
- it "works" do
59
- expect(uri.to_s).to eq "#{ActiveFedora.fedora.base_uri}/1234/FOO1"
60
- end
61
- end
62
- end
63
-
64
- context "when the file doesn't have a uri" do
65
- it { is_expected.to eq ::RDF::URI(nil) }
66
- end
67
- end
68
-
69
- context "content" do
70
- let(:mock_conn) do
71
- Faraday.new do |builder|
72
- builder.adapter :test, conn_stubs do |_stub|
73
- end
74
- end
75
- end
76
-
77
- let(:mock_client) do
78
- Ldp::Client.new mock_conn
79
- end
80
-
81
- let(:conn_stubs) do
82
- Faraday::Adapter::Test::Stubs.new do |stub|
83
- stub.head(path) { [200, { 'Content-Length' => '9999' }] }
84
- end
85
- end
86
-
87
- let(:path) { '/fedora/rest/test/1234/abcd' }
88
-
89
- let(:ldp_source) { Ldp::Resource.new(mock_client, path) }
90
-
91
- before do
92
- allow(af_file).to receive(:ldp_source).and_return(ldp_source)
93
- end
94
-
95
- describe '#persisted_size' do
96
- it 'loads the file size attribute from the fedora repository' do
97
- expect(af_file.size).to eq 9999
98
- end
99
-
100
- it 'returns nil without making a head request to Ldp::Resource::BinarySource if it is a new record' do
101
- allow(af_file).to receive(:new_record?).and_return(true)
102
- expect(af_file.ldp_source).not_to receive(:head)
103
- expect(af_file.persisted_size).to eq nil
104
- end
105
- end
106
-
107
- describe '#dirty_size' do
108
- context 'when content has changed from what is currently persisted' do
109
- context 'and has been set to something that has a #size method (i.e. string or File)' do
110
- it 'returns the size of the dirty content' do
111
- dirty_content = instance_double(::File)
112
- allow(dirty_content).to receive(:size) { 8_675_309 }
113
- af_file.content = dirty_content
114
- expect(af_file.size).to eq dirty_content.size
115
- end
116
- end
117
- end
118
-
119
- context 'when content has not changed from what is currently persisted' do
120
- it 'returns nil, indicating that the content is not "dirty", but its not necessarily 0 either.' do
121
- expect(af_file.dirty_size).to be_nil
122
- end
123
- end
124
- end
125
-
126
- describe '#size' do
127
- context 'when content has not changed' do
128
- it 'returns the value of .persisted_size' do
129
- expect(af_file.size).to eq af_file.persisted_size
130
- end
131
- end
132
-
133
- context 'when content has changed' do
134
- it 'returns the value of .dirty_size' do
135
- af_file.content = "i have changed!"
136
- expect(af_file.size).to eq af_file.dirty_size
137
- end
138
- end
139
-
140
- it 'returns nil when #persisted_size and #dirty_size return nil' do
141
- allow(af_file).to receive(:persisted_size) { nil }
142
- allow(af_file).to receive(:dirty_size) { nil }
143
- expect(af_file.size).to be_nil
144
- end
145
- end
146
-
147
- describe ".empty?" do
148
- it "does not be empty" do
149
- expect(af_file.empty?).to be false
150
- end
151
- end
152
-
153
- describe ".has_content?" do
154
- context "when there's content" do
155
- before do
156
- allow(af_file).to receive(:size).and_return(10)
157
- end
158
- it "returns true" do
159
- expect(af_file.has_content?).to be true
160
- end
161
- end
162
-
163
- context "when size is nil" do
164
- before do
165
- allow(af_file).to receive(:size).and_return(nil)
166
- end
167
- it "does not have content" do
168
- expect(af_file).to_not have_content
169
- end
170
- end
171
-
172
- context "when content is zero" do
173
- before do
174
- allow(af_file).to receive(:size).and_return(0)
175
- end
176
- it "returns false" do
177
- expect(af_file.has_content?).to be false
178
- end
179
- end
180
- end
181
- end
182
-
183
- context "when the file has local content" do
184
- before do
185
- af_file.uri = "http://localhost:8983/fedora/rest/test/1234/abcd"
186
- af_file.content = "hi there"
187
- end
188
-
189
- describe "#inspect" do
190
- subject { af_file.inspect }
191
- it { is_expected.to eq "#<ActiveFedora::File uri=\"http://localhost:8983/fedora/rest/test/1234/abcd\" >" }
192
- end
193
- end
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
-
212
- describe "#mime_type" do
213
- let(:parent) { ActiveFedora::Base.create }
214
- before do
215
- parent.add_file('banana', path: 'apple', mime_type: 'video/webm')
216
- parent.save!
217
- end
218
- it "persists" do
219
- expect(parent.reload.apple.mime_type).to eq "video/webm"
220
- end
221
- it "can be updated" do
222
- parent.reload
223
- parent.apple.mime_type = "text/awesome"
224
- expect(parent.apple.mime_type).to eq "text/awesome"
225
- parent.save
226
-
227
- expect(parent.reload.apple.mime_type).to eq "text/awesome"
228
- end
229
- end
230
-
231
- context "original_name" do
232
- subject { af_file.original_name }
233
-
234
- context "on a new file" do
235
- context "that has a name set locally" do
236
- before { af_file.original_name = "my_image.png" }
237
- it { is_expected.to eq "my_image.png" }
238
- end
239
-
240
- context "that doesn't have a name set locally" do
241
- it { is_expected.to be_nil }
242
- end
243
- end
244
-
245
- context "when it's saved" do
246
- let(:parent) { ActiveFedora::Base.create }
247
- before do
248
- parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm', original_name: 'my image.png')
249
- parent.save!
250
- end
251
-
252
- it "has original_name" do
253
- expect(parent.reload.abcd.original_name).to eq 'my image.png'
254
- end
255
- end
256
-
257
- context "with special characters" do
258
- let(:parent) { ActiveFedora::Base.create }
259
- before do
260
- parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm', original_name: 'my "image".png')
261
- parent.save!
262
- end
263
- it "saves OK and preserve name" do
264
- expect(parent.reload.abcd.original_name).to eq 'my "image".png'
265
- end
266
- end
267
- end
268
-
269
- context "digest" do
270
- subject(:digest) { af_file.digest }
271
-
272
- context "on a new file" do
273
- it { is_expected.to be_empty }
274
- end
275
-
276
- context "when it's saved" do
277
- let(:parent) { ActiveFedora::Base.create }
278
- before do
279
- parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm')
280
- parent.save!
281
- end
282
-
283
- it "has digest" do
284
- expect(parent.reload.abcd.digest.first).to be_kind_of RDF::URI
285
- end
286
- end
287
- context "with pre-4.3.0 predicate" do
288
- before do
289
- predicate = ::RDF::URI("http://fedora.info/definitions/v4/repository#digest")
290
- object = RDF::URI.new("urn:sha1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15")
291
- graph = ActiveTriples::Resource.new
292
- graph << RDF::Statement.new(af_file.uri, predicate, object)
293
- allow(af_file).to receive_message_chain(:metadata, :ldp_source, :graph).and_return(graph)
294
- end
295
- it "falls back on fedora:digest if premis:hasMessageDigest is not present" do
296
- expect(digest.first).to be_kind_of RDF::URI
297
- end
298
- end
299
- end
300
-
301
- describe "#checksum" do
302
- let(:digest) { RDF::URI.new("urn:sha1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15") }
303
- before do
304
- allow(af_file).to receive(:digest) { [digest] }
305
- end
306
- its(:checksum) { is_expected.to be_a(ActiveFedora::Checksum) }
307
- it "has the right value" do
308
- expect(af_file.checksum.value).to eq("f1d2d2f924e986ac86fdf7b36c94bcdf32beec15")
309
- end
310
- it "has the right algorithm" do
311
- expect(af_file.checksum.algorithm).to eq("SHA1")
312
- end
313
- end
314
-
315
- describe "#save" do
316
- let(:file) { described_class.new }
317
- context "when there is nothing to save" do
318
- it "does not write" do
319
- expect(file.ldp_source).not_to receive(:create)
320
- expect(file.save).to be false
321
- end
322
- end
323
- end
324
-
325
- describe "#create_date" do
326
- subject { af_file.create_date }
327
- describe "when new record" do
328
- it { is_expected.to be_nil }
329
- end
330
- describe "when persisted" do
331
- before do
332
- af_file.content = "foo"
333
- af_file.save!
334
- end
335
- it { is_expected.to be_a(DateTime) }
336
- end
337
- end
338
-
339
- describe "#modified_date" do
340
- subject { af_file.modified_date }
341
- describe "when new record" do
342
- it { is_expected.to be_nil }
343
- end
344
- describe "when persisted" do
345
- before do
346
- af_file.content = "foo"
347
- af_file.save!
348
- end
349
- it { is_expected.to be_a(DateTime) }
350
- end
351
- end
352
-
353
- describe "callbacks" do
354
- before do
355
- class MyFile < ActiveFedora::File
356
- after_initialize :a_init
357
- before_create :b_create
358
- after_create :a_create
359
- before_update :b_update
360
- after_update :a_update
361
- before_save :b_save
362
- after_save :a_save
363
- before_destroy :b_destroy
364
- after_destroy :a_destroy
365
-
366
- def a_init; end
367
-
368
- def b_create; end
369
-
370
- def a_create; end
371
-
372
- def b_save; end
373
-
374
- def a_save; end
375
-
376
- def b_destroy; end
377
-
378
- def a_destroy; end
379
-
380
- def b_update; end
381
-
382
- def a_update; end
383
- end
384
- end
385
-
386
- after do
387
- Object.send(:remove_const, :MyFile)
388
- end
389
-
390
- subject(:my_file) { MyFile.new }
391
-
392
- describe "initialize" do
393
- specify {
394
- expect_any_instance_of(MyFile).to receive(:a_init)
395
- MyFile.new
396
- }
397
- end
398
-
399
- describe "create" do
400
- describe "when content is not nil" do
401
- specify {
402
- expect(my_file).to receive(:b_create).once
403
- expect(my_file).to receive(:a_create).once
404
- expect(my_file).to receive(:b_save).once
405
- expect(my_file).to receive(:a_save).once
406
- my_file.content = "foo"
407
- my_file.save
408
- }
409
- end
410
- describe "when content is nil" do
411
- specify {
412
- expect(my_file).to receive(:b_create).once
413
- expect(my_file).not_to receive(:a_create)
414
- expect(my_file).to receive(:b_save).once
415
- expect(my_file).not_to receive(:a_save)
416
- my_file.save
417
- }
418
- end
419
- end
420
-
421
- describe "update" do
422
- describe "when content has changed" do
423
- specify {
424
- my_file.content = "foo"
425
- my_file.save
426
- expect(my_file).to receive(:b_save).once
427
- expect(my_file).to receive(:a_save).once
428
- expect(my_file).to receive(:b_update).once
429
- expect(my_file).to receive(:a_update).once
430
- my_file.content = "bar"
431
- my_file.save
432
- }
433
- end
434
- describe "when content has not changed" do
435
- specify {
436
- my_file.content = "foo"
437
- my_file.save
438
- expect(my_file).to receive(:b_save).once
439
- expect(my_file).to receive(:a_save)
440
- expect(my_file).to receive(:b_update).once
441
- expect(my_file).to receive(:a_update)
442
- my_file.save
443
- }
444
- end
445
- end
446
-
447
- describe "destroy" do
448
- specify {
449
- my_file.content = "foo"
450
- my_file.save
451
- expect(my_file).to receive(:b_destroy).once
452
- expect(my_file).to receive(:a_destroy).once
453
- my_file.destroy
454
- }
455
- end
456
- end
457
-
458
- describe "#new" do
459
- let(:file2) do
460
- described_class.new do |file|
461
- file.content = "My Content"
462
- file.save!
463
- end
464
- end
465
-
466
- context "when uri is passed to new" do
467
- subject { described_class.new(file2.uri).content }
468
-
469
- it { is_expected.to eq "My Content" }
470
- end
471
-
472
- context "when id is passed to new" do
473
- subject { described_class.new(file2.id).content }
474
-
475
- it { is_expected.to eq "My Content" }
476
- end
477
-
478
- context "when object responding to .uri is passed to new" do
479
- subject { described_class.new(file2).content }
480
- it { is_expected.to eq "My Content" }
481
- end
482
-
483
- context "when Array passed to new" do
484
- it "raises an expection" do
485
- expect { described_class.new([]) }.to raise_error(RuntimeError)
486
- end
487
- end
488
- end
489
- end