Namespace
Module
Methods
- build_response
- controller_class_name
- delete
- generated_path
- get
- head
- patch
- post
- process
- put
- query_parameter_names
- setup_controller_request_and_response
Included Modules
- ActionDispatch::TestProcess
- ActiveSupport::Testing::ConstantLookup
- Rails::Dom::Testing::Assertions
- ActionDispatch::Assertions
Attributes
[R] | request | |
[R] | response |
Instance Public methods
build_response(klass)
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 542
def build_response(klass)
klass.create
end
🔎 See on GitHub
controller_class_name()
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 502
def controller_class_name
@controller.class.anonymous? ? "anonymous" : @controller.class.controller_path
end
🔎 See on GitHub
delete(action, **args)
Simulate a DELETE request with the given parameters and set/volley the response. See get
for more details.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 423
def delete(action, **args)
process(action, method: "DELETE", **args)
end
🔎 See on GitHub
generated_path(generated_extras)
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 506
def generated_path(generated_extras)
generated_extras[0]
end
🔎 See on GitHub
get(action, **args)
Simulate a GET request with the given parameters.
-
action
: The controller action to call. -
params
: The hash with HTTP parameters that you want to pass. This may benil
. -
body
: The request body with 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
. Example sending parameters, session and setting a flash message:
get :show,
params: { id: 7 },
session: { user_id: 1 },
flash: { notice: 'This is flash message' }
Note that the request method is not verified. The different methods are available to make the tests more expressive.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 397
def get(action, **args)
res = process(action, method: "GET", **args)
cookies.update res.cookies
res
end
🔎 See on GitHub
head(action, **args)
Simulate a HEAD request with the given parameters and set/volley the response. See get
for more details.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 429
def head(action, **args)
process(action, method: "HEAD", **args)
end
🔎 See on GitHub
patch(action, **args)
Simulate a PATCH request with the given parameters and set/volley the response. See get
for more details.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 411
def patch(action, **args)
process(action, method: "PATCH", **args)
end
🔎 See on GitHub
post(action, **args)
Simulate a POST request with the given parameters and set/volley the response. See get
for more details.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 405
def post(action, **args)
process(action, method: "POST", **args)
end
🔎 See on GitHub
process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)
Simulate an HTTP request to action
by specifying request method, parameters and set/volley the response.
-
action
: The controller action to call. -
method
: Request method used to send the HTTP request. Possible values areGET
,POST
,PATCH
,PUT
,DELETE
,HEAD
. Defaults toGET
. Can be a symbol. -
params
: The hash with HTTP parameters that you want to pass. This may benil
. -
body
: The request body with 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
. -
format
: Request format. Defaults tonil
. Can be string or symbol. -
as
: Content type. Defaults tonil
. Must be a symbol that corresponds to a mime type.
Example calling create
action and sending two params:
process :create,
method: 'POST',
params: {
user: { name: 'Gaurish Sharma', email: 'user@example.com' }
},
session: { user_id: 1 },
flash: { 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.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 463
def process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)
check_required_ivars
action = +action.to_s
http_method = method.to_s.upcase
@html_document = nil
cookies.update(@request.cookies)
cookies.update_cookies_from_jar
@request.set_header "HTTP_COOKIE", cookies.to_header
@request.delete_header "action_dispatch.cookies"
@request = TestRequest.new scrub_env!(@request.env), @request.session, @controller.class
@response = build_response @response_klass
@response.request = @request
@controller.recycle!
if body
@request.set_header "RAW_POST_DATA", body
end
@request.set_header "REQUEST_METHOD", http_method
if as
@request.content_type = Mime[as].to_s
format ||= as
end
parameters = (params || {}).symbolize_keys
if format
parameters[:format] = format
end
setup_request(controller_class_name, action, parameters, session, flash, xhr)
process_controller_response(action, cookies, xhr)
end
🔎 See on GitHub
put(action, **args)
Simulate a PUT request with the given parameters and set/volley the response. See get
for more details.
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 417
def put(action, **args)
process(action, method: "PUT", **args)
end
🔎 See on GitHub
query_parameter_names(generated_extras)
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 510
def query_parameter_names(generated_extras)
generated_extras[1] + [:controller, :action]
end
🔎 See on GitHub
setup_controller_request_and_response()
📝 Source code
# File actionpack/lib/action_controller/test_case.rb, line 514
def setup_controller_request_and_response
@controller = nil unless defined? @controller
@response_klass = ActionDispatch::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 = TestRequest.create(@controller.class)
@response = build_response @response_klass
@response.request = @request
if @controller
@controller.request = @request
@controller.params = {}
end
end
🔎 See on GitHub