aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/transaction_callbacks_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremykemper@gmail.com>2015-01-20 09:53:15 -0700
committerJeremy Kemper <jeremykemper@gmail.com>2015-01-20 09:53:15 -0700
commitb477ad54e586326b33528c4d68930e2efa73c72b (patch)
tree00847e02dfe737124bb09ad274563db7178aae02 /activerecord/test/cases/transaction_callbacks_test.rb
parent7675364fe0f51d539fb35eb005dfba3ca521ea47 (diff)
parenteb72e349b205c47a64faa5d6fe9f831aa7fdddf3 (diff)
downloadrails-b477ad54e586326b33528c4d68930e2efa73c72b.tar.gz
rails-b477ad54e586326b33528c4d68930e2efa73c72b.tar.bz2
rails-b477ad54e586326b33528c4d68930e2efa73c72b.zip
Merge pull request #18458 from brainopia/fix_after_commit_for_fixtures
Support after_commit callbacks in transactional fixtures
Diffstat (limited to 'activerecord/test/cases/transaction_callbacks_test.rb')
-rw-r--r--activerecord/test/cases/transaction_callbacks_test.rb27
1 files changed, 13 insertions, 14 deletions
diff --git a/activerecord/test/cases/transaction_callbacks_test.rb b/activerecord/test/cases/transaction_callbacks_test.rb
index 185fc22e98..9804707d00 100644
--- a/activerecord/test/cases/transaction_callbacks_test.rb
+++ b/activerecord/test/cases/transaction_callbacks_test.rb
@@ -4,7 +4,6 @@ require 'models/pet'
require 'models/topic'
class TransactionCallbacksTest < ActiveRecord::TestCase
- self.use_transactional_fixtures = false
fixtures :topics, :owners, :pets
class ReplyWithCallbacks < ActiveRecord::Base
@@ -200,21 +199,21 @@ class TransactionCallbacksTest < ActiveRecord::TestCase
end
def test_call_after_rollback_when_commit_fails
- @first.class.connection.singleton_class.send(:alias_method, :real_method_commit_db_transaction, :commit_db_transaction)
- begin
- @first.class.connection.singleton_class.class_eval do
- def commit_db_transaction; raise "boom!"; end
+ @first.after_commit_block { |r| r.history << :after_commit }
+ @first.after_rollback_block { |r| r.history << :after_rollback }
+
+ assert_raises RuntimeError do
+ @first.transaction do
+ tx = @first.class.connection.transaction_manager.current_transaction
+ def tx.commit
+ raise
+ end
+
+ @first.save
end
-
- @first.after_commit_block{|r| r.history << :after_commit}
- @first.after_rollback_block{|r| r.history << :after_rollback}
-
- assert !@first.save rescue nil
- assert_equal [:after_rollback], @first.history
- ensure
- @first.class.connection.singleton_class.send(:remove_method, :commit_db_transaction)
- @first.class.connection.singleton_class.send(:alias_method, :commit_db_transaction, :real_method_commit_db_transaction)
end
+
+ assert_equal [:after_rollback], @first.history
end
def test_only_call_after_rollback_on_records_rolled_back_to_a_savepoint