diff --git a/actionpack/lib/action_controller/metal/testing.rb b/actionpack/lib/action_controller/metal/testing.rb index 838da3322ddcf..f998efb6e99b9 100644 --- a/actionpack/lib/action_controller/metal/testing.rb +++ b/actionpack/lib/action_controller/metal/testing.rb @@ -4,33 +4,12 @@ module Testing include RackDelegation - # This gets included on the second request. We only want to modify this - # behavior on the second request. Ugh. - module Recycled # :nodoc: - def set_response!(request) - end - - def process(name) - ret = super - if cookies = @_request.env['action_dispatch.cookies'] - cookies.write(@_response) - end - @_response.prepare! - ret - end - - def recycled? - true - end - end - - def recycled? # :nodoc: - false + def set_response!(request) + super unless @_response end def recycle! @_url_options = nil - extend Recycled unless recycled? end # TODO : Rewrite tests using controller.headers= to use Rack env diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index 480297368fbc9..91814bbcb49d9 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -499,8 +499,14 @@ def process(action, http_method = 'GET', *args) @controller.recycle! name = @request.parameters[:action] + @controller.process(name) + if cookies = @request.env['action_dispatch.cookies'] + cookies.write(@response) + end + @response.prepare! + @assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {} @request.session.delete('flash') if @request.session['flash'].blank? @response