aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/array_inquirer_test.rb
diff options
context:
space:
mode:
authorAkira Matsuda <ronnie@dio.jp>2017-01-15 02:38:21 +0900
committerAkira Matsuda <ronnie@dio.jp>2017-01-15 02:44:03 +0900
commitd5fbb04fab6f598b2ad5a4763672504fa81466af (patch)
tree804cde73dfec98ebb5aa220966ddc531a0dc5ffd /activesupport/test/array_inquirer_test.rb
parentc0c331bfc8ba66efa310c1c065e3b6349d97d9b2 (diff)
downloadrails-d5fbb04fab6f598b2ad5a4763672504fa81466af.tar.gz
rails-d5fbb04fab6f598b2ad5a4763672504fa81466af.tar.bz2
rails-d5fbb04fab6f598b2ad5a4763672504fa81466af.zip
AS::ArrayInquirer#respond_to_missing? should fallback to super
in case Array or any other ancestor class' respond_to_missing? was defined.
Diffstat (limited to 'activesupport/test/array_inquirer_test.rb')
-rw-r--r--activesupport/test/array_inquirer_test.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/activesupport/test/array_inquirer_test.rb b/activesupport/test/array_inquirer_test.rb
index 4d3f5b001c..3ed48dd49d 100644
--- a/activesupport/test/array_inquirer_test.rb
+++ b/activesupport/test/array_inquirer_test.rb
@@ -38,4 +38,18 @@ class ArrayInquirerTest < ActiveSupport::TestCase
assert_instance_of ActiveSupport::ArrayInquirer, result
assert_equal @array_inquirer, result
end
+
+ def test_respond_to_fallback_to_array_respond_to
+ arr = ActiveSupport::ArrayInquirer.new([:x])
+ # This kind of emulates a situation that Array#respond_to_missing? is defined
+ arr.singleton_class.class_eval do
+ def respond_to_missing?(name, _include_private = false)
+ (name == :foo) || super
+ end
+ end
+
+ assert_respond_to arr, :can_you_hear_me?
+ assert_respond_to arr, :foo
+ assert_not_respond_to arr, :nope
+ end
end