diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2010-06-28 12:04:13 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-06-28 14:22:35 +0200 |
commit | e717631a8481935e8ac1eeb2445da341bdd4c868 (patch) | |
tree | 03c0007b6306fbffaaece181d027268a4f1c23c0 /actionpack/test | |
parent | ccb21f20d86ffc17c10cb5e476912157c739dd96 (diff) | |
download | rails-e717631a8481935e8ac1eeb2445da341bdd4c868.tar.gz rails-e717631a8481935e8ac1eeb2445da341bdd4c868.tar.bz2 rails-e717631a8481935e8ac1eeb2445da341bdd4c868.zip |
Merge :constraints from scope into resource options [#2694 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 0548456b63..b5653a391a 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -334,6 +334,13 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest get '/tickets', :to => 'tickets#index', :as => :tickets end + scope :constraints => { :id => /\d{4}/ } do + resources :movies do + resources :reviews + resource :trailer + end + end + match '/:locale/*file.:format', :to => 'files#show', :file => /path\/to\/existing\/file/ end end @@ -1558,6 +1565,42 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest end end + def test_constraints_are_merged_from_scope + with_test_routes do + get '/movies/0001' + assert_equal 'movies#show', @response.body + assert_equal '/movies/0001', movie_path(:id => '0001') + + get '/movies/00001' + assert_equal 'Not Found', @response.body + assert_raises(ActionController::RoutingError){ movie_path(:id => '00001') } + + get '/movies/0001/reviews' + assert_equal 'reviews#index', @response.body + assert_equal '/movies/0001/reviews', movie_reviews_path(:movie_id => '0001') + + get '/movies/00001/reviews' + assert_equal 'Not Found', @response.body + assert_raises(ActionController::RoutingError){ movie_reviews_path(:movie_id => '00001') } + + get '/movies/0001/reviews/0001' + assert_equal 'reviews#show', @response.body + assert_equal '/movies/0001/reviews/0001', movie_review_path(:movie_id => '0001', :id => '0001') + + get '/movies/00001/reviews/0001' + assert_equal 'Not Found', @response.body + assert_raises(ActionController::RoutingError){ movie_path(:movie_id => '00001', :id => '00001') } + + get '/movies/0001/trailer' + assert_equal 'trailers#show', @response.body + assert_equal '/movies/0001/trailer', movie_trailer_path(:movie_id => '0001') + + get '/movies/00001/trailer' + assert_equal 'Not Found', @response.body + assert_raises(ActionController::RoutingError){ movie_trailer_path(:movie_id => '00001') } + end + end + private def with_test_routes yield |