Make sure changing the controller from foo/bar to bing/bang does not change relative to foo.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4438 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jamis Buck 2006-06-05 15:48:29 +00:00
parent f97978ad91
commit 6c04eb2115
3 changed files with 12 additions and 1 deletions

@ -1,5 +1,7 @@
*SVN*
* Make sure changing the controller from foo/bar to bing/bang does not change relative to foo. [Jamis Buck]
* Escape the path before routing recognition. #3671
* Make sure :id and friends are unescaped properly. #5275 [me@julik.nl]

@ -955,7 +955,9 @@ def generate(options, recall = {}, method=:generate)
# on admin/get, and the new controller is 'set', the new controller
# should really be admin/set.
if expire_on[:controller] && options[:controller] && options[:controller][0] != ?/
parts = recall[:controller].split('/')[0..-2] + [options[:controller]]
old_parts = recall[:controller].split('/')
new_parts = options[:controller].split('/')
parts = old_parts[0..-(new_parts.length + 1)] + new_parts
options[:controller] = parts.join('/')
end

@ -1330,6 +1330,13 @@ def test_generate_finds_best_fit
url = set.generate(:controller => "people", :action => "index", :ws => true)
assert_equal "/ws/people", url
end
def test_generate_changes_controller_module
set.draw { |map| map.connect ':controller/:action/:id' }
current = { :controller => "bling/bloop", :action => "bap", :id => 9 }
url = set.generate({:controller => "foo/bar", :action => "baz", :id => 7}, current)
assert_equal "/foo/bar/baz/7", url
end
end
class RoutingTest < Test::Unit::TestCase