aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch/routing_test.rb
diff options
context:
space:
mode:
authorRyo Hashimoto <ryohashimoto@gmail.com>2016-08-29 16:24:51 +0100
committerAndrew White <andrew.white@unboxed.co>2016-08-29 16:24:51 +0100
commit2ea66fc6c5728bdd51b164be25c43c8cbce396a5 (patch)
tree9d85a3e008214ea7e525d2da2dd253b43ba209d6 /actionpack/test/dispatch/routing_test.rb
parent60f34fd7ef08e507e765c6df3fa1664b22e851e6 (diff)
downloadrails-2ea66fc6c5728bdd51b164be25c43c8cbce396a5.tar.gz
rails-2ea66fc6c5728bdd51b164be25c43c8cbce396a5.tar.bz2
rails-2ea66fc6c5728bdd51b164be25c43c8cbce396a5.zip
Fix nested multiple roots
The PR #20940 enabled the use of multiple roots with different constraints at the top level but unfortunately didn't work when those roots were inside a namespace and also broke the use of root inside a namespace after a top level root was defined because the check for the existence of the named route used the global :root name and not the namespaced name. This is fixed by using the name_for_action method to expand the :root name to the full namespaced name. We can pass nil for the second argument as we're not dealing with resource definitions so don't need to handle the cases for edit and new routes. Fixes #26148.
Diffstat (limited to 'actionpack/test/dispatch/routing_test.rb')
-rw-r--r--actionpack/test/dispatch/routing_test.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index ee5c30ef0e..0938460632 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -3669,6 +3669,48 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
+ def test_multiple_roots
+ draw do
+ namespace :foo do
+ root "pages#index", constraints: { host: 'www.example.com' }
+ root "admin/pages#index", constraints: { host: 'admin.example.com' }
+ end
+
+ root "pages#index", constraints: { host: 'www.example.com' }
+ root "admin/pages#index", constraints: { host: 'admin.example.com' }
+ end
+
+ get "http://www.example.com/foo"
+ assert_equal "foo/pages#index", @response.body
+
+ get "http://admin.example.com/foo"
+ assert_equal "foo/admin/pages#index", @response.body
+
+ get "http://www.example.com/"
+ assert_equal "pages#index", @response.body
+
+ get "http://admin.example.com/"
+ assert_equal "admin/pages#index", @response.body
+ end
+
+ def test_namespaced_roots
+ draw do
+ namespace :foo do
+ root "test#index"
+ end
+
+ root "test#index"
+
+ namespace :bar do
+ root "test#index"
+ end
+ end
+
+ assert_equal "/foo", foo_root_path
+ assert_equal "/", root_path
+ assert_equal "/bar", bar_root_path
+ end
+
private
def draw(&block)