Permalink
Browse files

Paramify param values in controller tests.

  • Loading branch information...
1 parent 4b1b9ac commit 7fd726d62e8483c5bdb39c7f5b9d267e6b7fbaa6 @dchelimsky dchelimsky committed Jul 25, 2011
Showing with 29 additions and 0 deletions.
  1. +19 −0 actionpack/lib/action_controller/test_case.rb
  2. +10 −0 actionpack/test/controller/test_test.rb
@@ -395,7 +395,26 @@ def xml_http_request(request_method, action, parameters = nil, session = nil, fl
end
alias xhr :xml_http_request
+ def paramify_values(hash_or_array_or_value)
+ case hash_or_array_or_value
+ when Hash
+ hash_or_array_or_value.each do |key, value|
+ hash_or_array_or_value[key] = paramify_values(value)
+ end
+ when Array
+ hash_or_array_or_value.map {|i| paramify_values(i)}
+ when Rack::Test::UploadedFile
+ hash_or_array_or_value
+ else
+ hash_or_array_or_value.to_param
+ end
+ end
+
def process(action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
+ # Ensure that numbers and symbols passed as params are converted to
+ # proper params, as is the case when engaging rack.
+ paramify_values(parameters)
+
# Sanity check for required instance variables so we can give an
# understandable error message.
%w(@routes @controller @request @response).each do |iv_name|
@@ -493,6 +493,16 @@ def test_params_passing
)
end
+ def test_params_passing_with_fixnums
+ get :test_params, :page => {:name => "Page name", :month => 4, :year => 2004, :day => 6}
+ parsed_params = eval(@response.body)
+ assert_equal(
+ {'controller' => 'test_test/test', 'action' => 'test_params',
+ 'page' => {'name' => "Page name", 'month' => '4', 'year' => '2004', 'day' => '6'}},
+ parsed_params
+ )
+ end
+
def test_params_passing_with_frozen_values
assert_nothing_raised do
get :test_params, :frozen => 'icy'.freeze, :frozens => ['icy'.freeze].freeze

1 comment on commit 7fd726d

Contributor

dchelimsky commented on 7fd726d Mar 8, 2012

See #1203 for rationale.

Please sign in to comment.