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 331 331: def self.included(base) 332: # execute the request simulating a specific http method and set/volley the response 333: %w( get post put delete head ).each do |method| 334: base.class_eval "def \#{method}(action, parameters = nil, session = nil, flash = nil)\n@request.env['REQUEST_METHOD'] = \"\#{method.upcase}\" if @request\nprocess(action, parameters, session, flash)\nend\n", __FILE__, __LINE__ 335: end 336: end
Public Instance methods
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 385 385: def assigns(key = nil) 386: if key.nil? 387: @response.template.assigns 388: else 389: @response.template.assigns[key.to_s] 390: end 391: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 409 409: def build_request_uri(action, parameters) 410: unless @request.env['REQUEST_URI'] 411: options = @controller.send(:rewrite_options, parameters) 412: options.update(:only_path => true, :action => action) 413: 414: url = ActionController::UrlRewriter.new(@request, parameters) 415: @request.set_REQUEST_URI(url.rewrite(options)) 416: end 417: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 401 401: def cookies 402: @response.cookies 403: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 427 427: def find_all_tag(conditions) 428: html_document.find_all(conditions) 429: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 423 423: def find_tag(conditions) 424: html_document.find(conditions) 425: 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 438 438: def fixture_file_upload(path, mime_type = nil) 439: ActionController::TestUploadedFile.new( 440: Test::Unit::TestCase.respond_to?(:fixture_path) ? Test::Unit::TestCase.fixture_path + path : path, 441: mime_type 442: ) 443: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 397 397: def flash 398: @response.flash 399: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 377 377: def follow_redirect 378: if @response.redirected_to[:controller] 379: raise "Can't follow redirects outside of current controller (#{@response.redirected_to[:controller]})" 380: end 381: 382: get(@response.redirected_to.delete(:action), @response.redirected_to.stringify_keys) 383: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 419 419: def html_document 420: @html_document ||= HTML::Document.new(@response.body) 421: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 431 431: def method_missing(selector, *args) 432: return @controller.send(selector, *args) if ActionController::Routing::NamedRoutes::Helpers.include?(selector) 433: return super 434: end
execute the request and set/volley the response
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 345 345: def process(action, parameters = nil, session = nil, flash = nil) 346: # Sanity check for required instance variables so we can give an 347: # understandable error message. 348: %w(controller request response).each do |iv_name| 349: raise "@#{iv_name} is nil: make sure you set it in your test's setup method." if instance_variable_get("@#{iv_name}").nil? 350: end 351: 352: @request.recycle! 353: 354: @html_document = nil 355: @request.env['REQUEST_METHOD'] ||= "GET" 356: @request.action = action.to_s 357: 358: parameters ||= {} 359: @request.assign_parameters(@controller.class.controller_path, action.to_s, parameters) 360: 361: @request.session = ActionController::TestSession.new(session) unless session.nil? 362: @request.session["flash"] = ActionController::Flash::FlashHash.new.update(flash) if flash 363: build_request_uri(action, parameters) 364: @controller.process(@request, @response) 365: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 405 405: def redirect_to_url 406: @response.redirect_url 407: end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 393 393: def session 394: @response.session 395: 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 { set.connect ':controller/:id/:action' } assert_equal( ['/content/10/show', {}], set.generate(:controller => 'content', :id => 10, :action => 'show') ) end
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/test_process.rb, line 460 460: def with_routing 461: real_routes = ActionController::Routing::Routes 462: ActionController::Routing.send :remove_const, :Routes 463: 464: temporary_routes = ActionController::Routing::RouteSet.new 465: ActionController::Routing.send :const_set, :Routes, temporary_routes 466: 467: yield temporary_routes 468: ensure 469: if ActionController::Routing.const_defined? :Routes 470: ActionController::Routing.send(:remove_const, :Routes) 471: end 472: ActionController::Routing.const_set(:Routes, real_routes) if real_routes 473: 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 367 367: def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) 368: @request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' 369: @request.env['HTTP_ACCEPT'] = 'text/javascript, text/html, application/xml, text/xml, */*' 370: returning self.send(request_method, action, parameters, session, flash) do 371: @request.env.delete 'HTTP_X_REQUESTED_WITH' 372: @request.env.delete 'HTTP_ACCEPT' 373: end 374: end