1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
# frozen_string_literal: true
require "abstract_unit"
require "action_controller/metal/strong_parameters"
class ParametersAccessorsTest < ActiveSupport::TestCase
setup do
ActionController::Parameters.permit_all_parameters = false
@params = ActionController::Parameters.new(
person: {
age: "32",
name: {
first: "David",
last: "Heinemeier Hansson"
},
addresses: [{ city: "Chicago", state: "Illinois" }]
}
)
end
test "parameters are not equal to the hash" do
@hash = @params.each_pair.to_h
assert_not_equal @params, @hash
end
test "not eql? to equivalent hash" do
@hash = {}
@params = ActionController::Parameters.new(@hash)
assert_not @params.eql?(@hash)
end
test "not eql? to equivalent nested hash" do
@params1 = ActionController::Parameters.new({ foo: {} })
@params2 = ActionController::Parameters.new({ foo: ActionController::Parameters.new({}) })
assert_not @params1.eql?(@params2)
end
test "not eql? when permitted is different" do
permitted = @params.permit(:person)
assert_not @params.eql?(permitted)
end
test "eql? when equivalent" do
permitted = @params.permit(:person)
assert @params.permit(:person).eql?(permitted)
end
test "has_value? converts hashes to parameters" do
params = ActionController::Parameters.new(foo: { bar: "baz" })
assert params.has_value?("bar" => "baz")
params[:foo] # converts value to AC::Params
assert params.has_value?("bar" => "baz")
end
test "has_value? works with parameters" do
params = ActionController::Parameters.new(foo: { bar: "baz" })
assert params.has_value?(ActionController::Parameters.new("bar" => "baz"))
end
end
|