aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2017-07-17 13:41:56 -0500
committerGitHub <noreply@github.com>2017-07-17 13:41:56 -0500
commita3d704bd112e15569b1493825204c97cb0624e04 (patch)
tree66d0101c66ece7cec0d1ca19e58090bab2ecf55a /activesupport/test
parentcdf4046430a9d837509f0ca4a1dde7d8c93a34f7 (diff)
parenta218a35e6602ac5591c95715d3d8fdad34009239 (diff)
downloadrails-a3d704bd112e15569b1493825204c97cb0624e04.tar.gz
rails-a3d704bd112e15569b1493825204c97cb0624e04.tar.bz2
rails-a3d704bd112e15569b1493825204c97cb0624e04.zip
Merge pull request #29757 from lugray/hash_with_indifferent_access_default
Fix HashWithIndifferentAccess#default when include?(nil)
Diffstat (limited to 'activesupport/test')
-rw-r--r--activesupport/test/hash_with_indifferent_access_test.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/activesupport/test/hash_with_indifferent_access_test.rb b/activesupport/test/hash_with_indifferent_access_test.rb
index 4acdd10de6..77fc039459 100644
--- a/activesupport/test/hash_with_indifferent_access_test.rb
+++ b/activesupport/test/hash_with_indifferent_access_test.rb
@@ -537,6 +537,32 @@ class HashWithIndifferentAccessTest < ActiveSupport::TestCase
assert_equal 1234, data.dig(:this, :views)
end
+ def test_argless_default_with_existing_nil_key
+ h = Hash.new(:default).merge(nil => "defined").with_indifferent_access
+
+ assert_equal :default, h.default
+ end
+
+ def test_default_with_argument
+ h = Hash.new { 5 }.merge(1 => 2).with_indifferent_access
+
+ assert_equal 5, h.default(1)
+ end
+
+ def test_default_proc
+ h = ActiveSupport::HashWithIndifferentAccess.new { |hash, key| key }
+
+ assert_nil h.default
+ assert_equal "foo", h.default("foo")
+ assert_equal "foo", h.default(:foo)
+ end
+
+ def test_double_conversion_with_nil_key
+ h = { nil => "defined" }.with_indifferent_access.with_indifferent_access
+
+ assert_equal nil, h[:undefined_key]
+ end
+
def test_assorted_keys_not_stringified
original = { Object.new => 2, 1 => 2, [] => true }
indiff = original.with_indifferent_access