diff options
author | Eugene Kenny <elkenny@gmail.com> | 2017-05-10 23:48:46 +0100 |
---|---|---|
committer | Eugene Kenny <elkenny@gmail.com> | 2017-05-10 23:48:46 +0100 |
commit | fb0fae9747ceec065e75867ea83afb713a5b449b (patch) | |
tree | 781aedc15df9c301bc30e714a44d6748fd91edd6 /actionpack/test/controller/parameters | |
parent | 97bd56e674603529d96c6f6e85d695dd24208afb (diff) | |
download | rails-fb0fae9747ceec065e75867ea83afb713a5b449b.tar.gz rails-fb0fae9747ceec065e75867ea83afb713a5b449b.tar.bz2 rails-fb0fae9747ceec065e75867ea83afb713a5b449b.zip |
Pass block in ActionController::Parameters#delete
In order to fully support the same interface as `Hash#delete`, we need
to pass the block through to the underlying method, not just the key.
This used to work correctly, but it regressed when
`ActionController::Parameters` stopped inheriting from `Hash` in 5.0.
Diffstat (limited to 'actionpack/test/controller/parameters')
-rw-r--r-- | actionpack/test/controller/parameters/mutators_test.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/actionpack/test/controller/parameters/mutators_test.rb b/actionpack/test/controller/parameters/mutators_test.rb index e61bbdbe13..2c36f488c6 100644 --- a/actionpack/test/controller/parameters/mutators_test.rb +++ b/actionpack/test/controller/parameters/mutators_test.rb @@ -25,6 +25,27 @@ class ParametersMutatorsTest < ActiveSupport::TestCase assert_not @params.delete(:person).permitted? end + test "delete returns the value when the key is present" do + assert_equal "32", @params[:person].delete(:age) + end + + test "delete removes the entry when the key present" do + @params[:person].delete(:age) + assert_not @params[:person].key?(:age) + end + + test "delete returns nil when the key is not present" do + assert_equal nil, @params[:person].delete(:first_name) + end + + test "delete returns the value of the given block when the key is not present" do + assert_equal "David", @params[:person].delete(:first_name) { "David" } + end + + test "delete yields the key to the given block when the key is not present" do + assert_equal "first_name: David", @params[:person].delete(:first_name) { |k| "#{k}: David" } + end + test "delete_if retains permitted status" do @params.permit! assert @params.delete_if { |k| k == "person" }.permitted? |