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,::ActionDispatch::TestProcess::FixtureFile | |
| Defined in: | actionpack/lib/action_controller/test_case.rb | 
Class Method Summary
::ActiveSupport::Concern - Extended
| class_methods | Define class methods from given block. | 
| included | Evaluate given block in context of base class, so that you can write class macros here. | 
| prepended | Evaluate given block in context of base class, so that you can write class macros here. | 
Instance Attribute Summary
Instance Method Summary
- #build_response(klass)
- #controller_class_name
- 
    
      #delete(action, **args)  
    
    Simulate a DELETE request with the given parameters and set/volley the response. 
- #generated_path(generated_extras)
- 
    
      #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. 
- 
    
      #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, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)  
    
    Simulate an HTTP request to actionby 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. 
- #query_parameter_names(generated_extras)
- #setup_controller_request_and_response
::ActionDispatch::TestProcess - Included
::ActionDispatch::TestProcess::FixtureFile - Included
| #fixture_file_upload | Shortcut for  | 
DSL Calls
included
[ GitHub ]546 547 548 549 550 551 552
# File 'actionpack/lib/action_controller/test_case.rb', line 546
included do include ActionController::TemplateAssertions include ActionDispatch::Assertions class_attribute :_controller_class setup :setup_controller_request_and_response ActiveSupport.run_load_hooks(:action_controller_test_case, self) end
Instance Attribute Details
#request (readonly)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 338
attr_reader :response, :request
#response (readonly)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 338
attr_reader :response, :request
Instance Method Details
#build_response(klass)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 542
def build_response(klass) klass.create end
#controller_class_name
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 502
def controller_class_name @controller.class.anonymous? ? "anonymous" : @controller.class.controller_path 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 423
def delete(action, **args) process(action, method: "DELETE", **args) end
#generated_path(generated_extras)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 506
def generated_path(generated_extras) generated_extras[0] end
#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-urlencodedormultipart/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.
# File 'actionpack/lib/action_controller/test_case.rb', line 397
def get(action, **args) res = process(action, method: "GET", **args) .update res. res 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 429
def head(action, **args) process(action, method: "HEAD", **args) 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 411
def patch(action, **args) process(action, method: "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 405
def post(action, **args) process(action, method: "POST", **args) end
#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-urlencodedormultipart/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.
# 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 .update(@request.) . @request.set_header "HTTP_COOKIE", .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, , xhr) 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 417
def put(action, **args) process(action, method: "PUT", **args) end
#query_parameter_names(generated_extras)
[ GitHub ]# File 'actionpack/lib/action_controller/test_case.rb', line 510
def query_parameter_names(generated_extras) generated_extras[1] + [:controller, :action] end
#setup_controller_request_and_response
[ GitHub ]# 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