module ActionController::TestCase::Behavior
Attributes
request[R]
response[R]
Public Instance Methods
delete(action, parameters = nil, session = nil, flash = nil)
click to toggle source
Executes a request simulating DELETE HTTP method and set/volley the response
# File lib/action_controller/test_case.rb, line 421 def delete(action, parameters = nil, session = nil, flash = nil) process(action, parameters, session, flash, "DELETE") end
get(action, parameters = nil, session = nil, flash = nil)
click to toggle source
Executes a request simulating GET HTTP method and set/volley the response
# File lib/action_controller/test_case.rb, line 406 def get(action, parameters = nil, session = nil, flash = nil) process(action, parameters, session, flash, "GET") end
head(action, parameters = nil, session = nil, flash = nil)
click to toggle source
Executes a request simulating HEAD HTTP method and set/volley the response
# File lib/action_controller/test_case.rb, line 426 def head(action, parameters = nil, session = nil, flash = nil) process(action, parameters, session, flash, "HEAD") end
paramify_values(hash_or_array_or_value)
click to toggle source
# File lib/action_controller/test_case.rb, line 440 def paramify_values(hash_or_array_or_value) case hash_or_array_or_value when Hash Hash[hash_or_array_or_value.map{|key, value| [key, paramify_values(value)] }] when Array hash_or_array_or_value.map {|i| paramify_values(i)} when Rack::Test::UploadedFile, ActionDispatch::Http::UploadedFile hash_or_array_or_value else hash_or_array_or_value.to_param end end
post(action, parameters = nil, session = nil, flash = nil)
click to toggle source
Executes a request simulating POST HTTP method and set/volley the response
# File lib/action_controller/test_case.rb, line 411 def post(action, parameters = nil, session = nil, flash = nil) process(action, parameters, session, flash, "POST") end
process(action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
click to toggle source
# File lib/action_controller/test_case.rb, line 453 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. parameters = paramify_values(parameters) if html_format?(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 @controller.formats = nil @controller.params = nil @html_document = nil @request.env['REQUEST_METHOD'] = http_method parameters ||= {} controller_class_name = @controller.class.anonymous? ? "anonymous_controller" : @controller.class.controller_path @request.assign_parameters(@routes, controller_class_name, action.to_s, parameters) @request.session = ActionController::TestSession.new(session) if session @request.session["flash"] = @request.flash.update(flash || {}) @request.session["flash"].sweep @controller.request = @request build_request_uri(action, parameters) @controller.class.class_eval { include Testing } @controller.recycle! @controller.process_with_new_base_test(@request, @response) @assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {} @request.session.delete('flash') if @request.session['flash'].blank? @response end
put(action, parameters = nil, session = nil, flash = nil)
click to toggle source
Executes a request simulating PUT HTTP method and set/volley the response
# File lib/action_controller/test_case.rb, line 416 def put(action, parameters = nil, session = nil, flash = nil) process(action, parameters, session, flash, "PUT") end
setup_controller_request_and_response()
click to toggle source
# File lib/action_controller/test_case.rb, line 496 def setup_controller_request_and_response @request = TestRequest.new @response = TestResponse.new if klass = self.class.controller_class @controller ||= klass.new rescue nil end @request.env.delete('PATH_INFO') if defined?(@controller) && @controller @controller.request = @request @controller.params = {} end end
xhr(request_method, action, parameters = nil, session = nil, flash = nil)
Alias for: xml_http_request
xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil)
click to toggle source
# File lib/action_controller/test_case.rb, line 430 def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) @request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' @request.env['HTTP_ACCEPT'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ') __send__(request_method, action, parameters, session, flash).tap do @request.env.delete 'HTTP_X_REQUESTED_WITH' @request.env.delete 'HTTP_ACCEPT' end end
Also aliased as: xhr
Private Instance Methods
build_request_uri(action, parameters)
click to toggle source
# File lib/action_controller/test_case.rb, line 521 def build_request_uri(action, parameters) unless @request.env["PATH_INFO"] options = @controller.respond_to?(:url_options) ? @controller.__send__(:url_options).merge(parameters) : parameters options.update( :only_path => true, :action => action, :relative_url_root => nil, :_path_segments => @request.symbolized_path_parameters) url, query_string = @routes.url_for(options).split("?", 2) @request.env["SCRIPT_NAME"] = @controller.config.relative_url_root @request.env["PATH_INFO"] = url @request.env["QUERY_STRING"] = query_string || "" end end
html_format?(parameters)
click to toggle source
# File lib/action_controller/test_case.rb, line 538 def html_format?(parameters) return true unless parameters.is_a?(Hash) format = Mime[parameters[:format]] format.nil? || format.html? end