mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
adding tests for lambdas as conditions
This commit is contained in:
parent
cecef59fa2
commit
ece76f3840
2 changed files with 41 additions and 1 deletions
|
@ -314,7 +314,7 @@ module ActiveSupport
|
||||||
@klass.send(:define_method, method_name, &filter)
|
@klass.send(:define_method, method_name, &filter)
|
||||||
return method_name if filter.arity <= 0
|
return method_name if filter.arity <= 0
|
||||||
|
|
||||||
method_name << (filter.arity == 1 ? "(self)" : " self, ::Proc.new ")
|
method_name << (filter.arity == 1 ? "(self)" : "(self, ::Proc.new)")
|
||||||
else
|
else
|
||||||
method_name = _method_name_for_object_filter(kind, filter)
|
method_name = _method_name_for_object_filter(kind, filter)
|
||||||
@klass.send(:define_method, "#{method_name}_object") { filter }
|
@klass.send(:define_method, "#{method_name}_object") { filter }
|
||||||
|
|
|
@ -802,6 +802,46 @@ module CallbacksTest
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class ConditionalTests < ActiveSupport::TestCase
|
||||||
|
def build_class(callback)
|
||||||
|
Class.new {
|
||||||
|
include ActiveSupport::Callbacks
|
||||||
|
define_callbacks :foo
|
||||||
|
set_callback :foo, :before, :foo, :if => callback
|
||||||
|
def foo; end
|
||||||
|
def run; run_callbacks :foo; end
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_proc_negative_arity # passes an empty list if *args
|
||||||
|
z = []
|
||||||
|
object = build_class(->(*args) { z << args }).new
|
||||||
|
object.run
|
||||||
|
assert_equal [], z.flatten
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_proc_arity0
|
||||||
|
z = []
|
||||||
|
object = build_class(->() { z << 0 }).new
|
||||||
|
object.run
|
||||||
|
assert_equal [0], z
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_proc_arity1
|
||||||
|
z = []
|
||||||
|
object = build_class(->(x) { z << x }).new
|
||||||
|
object.run
|
||||||
|
assert_equal [object], z
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_proc_arity2
|
||||||
|
assert_raises(ArgumentError) do
|
||||||
|
object = build_class(->(a,b) { }).new
|
||||||
|
object.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class CallbackTypeTest < ActiveSupport::TestCase
|
class CallbackTypeTest < ActiveSupport::TestCase
|
||||||
def build_class(callback, n = 10)
|
def build_class(callback, n = 10)
|
||||||
Class.new {
|
Class.new {
|
||||||
|
|
Loading…
Reference in a new issue