diff options
author | Myron Marston <myron.marston@gmail.com> | 2011-04-28 07:58:58 -0700 |
---|---|---|
committer | Myron Marston <myron.marston@gmail.com> | 2011-04-28 07:58:58 -0700 |
commit | 05d4653cef1c1d8d77228de26d55cf6d6a0ce20b (patch) | |
tree | 6d83604f9b4e2d5fca96bc43d41fe83444116081 /activemodel/test/cases | |
parent | bf50222b0b5417af554a9a4a8d277f4fccea8f8c (diff) | |
download | rails-05d4653cef1c1d8d77228de26d55cf6d6a0ce20b.tar.gz rails-05d4653cef1c1d8d77228de26d55cf6d6a0ce20b.tar.bz2 rails-05d4653cef1c1d8d77228de26d55cf6d6a0ce20b.zip |
Revert "Revert "Handle enabling/disabling observers at different levels of the class hierarchy.""
This reverts commit 2a25c5818b03d7d6cd63aad180bff23479dbd861.
I'm going to add another commit that keeps the same behavior of fixes
the problems of leaking memory in development.
Diffstat (limited to 'activemodel/test/cases')
-rw-r--r-- | activemodel/test/cases/observer_array_test.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/activemodel/test/cases/observer_array_test.rb b/activemodel/test/cases/observer_array_test.rb index 215ca80bb4..38e4fd59fc 100644 --- a/activemodel/test/cases/observer_array_test.rb +++ b/activemodel/test/cases/observer_array_test.rb @@ -118,5 +118,44 @@ class ObserverArrayTest < ActiveModel::TestCase ORM.observers.disable Widget end end + + test "allows #enable at the superclass level to override #disable at the subclass level when called last" do + Widget.observers.disable :all + ORM.observers.enable :all + + assert_observer_notified Widget, WidgetObserver + assert_observer_notified Budget, BudgetObserver + assert_observer_notified Widget, AuditTrail + assert_observer_notified Budget, AuditTrail + end + + test "allows #disable at the superclass level to override #enable at the subclass level when called last" do + Budget.observers.enable :audit_trail + ORM.observers.disable :audit_trail + + assert_observer_notified Widget, WidgetObserver + assert_observer_notified Budget, BudgetObserver + assert_observer_not_notified Widget, AuditTrail + assert_observer_not_notified Budget, AuditTrail + end + + test "can use the block form at different levels of the hierarchy" do + yielded = false + Widget.observers.disable :all + + ORM.observers.enable :all do + yielded = true + assert_observer_notified Widget, WidgetObserver + assert_observer_notified Budget, BudgetObserver + assert_observer_notified Widget, AuditTrail + assert_observer_notified Budget, AuditTrail + end + + assert yielded + assert_observer_not_notified Widget, WidgetObserver + assert_observer_notified Budget, BudgetObserver + assert_observer_not_notified Widget, AuditTrail + assert_observer_notified Budget, AuditTrail + end end |