aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-05-05 02:53:32 +0900
committerGitHub <noreply@github.com>2018-05-05 02:53:32 +0900
commit5eaec23b89a83763b59bd017d872d35feea70af1 (patch)
treed65c119951299ccb02902a7b813402c88c307a52 /activerecord/test
parent99e4bb735d955318a7503c404d83c3314350ba20 (diff)
parenta779b1a08bb73be2b50d42ae69b3946de98e5af4 (diff)
downloadrails-5eaec23b89a83763b59bd017d872d35feea70af1.tar.gz
rails-5eaec23b89a83763b59bd017d872d35feea70af1.tar.bz2
rails-5eaec23b89a83763b59bd017d872d35feea70af1.zip
Merge pull request #32807 from bdurand/fix_committed_disable_callbacks
Fix logic on disabling afer_commit callbacks
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/transaction_callbacks_test.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/activerecord/test/cases/transaction_callbacks_test.rb b/activerecord/test/cases/transaction_callbacks_test.rb
index e89ac53732..05941c75ac 100644
--- a/activerecord/test/cases/transaction_callbacks_test.rb
+++ b/activerecord/test/cases/transaction_callbacks_test.rb
@@ -367,6 +367,26 @@ class TransactionCallbacksTest < ActiveRecord::TestCase
assert_match(/:on conditions for after_commit and after_rollback callbacks have to be one of \[:create, :destroy, :update\]/, e.message)
end
+ def test_after_commit_chain_not_called_on_errors
+ record_1 = TopicWithCallbacks.create!
+ record_2 = TopicWithCallbacks.create!
+ record_3 = TopicWithCallbacks.create!
+ callbacks = []
+ record_1.after_commit_block { raise }
+ record_2.after_commit_block { callbacks << record_2.id }
+ record_3.after_commit_block { callbacks << record_3.id }
+ begin
+ TopicWithCallbacks.transaction do
+ record_1.save!
+ record_2.save!
+ record_3.save!
+ end
+ rescue
+ # From record_1.after_commit
+ end
+ assert_equal [], callbacks
+ end
+
def test_saving_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_call_callbacks_on_the_parent_object
pet = Pet.first
owner = pet.owner