aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/test/models
diff options
context:
space:
mode:
Diffstat (limited to 'activestorage/test/models')
-rw-r--r--activestorage/test/models/attached_test.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/activestorage/test/models/attached_test.rb b/activestorage/test/models/attached_test.rb
new file mode 100644
index 0000000000..14395e12df
--- /dev/null
+++ b/activestorage/test/models/attached_test.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+require "test_helper"
+require "database/setup"
+
+class ActiveStorage::AttachmentsTest < ActiveSupport::TestCase
+ include ActiveJob::TestHelper
+
+ setup do
+ @user = User.create!(name: "Josh")
+ end
+
+ teardown { ActiveStorage::Blob.all.each(&:purge) }
+
+ test "overriding has_one_attached methods works" do
+ # attach blob before messing with getter, which breaks `#attach`
+ @user.avatar.attach create_blob(filename: "funky.jpg")
+
+ # inherited only
+ assert_equal "funky.jpg", @user.avatar.filename.to_s
+
+ User.class_eval do
+ def avatar
+ super.filename.to_s.reverse
+ end
+ end
+
+ # override with super
+ assert_equal "funky.jpg".reverse, @user.avatar
+
+ User.send(:remove_method, :avatar)
+ end
+
+ test "overriding has_many_attached methods works" do
+ # attach blobs before messing with getter, which breaks `#attach`
+ @user.highlights.attach create_blob(filename: "funky.jpg"), create_blob(filename: "wonky.jpg")
+
+ # inherited only
+ assert_equal "funky.jpg", @user.highlights.first.filename.to_s
+ assert_equal "wonky.jpg", @user.highlights.second.filename.to_s
+
+ User.class_eval do
+ def highlights
+ super.reverse
+ end
+ end
+
+ # override with super
+ assert_equal "wonky.jpg", @user.highlights.first.filename.to_s
+ assert_equal "funky.jpg", @user.highlights.second.filename.to_s
+
+ User.send(:remove_method, :highlights)
+ end
+end