diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-05-11 17:07:05 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-05-11 17:07:05 -0700 |
commit | 00a9d4b91cccdd88146cbe716eca844dcdfa08e7 (patch) | |
tree | 77398a4e98eb391258813fef47f1ecf57ae58972 /actionpack/lib/action_controller/testing/process.rb | |
parent | 0f6e764e4060b75ea8a335e6971209a08bf8b40a (diff) | |
parent | 0cac68d3bed3e6bf8ec2eb994858e4a179046941 (diff) | |
download | rails-00a9d4b91cccdd88146cbe716eca844dcdfa08e7.tar.gz rails-00a9d4b91cccdd88146cbe716eca844dcdfa08e7.tar.bz2 rails-00a9d4b91cccdd88146cbe716eca844dcdfa08e7.zip |
Merge branch 'master' into wip_abstract_controller
Conflicts:
actionpack/lib/action_controller/abstract/callbacks.rb
actionpack/lib/action_controller/abstract/renderer.rb
actionpack/lib/action_controller/base/base.rb
actionpack/lib/action_controller/dispatch/dispatcher.rb
actionpack/lib/action_controller/routing/route_set.rb
actionpack/lib/action_controller/testing/process.rb
actionpack/test/abstract_controller/layouts_test.rb
actionpack/test/controller/filters_test.rb
actionpack/test/controller/helper_test.rb
actionpack/test/controller/render_test.rb
actionpack/test/new_base/test_helper.rb
Diffstat (limited to 'actionpack/lib/action_controller/testing/process.rb')
-rw-r--r-- | actionpack/lib/action_controller/testing/process.rb | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/actionpack/lib/action_controller/testing/process.rb b/actionpack/lib/action_controller/testing/process.rb index 3aad94cc10..21023ac101 100644 --- a/actionpack/lib/action_controller/testing/process.rb +++ b/actionpack/lib/action_controller/testing/process.rb @@ -35,27 +35,27 @@ module ActionController #:nodoc: end data = params.to_query - @env['CONTENT_LENGTH'] = data.length + @env['CONTENT_LENGTH'] = data.length.to_s @env['rack.input'] = StringIO.new(data) end def recycle! @env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ } + @env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ } @env['action_dispatch.request.query_parameters'] = {} end end - # Integration test methods such as ActionController::Integration::Session#get - # and ActionController::Integration::Session#post return objects of class - # TestResponse, which represent the HTTP response results of the requested - # controller actions. - # - # See Response for more information on controller response objects. class TestResponse < ActionDispatch::TestResponse def recycle! - body_parts.clear - headers.delete('ETag') - headers.delete('Last-Modified') + @status = 200 + @header = Rack::Utils::HeaderHash.new(DEFAULT_HEADERS) + @writer = lambda { |x| @body << x } + @block = nil + @length = 0 + @body = [] + + @request = @template = nil end end @@ -132,11 +132,22 @@ module ActionController #:nodoc: build_request_uri(action, parameters) @request.env["action_controller.rescue.request"] = @request - @request.env["action_controller.rescue.request"] = @response + @request.env["action_controller.rescue.response"] = @response Base.class_eval { include ProcessWithTest } unless Base < ProcessWithTest - @controller.action_name = action.to_s - @controller.process(@request, @response) + + env = @request.env + app = @controller + + # TODO: Enable Lint + # app = Rack::Lint.new(app) + + status, headers, body = app.action(action, env) + response = Rack::MockResponse.new(status, headers, body) + + @response.request, @response.template = @request, @controller.template + @response.status, @response.headers, @response.body = response.status, response.headers, response.body + @response end def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) |