aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-05-13 15:40:39 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-05-13 15:40:39 -0700
commit099e827f5757ebda559c6f656f7d24f1494867e9 (patch)
tree7a8b78e363423b912617e039cb3119c59f1b511e /activesupport
parentb93cd60949bfc8d69b271e09eda0786b200e7a8b (diff)
downloadrails-099e827f5757ebda559c6f656f7d24f1494867e9.tar.gz
rails-099e827f5757ebda559c6f656f7d24f1494867e9.tar.bz2
rails-099e827f5757ebda559c6f656f7d24f1494867e9.zip
adding more callback type coverage
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/test/callbacks_test.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/activesupport/test/callbacks_test.rb b/activesupport/test/callbacks_test.rb
index 091fe90bcc..e23ce8ffb0 100644
--- a/activesupport/test/callbacks_test.rb
+++ b/activesupport/test/callbacks_test.rb
@@ -802,6 +802,46 @@ module CallbacksTest
end
end
+ class CallbackProcTest < ActiveSupport::TestCase
+ def build_class(callback)
+ Class.new {
+ include ActiveSupport::Callbacks
+ define_callbacks :foo
+ set_callback :foo, :before, callback
+ def run; run_callbacks :foo; end
+ }
+ end
+
+ def test_proc_arity_0
+ calls = []
+ klass = build_class(->() { calls << :foo })
+ klass.new.run
+ assert_equal [:foo], calls
+ end
+
+ def test_proc_arity_1
+ calls = []
+ klass = build_class(->(o) { calls << o })
+ instance = klass.new
+ instance.run
+ assert_equal [instance], calls
+ end
+
+ def test_proc_arity_2
+ assert_raises(ArgumentError) do
+ klass = build_class(->(x,y) { })
+ klass.new.run
+ end
+ end
+
+ def test_proc_negative_called_with_empty_list
+ calls = []
+ klass = build_class(->(*args) { calls << args })
+ klass.new.run
+ assert_equal [[]], calls
+ end
+ end
+
class ConditionalTests < ActiveSupport::TestCase
def build_class(callback)
Class.new {