From 2269c23699968d31f2f81052ebcf7fcc29e82502 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Jun 2005 05:36:03 +0000 Subject: Fixed assert_redirected_to to handle absolute controller paths properly #1472 [Rick Olson/Nicholas Seckar] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1533 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/assertions.rb | 6 +++-- .../test/controller/action_pack_assertions_test.rb | 27 ++++++++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index e30d645713..dcf8d4ef08 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed assert_redirected_to to handle absolute controller paths properly #1472 [Rick Olson/Nicholas Seckar] + * Added event-based observations when frequency is not set on observe_field/form #1474 [flash@vanklinkenbergsoftware.nl] * Added script.aculo.us Javascripts (controls.js, dragdrop.js, effects.js) (NEEDS MORE DESCRIPTION) #1509 [Thomas Fuchs] diff --git a/actionpack/lib/action_controller/assertions.rb b/actionpack/lib/action_controller/assertions.rb index f2eb2fd2f4..b19ccc3b2b 100644 --- a/actionpack/lib/action_controller/assertions.rb +++ b/actionpack/lib/action_controller/assertions.rb @@ -78,8 +78,10 @@ module Test #:nodoc: if options.is_a?(Symbol) @response.redirected_to == options else - options.keys.all? do |k| - options[k] == (@response.redirected_to[k].respond_to?(:to_param) ? @response.redirected_to[k].to_param : @response.redirected_to[k] unless @response.redirected_to[k].nil?) + options.keys.all? do |k| + if k == :controller then options[k] == ActionController::Routing.controller_relative_to(@response.redirected_to[k], @controller.class.controller_path) + else options[k] == (@response.redirected_to[k].respond_to?(:to_param) ? @response.redirected_to[k].to_param : @response.redirected_to[k] unless @response.redirected_to[k].nil?) + end end end end diff --git a/actionpack/test/controller/action_pack_assertions_test.rb b/actionpack/test/controller/action_pack_assertions_test.rb index 4ecf6b6b5b..2cf9c72f45 100644 --- a/actionpack/test/controller/action_pack_assertions_test.rb +++ b/actionpack/test/controller/action_pack_assertions_test.rb @@ -79,7 +79,17 @@ class ActionPackAssertionsController < ActionController::Base # 911 def rescue_action(e) raise; end - +end + +module Admin + class InnerModuleController < ActionController::Base + def redirect_to_absolute_controller + redirect_to :controller => '/content' + end + def redirect_to_fellow_controller + redirect_to :controller => 'user' + end + end end # --------------------------------------------------------------------------- @@ -392,6 +402,15 @@ class ActionPackAssertionsControllerTest < Test::Unit::TestCase process :redirect_to_path assert_redirected_to 'http://test.host/some/path' end + + def test_redirected_to_with_nested_controller + @controller = Admin::InnerModuleController.new + get :redirect_to_absolute_controller + assert_redirected_to :controller => 'content' + + get :redirect_to_fellow_controller + assert_redirected_to :controller => 'admin/user' + end end class ActionPackHeaderTest < Test::Unit::TestCase @@ -404,8 +423,8 @@ class ActionPackHeaderTest < Test::Unit::TestCase assert_equal('text/xml', @controller.headers['Content-Type']) end def test_rendering_xml_respects_content_type - @response.headers['Content-Type'] = 'application/pdf' - process :hello_xml_world - assert_equal('application/pdf', @controller.headers['Content-Type']) + @response.headers['Content-Type'] = 'application/pdf' + process :hello_xml_world + assert_equal('application/pdf', @controller.headers['Content-Type']) end end -- cgit v1.2.3