Module: ActionController::TestCase::Behavior
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Instance Chain:
self,
Rails::Dom::Testing::Assertions,
::ActiveSupport::Testing::ConstantLookup,
::ActionDispatch::TestProcess
|
|
Defined in: | actionpack/lib/action_controller/test_case.rb |
Class Method Summary
::ActiveSupport::Concern - Extended
Instance Attribute Summary
Instance Method Summary
- #build_request
- #build_response(klass)
-
#delete(action, *args)
Simulate a DELETE request with the given parameters and set/volley the response.
-
#get(action, *args)
Simulate a GET request with the given parameters.
-
#head(action, *args)
Simulate a HEAD request with the given parameters and set/volley the response.
- #paramify_values(hash_or_array_or_value)
-
#patch(action, *args)
Simulate a PATCH request with the given parameters and set/volley the response.
-
#post(action, *args)
Simulate a POST request with the given parameters and set/volley the response.
-
#process(action, http_method = 'GET', *args)
Simulate a HTTP request to
action
by specifying request method, parameters and set/volley the response. -
#put(action, *args)
Simulate a PUT request with the given parameters and set/volley the response.
- #setup_controller_request_and_response
-
#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) (also: #xhr)
::ActionDispatch::TestProcess - Included
#assigns, #cookies, | |
#fixture_file_upload | Shortcut for |
#flash, #redirect_to_url, #session |
DSL Calls
included
[ GitHub ]693 694 695 696 697 698
# File 'actionpack/lib/action_controller/test_case.rb', line 693
included do include ActionController::TemplateAssertions include ActionDispatch::Assertions class_attribute :_controller_class setup :setup_controller_request_and_response end
Instance Attribute Details
#request (readonly)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 459
attr_reader :response, :request
#response (readonly)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 459
attr_reader :response, :request
Instance Method Details
#build_request
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 685
def build_request TestRequest.new end
#build_response(klass)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 689
def build_response(klass) klass.new end
#delete(action, *args)
Simulate a DELETE request with the given parameters and set/volley the response. See #get for more details.
# File 'actionpack/lib/action_controller/test_case.rb', line 537
def delete(action, *args) process(action, "DELETE", *args) end
#get(action, *args)
Simulate a GET request with the given parameters.
-
action
: The controller action to call. -
parameters
: The HTTP parameters that you want to pass. This may benil
, a hash, or a string that is appropriately encoded (application/x-www-form-urlencoded
ormultipart/form-data
). -
session
: A hash of parameters to store in the session. This may benil
. -
flash
: A hash of parameters to store in the flash. This may benil
.
You can also simulate POST, PATCH, PUT, DELETE, and HEAD requests with #post, #patch, #put, #delete, and #head.
Note that the request method is not verified. The different methods are available to make the tests more expressive.
# File 'actionpack/lib/action_controller/test_case.rb', line 513
def get(action, *args) process(action, "GET", *args) end
#head(action, *args)
Simulate a HEAD request with the given parameters and set/volley the response. See #get for more details.
# File 'actionpack/lib/action_controller/test_case.rb', line 543
def head(action, *args) process(action, "HEAD", *args) end
#paramify_values(hash_or_array_or_value)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 557
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
#patch(action, *args)
Simulate a PATCH request with the given parameters and set/volley the response. See #get for more details.
# File 'actionpack/lib/action_controller/test_case.rb', line 525
def patch(action, *args) process(action, "PATCH", *args) end
#post(action, *args)
Simulate a POST request with the given parameters and set/volley the response. See #get for more details.
# File 'actionpack/lib/action_controller/test_case.rb', line 519
def post(action, *args) process(action, "POST", *args) end
#process(action, http_method = 'GET', *args)
Simulate a HTTP request to action
by specifying request method, parameters and set/volley the response.
-
action
: The controller action to call. -
http_method
: Request method used to send the http request. Possible values areGET
,POST
,PATCH
,PUT
,DELETE
,HEAD
. Defaults toGET
. -
parameters
: The HTTP parameters. This may benil
, a hash, or a string that is appropriately encoded (application/x-www-form-urlencoded
ormultipart/form-data
). -
session
: A hash of parameters to store in the session. This may benil
. -
flash
: A hash of parameters to store in the flash. This may benil
.
Example calling create
action and sending two params:
process :create, 'POST', user: { name: 'Gaurish Sharma', email: 'user@example.com' }
Example sending parameters, nil
session and setting a flash message:
process :view, 'GET', { id: 7 }, nil, { notice: 'This is flash message' }
To simulate GET
, POST
, PATCH
, PUT
, DELETE
and HEAD
requests prefer using #get, #post, #patch, #put, #delete and #head methods respectively which will make tests more expressive.
Note that the request method is not verified.
# File 'actionpack/lib/action_controller/test_case.rb', line 595
def process(action, http_method = 'GET', *args) check_required_ivars if args.first.is_a?(String) && http_method != 'HEAD' @request.env['RAW_POST_DATA'] = args.shift end parameters, session, flash = args parameters ||= {} # 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) @html_document = nil @html_scanner_document = nil unless @controller.respond_to?(:recycle!) @controller.extend(Testing::Functional) end @request.recycle! @response.recycle! @controller.recycle! @request.env['REQUEST_METHOD'] = http_method controller_class_name = @controller.class.anonymous? ? "anonymous" : @controller.class.controller_path @request.assign_parameters(@routes, controller_class_name, action.to_s, parameters) @request.session.update(session) if session @request.flash.update(flash || {}) @controller.request = @request @controller.response = @response build_request_uri(action, parameters) name = @request.parameters[:action] @controller.recycle! @controller.process(name) if = @request.env['action_dispatch.cookies'] unless @response.committed? .write(@response) end end @response.prepare! @assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {} if flash_value = @request.flash.to_session_value @request.session['flash'] = flash_value end @response end
#put(action, *args)
Simulate a PUT request with the given parameters and set/volley the response. See #get for more details.
# File 'actionpack/lib/action_controller/test_case.rb', line 531
def put(action, *args) process(action, "PUT", *args) end
#setup_controller_request_and_response
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 657
def setup_controller_request_and_response @controller = nil unless defined? @controller response_klass = TestResponse if klass = self.class.controller_class if klass < ActionController::Live response_klass = LiveTestResponse end unless @controller begin @controller = klass.new rescue warn "could not construct controller #{klass}" if $VERBOSE end end end @request = build_request @response = build_response response_klass @response.request = @request if @controller @controller.request = @request @controller.params = {} end end
#xhr(request_method, action, parameters = nil, session = nil, flash = nil)
Alias for #xml_http_request.
# File 'actionpack/lib/action_controller/test_case.rb', line 555
alias xhr :xml_http_request
#xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) Also known as: #xhr
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 547
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