Move methods from TestResponse into a module, so they can be shared with response objects in integration tests. (This allows standard functional test assertions to be used in integration tests, like assert_response and assert_template.)

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3820 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jamis Buck 2006-03-09 04:57:08 +00:00
parent aafc191ab7
commit 5568d20b2e
2 changed files with 12 additions and 1 deletions

@ -231,6 +231,11 @@ def process(method, path, parameters=nil, headers=nil)
@request = @controller.request
@response = @controller.response
# Decorate the response with the standard behavior of the TestResponse
# so that things like assert_response can be used in integration
# tests.
@response.extend(TestResponseBehavior)
parse_result
return status
end

@ -121,7 +121,9 @@ def initialize_default_values
end
end
class TestResponse < AbstractResponse #:nodoc:
# A refactoring of TestResponse to allow the same behavior to be applied
# to the "real" CgiResponse class in integration tests.
module TestResponseBehavior #:nodoc:
# the response code of the request
def response_code
headers['Status'][0,3].to_i rescue 0
@ -251,6 +253,10 @@ def binary_content
end
end
class TestResponse < AbstractResponse #:nodoc:
include TestResponseBehavior
end
class TestSession #:nodoc:
def initialize(attributes = {})
@attributes = attributes