Methods
- assigns
- build_request_uri
- cookies
- find_all_tag
- find_tag
- fixture_file_upload
- flash
- follow_redirect
- html_document
- included
- method_missing
- process
- redirect_to_url
- session
- with_routing
- xhr
- xml_http_request
Public Class methods
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 348 348: def self.included(base) 349: # execute the request simulating a specific http method and set/volley the response 350: %w( get post put delete head ).each do |method| 351: base.class_eval "def \#{method}(action, parameters = nil, session = nil, flash = nil)\n@request.env['REQUEST_METHOD'] = \"\#{method.upcase}\" if defined?(@request)\nprocess(action, parameters, session, flash)\nend\n", __FILE__, __LINE__ 352: end 353: end
Public Instance methods
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 405 405: def assigns(key = nil) 406: if key.nil? 407: @response.template.assigns 408: else 409: @response.template.assigns[key.to_s] 410: end 411: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 429 429: def build_request_uri(action, parameters) 430: unless @request.env['REQUEST_URI'] 431: options = @controller.send(:rewrite_options, parameters) 432: options.update(:only_path => true, :action => action) 433: 434: url = ActionController::UrlRewriter.new(@request, parameters) 435: @request.set_REQUEST_URI(url.rewrite(options)) 436: end 437: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 421 421: def cookies 422: @response.cookies 423: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 447 447: def find_all_tag(conditions) 448: html_document.find_all(conditions) 449: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 443 443: def find_tag(conditions) 444: html_document.find(conditions) 445: end
Shortcut for ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + path, type). Example:
post :change_avatar, :avatar => fixture_file_upload('/files/spongebob.png', 'image/png')
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 458 458: def fixture_file_upload(path, mime_type = nil) 459: ActionController::TestUploadedFile.new( 460: Test::Unit::TestCase.respond_to?(:fixture_path) ? Test::Unit::TestCase.fixture_path + path : path, 461: mime_type 462: ) 463: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 417 417: def flash 418: @response.flash 419: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 396 396: def follow_redirect 397: redirected_controller = @response.redirected_to[:controller] 398: if redirected_controller && redirected_controller != @controller.controller_name 399: raise "Can't follow redirects outside of current controller (from #{@controller.controller_name} to #{redirected_controller})" 400: end 401: 402: get(@response.redirected_to.delete(:action), @response.redirected_to.stringify_keys) 403: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 439 439: def html_document 440: @html_document ||= HTML::Document.new(@response.body) 441: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 451 451: def method_missing(selector, *args) 452: return @controller.send(selector, *args) if ActionController::Routing::Routes.named_routes.helpers.include?(selector) 453: return super 454: end
execute the request and set/volley the response
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 362 362: def process(action, parameters = nil, session = nil, flash = nil) 363: # Sanity check for required instance variables so we can give an 364: # understandable error message. 365: %w(@controller @request @response).each do |iv_name| 366: if !instance_variables.include?(iv_name) || instance_variable_get(iv_name).nil? 367: raise "#{iv_name} is nil: make sure you set it in your test's setup method." 368: end 369: end 370: 371: @request.recycle! 372: 373: @html_document = nil 374: @request.env['REQUEST_METHOD'] ||= "GET" 375: @request.action = action.to_s 376: 377: parameters ||= {} 378: @request.assign_parameters(@controller.class.controller_path, action.to_s, parameters) 379: 380: @request.session = ActionController::TestSession.new(session) unless session.nil? 381: @request.session["flash"] = ActionController::Flash::FlashHash.new.update(flash) if flash 382: build_request_uri(action, parameters) 383: @controller.process(@request, @response) 384: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 425 425: def redirect_to_url 426: @response.redirect_url 427: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 413 413: def session 414: @response.session 415: end
A helper to make it easier to test different route configurations. This method temporarily replaces ActionController::Routing::Routes with a new RouteSet instance.
The new instance is yielded to the passed block. Typically the block will create some routes using map.draw { map.connect … }:
with_routing do |set| set.draw do |map| map.connect ':controller/:action/:id' assert_equal( ['/content/10/show', {}], map.generate(:controller => 'content', :id => 10, :action => 'show') end end end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 482 482: def with_routing 483: real_routes = ActionController::Routing::Routes 484: ActionController::Routing.send :remove_const, :Routes 485: 486: temporary_routes = ActionController::Routing::RouteSet.new 487: ActionController::Routing.send :const_set, :Routes, temporary_routes 488: 489: yield temporary_routes 490: ensure 491: if ActionController::Routing.const_defined? :Routes 492: ActionController::Routing.send(:remove_const, :Routes) 493: end 494: ActionController::Routing.const_set(:Routes, real_routes) if real_routes 495: end
Alias for xml_http_request
This method is also aliased as
xhr
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 386 386: def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) 387: @request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' 388: @request.env['HTTP_ACCEPT'] = 'text/javascript, text/html, application/xml, text/xml, */*' 389: returning self.send(request_method, action, parameters, session, flash) do 390: @request.env.delete 'HTTP_X_REQUESTED_WITH' 391: @request.env.delete 'HTTP_ACCEPT' 392: end 393: end