aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-12-28 16:33:40 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2011-12-28 16:33:40 -0800
commit50af25ba87a0814d9c38984218c5e157a07f86cd (patch)
treeeb12bd3ffbf4e0a1238e0e4e114547cce798a93f
parent7a80ac0162ae84cf22c91646690ad18916a66274 (diff)
downloadrails-50af25ba87a0814d9c38984218c5e157a07f86cd.tar.gz
rails-50af25ba87a0814d9c38984218c5e157a07f86cd.tar.bz2
rails-50af25ba87a0814d9c38984218c5e157a07f86cd.zip
last named route wins. fixes #4164
This differs from route recognition where first recognized route wins. This will not be supported in Rails 4.0 so that route recognition and generation rules are consistent.
-rw-r--r--actionpack/test/controller/base_test.rb40
-rw-r--r--actionpack/test/dispatch/routing_test.rb2
2 files changed, 41 insertions, 1 deletions
diff --git a/actionpack/test/controller/base_test.rb b/actionpack/test/controller/base_test.rb
index 9c22a4e7e0..ec8e5521c4 100644
--- a/actionpack/test/controller/base_test.rb
+++ b/actionpack/test/controller/base_test.rb
@@ -197,6 +197,46 @@ class UrlOptionsTest < ActionController::TestCase
rescue_action_in_public!
end
+ def test_path_generation_priority
+ rs = ActionDispatch::Routing::RouteSet.new
+ rs.draw do
+ resources :models
+ match 'special' => 'model#new', :as => :new_model
+ end
+
+ url_params = {
+ :action => "new",
+ :controller => "model",
+ :use_route => "new_model",
+ :only_path => true }
+
+ x = Struct.new(:rs, :params, :tc) {
+ include rs.named_routes.module
+ public :new_model_path
+
+ def url_for(*args)
+ tc.assert_equal([params], args)
+ rs.url_for(*args)
+ end
+ }.new(rs, url_params, self)
+ end
+
+ def test_url_for_params_priority
+ rs = ActionDispatch::Routing::RouteSet.new
+ rs.draw do
+ resources :models
+ match 'special' => 'model#new', :as => :new_model
+ end
+
+ url_params = {
+ :action => "new",
+ :controller => "model",
+ :use_route => "new_model",
+ :only_path => true }
+
+ assert_equal '/special', rs.url_for(url_params)
+ end
+
def test_url_options_override
with_routing do |set|
set.draw do
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index 5325f81364..67556e5253 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -2297,7 +2297,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
def test_named_routes_collision_is_avoided_unless_explicitly_given_as
assert_equal "/c/1", routes_collision_path(1)
- assert_equal "/fc", routes_forced_collision_path
+ assert_equal "/forced_collision", routes_forced_collision_path
end
def test_redirect_argument_error