diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2017-01-06 06:23:24 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-06 06:23:24 -0500 |
commit | 98c6e4e56ca2a8f9f987e12815f7cdf66e5f1485 (patch) | |
tree | 8a8f2b725d92d6a6242a926f9e250ff698d1aa02 | |
parent | e482dce0ed35bed2ab556e95a9f9d1124d65fa15 (diff) | |
parent | d97ba3447268f6c72ca545221a22714641d98325 (diff) | |
download | rails-98c6e4e56ca2a8f9f987e12815f7cdf66e5f1485.tar.gz rails-98c6e4e56ca2a8f9f987e12815f7cdf66e5f1485.tar.bz2 rails-98c6e4e56ca2a8f9f987e12815f7cdf66e5f1485.zip |
Merge pull request #27392 from y-yagi/use_same_class_on_compact
ensure `#compact` of HWIDA to return HWIDA
-rw-r--r-- | activesupport/lib/active_support/hash_with_indifferent_access.rb | 4 | ||||
-rw-r--r-- | activesupport/test/core_ext/hash_ext_test.rb | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/hash_with_indifferent_access.rb b/activesupport/lib/active_support/hash_with_indifferent_access.rb index d3f7b46e77..79e7feaf47 100644 --- a/activesupport/lib/active_support/hash_with_indifferent_access.rb +++ b/activesupport/lib/active_support/hash_with_indifferent_access.rb @@ -269,6 +269,10 @@ module ActiveSupport dup.tap { |hash| hash.transform_values!(*args, &block) } end + def compact + dup.compact! + end + # Convert to a regular hash with string keys. def to_hash _new_hash = Hash.new diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb index bea0a84b53..05813ad388 100644 --- a/activesupport/test/core_ext/hash_ext_test.rb +++ b/activesupport/test/core_ext/hash_ext_test.rb @@ -589,6 +589,16 @@ class HashExtTest < ActiveSupport::TestCase assert_instance_of ActiveSupport::HashWithIndifferentAccess, indifferent_strings end + def test_indifferent_compact + hash_contain_nil_value = @strings.merge("z" => nil) + hash = ActiveSupport::HashWithIndifferentAccess.new(hash_contain_nil_value) + compacted_hash = hash.compact + + assert_equal(@strings, compacted_hash) + assert_equal(hash_contain_nil_value, hash) + assert_instance_of ActiveSupport::HashWithIndifferentAccess, compacted_hash + end + def test_indifferent_to_hash # Should convert to a Hash with String keys. assert_equal @strings, @mixed.with_indifferent_access.to_hash |