aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2016-03-09 09:47:46 -0700
committerSean Griffin <sean@seantheprogrammer.com>2016-03-09 09:49:23 -0700
commit5cd2beb0135faf18c978507a4be272dfc1499bb8 (patch)
treebfb5b95cd9679fd34e3448987d1e70f314125b6d /actionpack/test
parent20f2727ba4de36f8c98091340e8a89327013912f (diff)
downloadrails-5cd2beb0135faf18c978507a4be272dfc1499bb8.tar.gz
rails-5cd2beb0135faf18c978507a4be272dfc1499bb8.tar.bz2
rails-5cd2beb0135faf18c978507a4be272dfc1499bb8.zip
Add `ActionController::Parameters#dig`
This method will only be added when used with Ruby 2.3.0 or greater. This method has the same behavior as `Hash#dig`, except it will convert hashes to `ActionController::Parameters`, similar to `#[]` and `#fetch`.
Diffstat (limited to 'actionpack/test')
-rw-r--r--actionpack/test/controller/parameters/accessors_test.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/actionpack/test/controller/parameters/accessors_test.rb b/actionpack/test/controller/parameters/accessors_test.rb
index cea265f9ab..17c62dc3fe 100644
--- a/actionpack/test/controller/parameters/accessors_test.rb
+++ b/actionpack/test/controller/parameters/accessors_test.rb
@@ -194,4 +194,24 @@ class ParametersAccessorsTest < ActiveSupport::TestCase
assert_match(/permitted: true/, @params.inspect)
end
+
+ if Hash.method_defined?(:dig)
+ test "#dig delegates the dig method to its values" do
+ assert_equal "David", @params.dig(:person, :name, :first)
+ assert_equal "Chicago", @params.dig(:person, :addresses, 0, :city)
+ end
+
+ test "#dig converts hashes to parameters" do
+ assert_kind_of ActionController::Parameters, @params.dig(:person)
+ assert_kind_of ActionController::Parameters, @params.dig(:person, :addresses, 0)
+ assert @params.dig(:person, :addresses).all? do |value|
+ value.is_a?(ActionController::Parameters)
+ end
+ end
+ else
+ test "ActionController::Parameters does not respond to #dig on Ruby 2.2" do
+ assert_not ActionController::Parameters.method_defined?(:dig)
+ assert_not @params.respond_to?(:dig)
+ end
+ end
end