diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-01-16 11:19:08 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-01-16 11:19:08 -0800 |
commit | f19ba681a80c0b0be604c58389ce2892c623d027 (patch) | |
tree | b8020f0e30d6dc93823e5fe9c6fe16a9ada67b74 /activerecord/test/cases/transaction_callbacks_test.rb | |
parent | f3e379f0c97149bb29a63dc9db8a2836addcd957 (diff) | |
parent | 73ba2c14cd7d7dfb2d132b18c47ade995401736f (diff) | |
download | rails-f19ba681a80c0b0be604c58389ce2892c623d027.tar.gz rails-f19ba681a80c0b0be604c58389ce2892c623d027.tar.bz2 rails-f19ba681a80c0b0be604c58389ce2892c623d027.zip |
Merge branch 'master' into adequaterecord
* master:
Make AR::Base#touch fire the after_commit and after_rollback callbacks
Fix test for cache_key + touched
Revert "methods are defined right after the module_eval, so we don't need to do"
Revert "Don't remove trailing slash from PATH_INFO for mounted apps"
Add failing test for #13369
reset column information after fiddling with `Encoding.default_internal`
we have `with_env_tz` as global test helper. Remove duplicate.
isolate class attribute assignment in `migration_test.rb`
use `teardown` for cleanup, not `setup`.
tests without transactional fixtures need to cleanup afterwards.
no need to `return skip` in tests. `skip` is enough.
methods are defined right after the module_eval, so we don't need to do any line number maths
Get rid of unused TransactionError constant
Avoid converting :on option to array twice when defining commit/rollback callbacks
Unify changelog entries about single quotes [ci skip]
Use single quotes in generated files
Diffstat (limited to 'activerecord/test/cases/transaction_callbacks_test.rb')
-rw-r--r-- | activerecord/test/cases/transaction_callbacks_test.rb | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/activerecord/test/cases/transaction_callbacks_test.rb b/activerecord/test/cases/transaction_callbacks_test.rb index 5644a35385..fe0781b7ec 100644 --- a/activerecord/test/cases/transaction_callbacks_test.rb +++ b/activerecord/test/cases/transaction_callbacks_test.rb @@ -1,9 +1,11 @@ require "cases/helper" +require 'models/owner' +require 'models/pet' require 'models/topic' class TransactionCallbacksTest < ActiveRecord::TestCase self.use_transactional_fixtures = false - fixtures :topics + fixtures :topics, :owners, :pets class ReplyWithCallbacks < ActiveRecord::Base self.table_name = :topics @@ -120,6 +122,18 @@ class TransactionCallbacksTest < ActiveRecord::TestCase assert_equal [], reply.history end + def test_only_call_after_commit_on_update_after_transaction_commits_for_existing_record_on_touch + @first.after_commit_block(:create){|r| r.history << :commit_on_create} + @first.after_commit_block(:update){|r| r.history << :commit_on_update} + @first.after_commit_block(:destroy){|r| r.history << :commit_on_destroy} + @first.after_rollback_block(:create){|r| r.history << :rollback_on_create} + @first.after_rollback_block(:update){|r| r.history << :rollback_on_update} + @first.after_rollback_block(:destroy){|r| r.history << :rollback_on_destroy} + + @first.touch + assert_equal [:commit_on_update], @first.history + end + def test_call_after_rollback_after_transaction_rollsback @first.after_commit_block{|r| r.history << :after_commit} @first.after_rollback_block{|r| r.history << :after_rollback} @@ -148,6 +162,22 @@ class TransactionCallbacksTest < ActiveRecord::TestCase assert_equal [:rollback_on_update], @first.history end + def test_only_call_after_rollback_on_update_after_transaction_rollsback_for_existing_record_on_touch + @first.after_commit_block(:create){|r| r.history << :commit_on_create} + @first.after_commit_block(:update){|r| r.history << :commit_on_update} + @first.after_commit_block(:destroy){|r| r.history << :commit_on_destroy} + @first.after_rollback_block(:create){|r| r.history << :rollback_on_create} + @first.after_rollback_block(:update){|r| r.history << :rollback_on_update} + @first.after_rollback_block(:destroy){|r| r.history << :rollback_on_destroy} + + Topic.transaction do + @first.touch + raise ActiveRecord::Rollback + end + + assert_equal [:rollback_on_update], @first.history + end + def test_only_call_after_rollback_on_destroy_after_transaction_rollsback_for_destroyed_record @first.after_commit_block(:create){|r| r.history << :commit_on_create} @first.after_commit_block(:update){|r| r.history << :commit_on_update} @@ -279,6 +309,21 @@ class TransactionCallbacksTest < ActiveRecord::TestCase def test_after_commit_callbacks_should_validate_on_condition assert_raise(ArgumentError) { Topic.send(:after_commit, :on => :save) } 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 + flag = false + + owner.on_after_commit do + flag = true + end + + pet.name = "Fluffy the Third" + pet.save + + assert flag + end end class CallbacksOnMultipleActionsTest < ActiveRecord::TestCase |