adding test to demonstrate inconsistencies in the AS::Callbacks api

This commit is contained in:
Aaron Patterson 2013-05-08 10:07:19 -07:00
parent ce71606aba
commit 3df92d981b

@ -801,4 +801,45 @@ def test_excludes_duplicates_in_one_call
assert_equal ["two", "one", "three", "yielded"], model.record
end
end
class AddCallbackTypeTest < ActiveSupport::TestCase
def build_class(callback, n = 10)
Class.new {
include ActiveSupport::Callbacks
define_callbacks :foo
n.times { set_callback :foo, callback }
}
end
def test_class
calls = []
callback = Class.new {
define_singleton_method(:before) { |o| calls << o }
}
build_class(callback).new.run_callbacks :foo
assert_equal 10, calls.length
end
def test_lambda
calls = []
build_class(->(o) { calls << o }).new.run_callbacks :foo
assert_equal 10, calls.length
end
def test_symbol
calls = []
klass = build_class(:bar)
klass.class_eval { define_method(:bar) { calls << klass } }
klass.new.run_callbacks :foo
assert_equal 1, calls.length
end
def test_string
calls = []
klass = build_class("bar")
klass.class_eval { define_method(:bar) { calls << klass } }
klass.new.run_callbacks :foo
assert_equal 1, calls.length
end
end
end