aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/transactions_test.rb
diff options
context:
space:
mode:
authorArthur Neves <arthurnn@gmail.com>2014-08-08 15:37:38 -0400
committerArthur Neves <arthurnn@gmail.com>2014-08-15 16:04:02 -0400
commit0002954512364f2f69d28798f7a79aa8e27d7b6b (patch)
tree1d50aa0c2a23d3964ae2ee29d03939c855614955 /activerecord/test/cases/transactions_test.rb
parenta59b9e2284353dcf8cf6d77b97aaa4255563c807 (diff)
downloadrails-0002954512364f2f69d28798f7a79aa8e27d7b6b.tar.gz
rails-0002954512364f2f69d28798f7a79aa8e27d7b6b.tar.bz2
rails-0002954512364f2f69d28798f7a79aa8e27d7b6b.zip
Use *_transaction methods in TransactionManager
Use `commit_transaction`/`rollback_transaction` on `within_new_transaction` method, so they make sure they `pop` the transaction from the stack before calling the methods `commit`/`rollback`.
Diffstat (limited to 'activerecord/test/cases/transactions_test.rb')
-rw-r--r--activerecord/test/cases/transactions_test.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/activerecord/test/cases/transactions_test.rb b/activerecord/test/cases/transactions_test.rb
index b4849222b8..9cfe041de2 100644
--- a/activerecord/test/cases/transactions_test.rb
+++ b/activerecord/test/cases/transactions_test.rb
@@ -80,6 +80,30 @@ class TransactionTest < ActiveRecord::TestCase
end
end
+ def test_number_of_transactions_in_commit
+ num = nil
+
+ Topic.connection.class_eval do
+ alias :real_commit_db_transaction :commit_db_transaction
+ define_method(:commit_db_transaction) do
+ num = transaction_manager.open_transactions
+ real_commit_db_transaction
+ end
+ end
+
+ Topic.transaction do
+ @first.approved = true
+ @first.save!
+ end
+
+ assert_equal 0, num
+ ensure
+ Topic.connection.class_eval do
+ remove_method :commit_db_transaction
+ alias :commit_db_transaction :real_commit_db_transaction rescue nil
+ end
+ end
+
def test_successful_with_instance_method
@first.transaction do
@first.approved = true