@@ -39,6 +39,73 @@ class ActiveStorage::ManyAttachedTest < ActiveSupport::TestCase
39
39
assert_equal "video.mp4" , @user . highlights . second . filename . to_s
40
40
end
41
41
42
+ test "attaching existing blobs to an existing, changed record" do
43
+ @user . name = "Tina"
44
+ assert @user . changed?
45
+
46
+ @user . highlights . attach create_blob ( filename : "funky.jpg" ) , create_blob ( filename : "town.jpg" )
47
+ assert_equal "funky.jpg" , @user . highlights . first . filename . to_s
48
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
49
+ assert_not @user . highlights . first . persisted?
50
+ assert_not @user . highlights . second . persisted?
51
+ assert @user . will_save_change_to_name?
52
+
53
+ @user . save!
54
+ assert_equal "funky.jpg" , @user . highlights . reload . first . filename . to_s
55
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
56
+ end
57
+
58
+ test "attaching existing blobs from signed IDs to an existing, changed record" do
59
+ @user . name = "Tina"
60
+ assert @user . changed?
61
+
62
+ @user . highlights . attach create_blob ( filename : "funky.jpg" ) . signed_id , create_blob ( filename : "town.jpg" ) . signed_id
63
+ assert_equal "funky.jpg" , @user . highlights . first . filename . to_s
64
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
65
+ assert_not @user . highlights . first . persisted?
66
+ assert_not @user . highlights . second . persisted?
67
+ assert @user . will_save_change_to_name?
68
+
69
+ @user . save!
70
+ assert_equal "funky.jpg" , @user . highlights . reload . first . filename . to_s
71
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
72
+ end
73
+
74
+ test "attaching new blobs from Hashes to an existing, changed record" do
75
+ @user . name = "Tina"
76
+ assert @user . changed?
77
+
78
+ @user . highlights . attach (
79
+ { io : StringIO . new ( "STUFF" ) , filename : "funky.jpg" , content_type : "image/jpg" } ,
80
+ { io : StringIO . new ( "THINGS" ) , filename : "town.jpg" , content_type : "image/jpeg" } )
81
+
82
+ assert_equal "funky.jpg" , @user . highlights . first . filename . to_s
83
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
84
+ assert_not @user . highlights . first . persisted?
85
+ assert_not @user . highlights . second . persisted?
86
+ assert @user . will_save_change_to_name?
87
+
88
+ @user . save!
89
+ assert_equal "funky.jpg" , @user . highlights . reload . first . filename . to_s
90
+ assert_equal "town.jpg" , @user . highlights . second . filename . to_s
91
+ end
92
+
93
+ test "attaching new blobs from uploaded files to an existing, changed record" do
94
+ @user . name = "Tina"
95
+ assert @user . changed?
96
+
97
+ @user . highlights . attach fixture_file_upload ( "racecar.jpg" ) , fixture_file_upload ( "video.mp4" )
98
+ assert_equal "racecar.jpg" , @user . highlights . first . filename . to_s
99
+ assert_equal "video.mp4" , @user . highlights . second . filename . to_s
100
+ assert_not @user . highlights . first . persisted?
101
+ assert_not @user . highlights . second . persisted?
102
+ assert @user . will_save_change_to_name?
103
+
104
+ @user . save!
105
+ assert_equal "racecar.jpg" , @user . highlights . reload . first . filename . to_s
106
+ assert_equal "video.mp4" , @user . highlights . second . filename . to_s
107
+ end
108
+
42
109
test "updating an existing record to attach existing blobs" do
43
110
@user . update! highlights : [ create_file_blob ( filename : "racecar.jpg" ) , create_file_blob ( filename : "video.mp4" ) ]
44
111
assert_equal "racecar.jpg" , @user . highlights . first . filename . to_s
@@ -220,7 +287,7 @@ class ActiveStorage::ManyAttachedTest < ActiveSupport::TestCase
220
287
end
221
288
end
222
289
223
- test "attaching new blob from Hashes to a new record" do
290
+ test "attaching new blobs from Hashes to a new record" do
224
291
User . new ( name : "Jason" ) . tap do |user |
225
292
user . highlights . attach (
226
293
{ io : StringIO . new ( "STUFF" ) , filename : "funky.jpg" , content_type : "image/jpg" } ,
@@ -229,16 +296,22 @@ class ActiveStorage::ManyAttachedTest < ActiveSupport::TestCase
229
296
assert user . new_record?
230
297
assert user . highlights . first . new_record?
231
298
assert user . highlights . second . new_record?
232
- assert_not user . highlights . first . blob . new_record?
233
- assert_not user . highlights . second . blob . new_record?
299
+ assert user . highlights . first . blob . new_record?
300
+ assert user . highlights . second . blob . new_record?
234
301
assert_equal "funky.jpg" , user . highlights . first . filename . to_s
235
302
assert_equal "town.jpg" , user . highlights . second . filename . to_s
236
- assert ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
237
- assert ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
303
+ assert_not ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
304
+ assert_not ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
238
305
239
306
user . save!
307
+ assert user . highlights . first . persisted?
308
+ assert user . highlights . second . persisted?
309
+ assert user . highlights . first . blob . persisted?
310
+ assert user . highlights . second . blob . persisted?
240
311
assert_equal "funky.jpg" , user . reload . highlights . first . filename . to_s
241
312
assert_equal "town.jpg" , user . highlights . second . filename . to_s
313
+ assert ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
314
+ assert ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
242
315
end
243
316
end
244
317
@@ -248,16 +321,22 @@ class ActiveStorage::ManyAttachedTest < ActiveSupport::TestCase
248
321
assert user . new_record?
249
322
assert user . highlights . first . new_record?
250
323
assert user . highlights . second . new_record?
251
- assert_not user . highlights . first . blob . new_record?
252
- assert_not user . highlights . second . blob . new_record?
324
+ assert user . highlights . first . blob . new_record?
325
+ assert user . highlights . second . blob . new_record?
253
326
assert_equal "racecar.jpg" , user . highlights . first . filename . to_s
254
327
assert_equal "video.mp4" , user . highlights . second . filename . to_s
255
- assert ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
256
- assert ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
328
+ assert_not ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
329
+ assert_not ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
257
330
258
331
user . save!
332
+ assert user . highlights . first . persisted?
333
+ assert user . highlights . second . persisted?
334
+ assert user . highlights . first . blob . persisted?
335
+ assert user . highlights . second . blob . persisted?
259
336
assert_equal "racecar.jpg" , user . reload . highlights . first . filename . to_s
260
337
assert_equal "video.mp4" , user . highlights . second . filename . to_s
338
+ assert ActiveStorage ::Blob . service . exist? ( user . highlights . first . key )
339
+ assert ActiveStorage ::Blob . service . exist? ( user . highlights . second . key )
261
340
end
262
341
end
263
342
0 commit comments