mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #4272 from apotonick/ac-process-rebase
Ac process rebase
This commit is contained in:
commit
b627923b3c
2 changed files with 74 additions and 25 deletions
|
@ -252,6 +252,12 @@ module ActionController
|
|||
# end
|
||||
# end
|
||||
#
|
||||
# You can also send a real document in the simulated HTTP request.
|
||||
#
|
||||
# def test_create
|
||||
# json = {:book => { :title => "Love Hina" }}.to_json
|
||||
# post :create, json
|
||||
#
|
||||
# == Special instance variables
|
||||
#
|
||||
# ActionController::TestCase will also automatically provide the following instance
|
||||
|
@ -376,23 +382,23 @@ module ActionController
|
|||
end
|
||||
|
||||
# Executes a request simulating GET HTTP method and set/volley the response
|
||||
def get(action, parameters = nil, session = nil, flash = nil)
|
||||
process(action, parameters, session, flash, "GET")
|
||||
def get(action, *args)
|
||||
process(action, "GET", *args)
|
||||
end
|
||||
|
||||
# Executes a request simulating POST HTTP method and set/volley the response
|
||||
def post(action, parameters = nil, session = nil, flash = nil)
|
||||
process(action, parameters, session, flash, "POST")
|
||||
def post(action, *args)
|
||||
process(action, "POST", *args)
|
||||
end
|
||||
|
||||
# Executes a request simulating PUT HTTP method and set/volley the response
|
||||
def put(action, parameters = nil, session = nil, flash = nil)
|
||||
process(action, parameters, session, flash, "PUT")
|
||||
def put(action, *args)
|
||||
process(action, "PUT", *args)
|
||||
end
|
||||
|
||||
# Executes a request simulating DELETE HTTP method and set/volley the response
|
||||
def delete(action, parameters = nil, session = nil, flash = nil)
|
||||
process(action, parameters, session, flash, "DELETE")
|
||||
def delete(action, *args)
|
||||
process(action, "DELETE", *args)
|
||||
end
|
||||
|
||||
# Executes a request simulating HEAD HTTP method and set/volley the response
|
||||
|
@ -423,19 +429,20 @@ module ActionController
|
|||
end
|
||||
end
|
||||
|
||||
def process(action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
|
||||
def process(action, http_method = 'GET', *args)
|
||||
check_required_ivars
|
||||
http_method, args = handle_old_process_api(http_method, args)
|
||||
|
||||
if args.first.is_a?(String)
|
||||
@request.env['RAW_POST_DATA'] = args.shift
|
||||
end
|
||||
|
||||
parameters, session, flash = args
|
||||
|
||||
# Ensure that numbers and symbols passed as params are converted to
|
||||
# proper params, as is the case when engaging rack.
|
||||
parameters = 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|
|
||||
if !(instance_variable_names.include?(iv_name) || instance_variable_names.include?(iv_name.to_sym)) || instance_variable_get(iv_name).nil?
|
||||
raise "#{iv_name} is nil: make sure you set it in your test's setup method."
|
||||
end
|
||||
end
|
||||
|
||||
@request.recycle!
|
||||
@response.recycle!
|
||||
@controller.response_body = nil
|
||||
|
@ -496,6 +503,26 @@ module ActionController
|
|||
end
|
||||
|
||||
private
|
||||
def check_required_ivars
|
||||
# Sanity check for required instance variables so we can give an
|
||||
# understandable error message.
|
||||
%w(@routes @controller @request @response).each do |iv_name|
|
||||
if !(instance_variable_names.include?(iv_name) || instance_variable_names.include?(iv_name.to_sym)) || instance_variable_get(iv_name).nil?
|
||||
raise "#{iv_name} is nil: make sure you set it in your test's setup method."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def handle_old_process_api(http_method, args)
|
||||
# 4.0: Remove this method.
|
||||
if http_method.is_a?(Hash)
|
||||
ActiveSupport::Deprecation.warn("TestCase#process now expects the HTTP method as second argument: process(action, http_method, params, session, flash)")
|
||||
args.unshift(http_method)
|
||||
http_method = args.last.is_a?(String) ? args.last : "GET"
|
||||
end
|
||||
|
||||
[http_method, args]
|
||||
end
|
||||
|
||||
def build_request_uri(action, parameters)
|
||||
unless @request.env["PATH_INFO"]
|
||||
|
|
|
@ -171,6 +171,21 @@ XML
|
|||
|
||||
assert_equal params.to_query, @response.body
|
||||
end
|
||||
|
||||
def test_document_body_and_params_with_post
|
||||
post :test_params, :id => 1
|
||||
assert_equal("{\"id\"=>\"1\", \"controller\"=>\"test_test/test\", \"action\"=>\"test_params\"}", @response.body)
|
||||
end
|
||||
|
||||
def test_document_body_with_post
|
||||
post :render_body, "document body"
|
||||
assert_equal "document body", @response.body
|
||||
end
|
||||
|
||||
def test_document_body_with_put
|
||||
put :render_body, "document body"
|
||||
assert_equal "document body", @response.body
|
||||
end
|
||||
|
||||
def test_process_without_flash
|
||||
process :set_flash
|
||||
|
@ -178,12 +193,12 @@ XML
|
|||
end
|
||||
|
||||
def test_process_with_flash
|
||||
process :set_flash, nil, nil, { "test" => "value" }
|
||||
process :set_flash, "GET", nil, nil, { "test" => "value" }
|
||||
assert_equal '>value<', flash['test']
|
||||
end
|
||||
|
||||
def test_process_with_flash_now
|
||||
process :set_flash_now, nil, nil, { "test_now" => "value_now" }
|
||||
process :set_flash_now, "GET", nil, nil, { "test_now" => "value_now" }
|
||||
assert_equal '>value_now<', flash['test_now']
|
||||
end
|
||||
|
||||
|
@ -196,7 +211,7 @@ XML
|
|||
end
|
||||
|
||||
def test_process_with_session_arg
|
||||
process :no_op, nil, { 'string' => 'value1', :symbol => 'value2' }
|
||||
process :no_op, "GET", nil, { 'string' => 'value1', :symbol => 'value2' }
|
||||
assert_equal 'value1', session['string']
|
||||
assert_equal 'value1', session[:string]
|
||||
assert_equal 'value2', session['symbol']
|
||||
|
@ -227,18 +242,25 @@ XML
|
|||
end
|
||||
|
||||
def test_process_with_request_uri_with_params
|
||||
process :test_uri, :id => 7
|
||||
process :test_uri, "GET", :id => 7
|
||||
assert_equal "/test_test/test/test_uri/7", @response.body
|
||||
end
|
||||
|
||||
def test_process_with_old_api
|
||||
assert_deprecated do
|
||||
process :test_uri, :id => 7
|
||||
assert_equal "/test_test/test/test_uri/7", @response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_process_with_request_uri_with_params_with_explicit_uri
|
||||
@request.env['PATH_INFO'] = "/explicit/uri"
|
||||
process :test_uri, :id => 7
|
||||
process :test_uri, "GET", :id => 7
|
||||
assert_equal "/explicit/uri", @response.body
|
||||
end
|
||||
|
||||
def test_process_with_query_string
|
||||
process :test_query_string, :q => 'test'
|
||||
process :test_query_string, "GET", :q => 'test'
|
||||
assert_equal "q=test", @response.body
|
||||
end
|
||||
|
||||
|
@ -250,9 +272,9 @@ XML
|
|||
end
|
||||
|
||||
def test_multiple_calls
|
||||
process :test_only_one_param, :left => true
|
||||
process :test_only_one_param, "GET", :left => true
|
||||
assert_equal "OK", @response.body
|
||||
process :test_only_one_param, :right => true
|
||||
process :test_only_one_param, "GET", :right => true
|
||||
assert_equal "OK", @response.body
|
||||
end
|
||||
|
Loading…
Reference in a new issue