aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch/routing_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test/dispatch/routing_test.rb')
-rw-r--r--actionpack/test/dispatch/routing_test.rb35
1 files changed, 25 insertions, 10 deletions
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index bcb97e4ae0..f5fcf9b0df 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -15,6 +15,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
stub_controllers do |routes|
Routes = routes
Routes.draw do
+ default_url_options :host => "rubyonrails.org"
+
controller :sessions do
get 'login' => :new, :as => :login
post 'login' => :create
@@ -24,6 +26,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
resource :session do
get :create
+
+ resource :info
end
match 'account/logout' => redirect("/logout"), :as => :logout_redirect
@@ -104,7 +108,9 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
- resources :posts, :only => [:index, :show]
+ resources :posts, :only => [:index, :show] do
+ resources :comments, :except => :destroy
+ end
match 'sprockets.js' => ::TestRoutingMapper::SprocketsApp
@@ -162,6 +168,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
Routes
end
+ include Routes.url_helpers
+
def test_logout
with_test_routes do
delete '/logout'
@@ -183,6 +191,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
assert_equal '/login', url_for(:controller => 'sessions', :action => 'create', :only_path => true)
assert_equal '/login', url_for(:controller => 'sessions', :action => 'new', :only_path => true)
+
+ assert_equal 'http://rubyonrails.org/login', Routes.url_for(:controller => 'sessions', :action => 'create')
end
end
@@ -230,6 +240,14 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
+ def test_session_info_nested_singleton_resource
+ with_test_routes do
+ get '/session/info'
+ assert_equal 'infos#show', @response.body
+ assert_equal '/session/info', session_info_path
+ end
+ end
+
def test_redirect_modulo
with_test_routes do
get '/account/modulo/name'
@@ -471,7 +489,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
- def test_posts
+ def test_resource_routes_with_only_and_except
with_test_routes do
get '/posts'
assert_equal 'posts#index', @response.body
@@ -481,9 +499,14 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
assert_equal 'posts#show', @response.body
assert_equal '/posts/1', post_path(:id => 1)
+ get '/posts/1/comments'
+ assert_equal 'comments#index', @response.body
+ assert_equal '/posts/1/comments', post_comments_path(:post_id => 1)
+
assert_raise(ActionController::RoutingError) { post '/posts' }
assert_raise(ActionController::RoutingError) { put '/posts/1' }
assert_raise(ActionController::RoutingError) { delete '/posts/1' }
+ assert_raise(ActionController::RoutingError) { delete '/posts/1/comments' }
end
end
@@ -721,14 +744,6 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
private
def with_test_routes
- real_routes, temp_routes = ActionController::Routing::Routes, Routes
-
- ActionController::Routing.module_eval { remove_const :Routes }
- ActionController::Routing.module_eval { const_set :Routes, temp_routes }
-
yield
- ensure
- ActionController::Routing.module_eval { remove_const :Routes }
- ActionController::Routing.const_set(:Routes, real_routes)
end
end