aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
diff options
context:
space:
mode:
authorkennyj <kennyj@gmail.com>2012-01-22 03:23:40 +0900
committerJosé Valim <jose.valim@gmail.com>2012-01-24 09:55:23 +0100
commitdc826f9977650c105e9bfd308d6d4fc71bb6ec6e (patch)
treed78d65724bc61a9f6f4f053fd275aea9b8a815b9 /activesupport/test
parent1a56a761530e3adf043a9d45ca6e1e90114f6a0e (diff)
downloadrails-dc826f9977650c105e9bfd308d6d4fc71bb6ec6e.tar.gz
rails-dc826f9977650c105e9bfd308d6d4fc71bb6ec6e.tar.bz2
rails-dc826f9977650c105e9bfd308d6d4fc71bb6ec6e.zip
Fix GH #4344. A defined callback in extended module is called too.
Conflicts: activesupport/test/callbacks_test.rb
Diffstat (limited to 'activesupport/test')
-rw-r--r--activesupport/test/callbacks_test.rb65
1 files changed, 61 insertions, 4 deletions
diff --git a/activesupport/test/callbacks_test.rb b/activesupport/test/callbacks_test.rb
index e723121bb4..c88e7550be 100644
--- a/activesupport/test/callbacks_test.rb
+++ b/activesupport/test/callbacks_test.rb
@@ -298,7 +298,7 @@ module CallbacksTest
end
end
end
-
+
class AroundPersonResult < MySuper
attr_reader :result
@@ -309,7 +309,7 @@ module CallbacksTest
def tweedle_dum
@result = yield
end
-
+
def tweedle_1
:tweedle_1
end
@@ -317,7 +317,7 @@ module CallbacksTest
def tweedle_2
:tweedle_2
end
-
+
def save
run_callbacks :save do
:running
@@ -345,6 +345,55 @@ module CallbacksTest
end
end
+
+ module ExtendModule
+ def self.extended(base)
+ base.class_eval do
+ set_callback :save, :before, :record3
+ end
+ end
+ def record3
+ @recorder << 3
+ end
+ end
+
+ module IncludeModule
+ def self.included(base)
+ base.class_eval do
+ set_callback :save, :before, :record2
+ end
+ end
+ def record2
+ @recorder << 2
+ end
+ end
+
+ class ExtendCallbacks
+
+ include ActiveSupport::Callbacks
+
+ define_callbacks :save
+ set_callback :save, :before, :record1
+
+ include IncludeModule
+
+ def save
+ run_callbacks :save
+ end
+
+ attr_reader :recorder
+
+ def initialize
+ @recorder = []
+ end
+
+ private
+
+ def record1
+ @recorder << 1
+ end
+ end
+
class AroundCallbacksTest < Test::Unit::TestCase
def test_save_around
around = AroundPerson.new
@@ -363,7 +412,7 @@ module CallbacksTest
], around.history
end
end
-
+
class AroundCallbackResultTest < Test::Unit::TestCase
def test_save_around
around = AroundPersonResult.new
@@ -646,4 +695,12 @@ module CallbacksTest
end
end
+ class ExtendCallbacksTest < Test::Unit::TestCase
+ def test_save
+ model = ExtendCallbacks.new.extend ExtendModule
+ model.save
+ assert_equal [1, 2, 3], model.recorder
+ end
+ end
+
end