Revision e63d0123
Added by Dominic Cleal over 7 years ago
test/unit/concerns/parameters/keep_param_test.rb | ||
---|---|---|
|
||
test "retains parameter within top-level hash" do
|
||
params = ActionController::Parameters.new(:user => {:login => 'foo'})
|
||
returned = keep_param(params, 'user', :login) { {} }
|
||
returned = keep_param(params, 'user', :login) { params.permit(:another) }
|
||
assert_kind_of ActionController::Parameters, returned
|
||
assert_equal 'foo', returned[:login]
|
||
end
|
||
|
||
test "retains multiple parameters" do
|
||
params = ActionController::Parameters.new(:user => {:login => 'foo', :other => 'bar'})
|
||
returned = keep_param(params, 'user', :login, :other) { {} }
|
||
returned = keep_param(params, 'user', :login, :other) { params.permit(:another) }
|
||
assert_equal 'foo', returned[:login]
|
||
assert_equal 'bar', returned[:other]
|
||
end
|
||
|
||
test "ignores unknown parameters" do
|
||
params = ActionController::Parameters.new(:user => {:login => 'foo'})
|
||
returned = keep_param(params, 'user', :login, :other) { {} }
|
||
returned = keep_param(params, 'user', :login, :other) { params.permit(:another) }
|
||
assert_equal 'foo', returned[:login]
|
||
refute returned.has_key?(:other)
|
||
end
|
||
|
||
test "doesn't modify input hash" do
|
||
params = ActionController::Parameters.new(:user => {:login => 'foo'})
|
||
returned = keep_param(params, 'user', :login) { {:login => 'foo'} }
|
||
returned = keep_param(params, 'user', :login) { params.permit(:another) }
|
||
assert_equal 'foo', returned[:login]
|
||
assert_equal 'foo', params[:user][:login]
|
||
end
|
Also available in: Unified diff
fixes #18568 - replace deprecated AC::Parameters#update
The #update method in Rails 5 is returning a HWIA rather than the
ActionController::Parameters instance, causing keep_param to return the
wrong object type. It is also deprecated in 5.0, so replace it with a
simpler and supported assignment through #[]=.