From d3a8d5f93c6eee44a23f26fcb6573e77625f41b0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 12 Jan 2005 16:23:18 +0000 Subject: Fixed url rewriter confusion when the controller or action name was a substring of the controller_prefix or action_prefix git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@398 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/controller/url_test.rb | 38 ++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'actionpack/test') diff --git a/actionpack/test/controller/url_test.rb b/actionpack/test/controller/url_test.rb index 93c8eb464d..b595b1c25c 100644 --- a/actionpack/test/controller/url_test.rb +++ b/actionpack/test/controller/url_test.rb @@ -12,6 +12,15 @@ class MockRequest end end +class UrlMockFactory + def self.create(path, parameters) + ActionController::UrlRewriter.new( + MockRequest.new("http://", "example.com", 80, path, parameters), + parameters["controller"], parameters["action"] + ) + end +end + class UrlTest < Test::Unit::TestCase def setup @library_url = ActionController::UrlRewriter.new(MockRequest.new( @@ -408,12 +417,29 @@ class UrlTest < Test::Unit::TestCase end def test_rewriting_on_similar_fragments - url = ActionController::UrlRewriter.new( - MockRequest.new( - "http://", "example.com", 80, "/advertisements/advert/", - {"controller"=>"advert", "action"=>"index"} - ), "advert", "index" - ) + url = UrlMockFactory.create("/advertisements/advert/", {"controller"=>"advert", "action"=>"index"}) assert_equal("http://example.com/advertisements/advert/news", url.rewrite(:action => 'news')) end + + def test_rewriting_on_similar_fragments_with_action_prefixes + url = UrlMockFactory.create( + "/clients/prall/1/msg/all/", + { "category_name"=>"all", "client_name"=>"prall", "action"=>"index", "controller"=>"msg", "project_name"=>"1"} + ) + + assert_equal( + "http://example.com/clients/prall/1/msg/all/new", + url.rewrite({ :controller => "msg", :action_prefix => "all", :action => "new" }) + ) + + url = UrlMockFactory.create( + "/clients/prall/1/msg/all/", + { "category_name"=>"all", "client_name"=>"prall", "action"=>"index", "controller"=>"msg", "project_name"=>"1"} + ) + + assert_equal( + "http://example.com/clients/prall/1/msg/allous/new", + url.rewrite({ :controller => "msg", :action_prefix => "allous", :action => "new" }) + ) + end end -- cgit v1.2.3