Skip to content

Commit

Permalink
Fixed that Functional tests do not set request.path_parameters properly
Browse files Browse the repository at this point in the history
#1512 [Nicholas Seckar]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1527 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
dhh committed Jun 26, 2005
1 parent b17e178 commit 930b59e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
16 changes: 13 additions & 3 deletions actionpack/lib/action_controller/test_process.rb
Expand Up @@ -67,6 +67,13 @@ def path
@path || super()
end

def assign_parameters(parameters)
path, extras = ActionController::Routing::Routes.generate(parameters.symbolize_keys)
non_path_parameters = (get? ? query_parameters : request_parameters)
parameters.each do |key, value|
(extras.key?(key.to_sym) ? non_path_parameters : path_parameters)[key] = value
end
end

private
def initialize_containers
Expand Down Expand Up @@ -239,9 +246,12 @@ def process(action, parameters = nil, session = nil, flash = nil)
@html_document = nil
@request.env['REQUEST_METHOD'] ||= "GET"
@request.action = action.to_s
@request.path_parameters = { :controller => @controller.class.controller_path,
:action => action.to_s }
@request.parameters.update(parameters) unless parameters.nil?

parameters ||= {}
parameters[:controller] = @controller.class.controller_path
parameters[:action] = action.to_s
@request.assign_parameters(parameters)

@request.session = ActionController::TestSession.new(session) unless session.nil?
@request.session["flash"] = ActionController::Flash::FlashHash.new.update(flash) if flash
build_request_uri(action, parameters)
Expand Down
11 changes: 10 additions & 1 deletion actionpack/test/controller/action_pack_assertions_test.rb
Expand Up @@ -55,6 +55,10 @@ def render_based_on_parameters
render_text "Mr. #{@params["name"]}"
end

def render_url
render_text "<div>#{url_for(:action => 'flash_me', :only_path => true)}</div>"
end

# puts something in the session
def session_stuffing
session['xmas'] = 'turkey'
Expand Down Expand Up @@ -97,6 +101,11 @@ def setup

# -- assertion-based testing ------------------------------------------------

def test_assert_tag_and_url_for
get :render_url
assert_tag :content => "/action_pack_assertions/flash_me"
end

# test the session assertion to make sure something is there.
def test_assert_session_has
process :session_stuffing
Expand Down Expand Up @@ -359,7 +368,7 @@ def test_follow_redirect
assert_redirected_to :action => "flash_me"

follow_redirect
assert_equal 1, @request.parameters["id"]
assert_equal 1, @request.parameters["id"].to_i

assert "Inconceivable!", @response.body
end
Expand Down

0 comments on commit 930b59e

Please sign in to comment.