1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fixed about half of broken tests in routing_test

This commit is contained in:
Łukasz Strzałkowski 2010-08-05 23:34:39 +02:00 committed by Piotr Sarnacki
parent 415bacd7bf
commit 8412886bdb

View file

@ -2,6 +2,7 @@
require 'abstract_unit' require 'abstract_unit'
require 'controller/fake_controllers' require 'controller/fake_controllers'
require 'active_support/dependencies' require 'active_support/dependencies'
require 'active_support/core_ext/object/with_options'
class MilestonesController < ActionController::Base class MilestonesController < ActionController::Base
def index() head :ok end def index() head :ok end
@ -78,7 +79,7 @@ class LegacyRouteSetTests < Test::Unit::TestCase
end end
def test_default_setup def test_default_setup
@rs.draw { match ':controller/:action/:id' } @rs.draw { match '/:controller(/:action(/:id))' }
assert_equal({:controller => "content", :action => 'index'}, rs.recognize_path("/content")) assert_equal({:controller => "content", :action => 'index'}, rs.recognize_path("/content"))
assert_equal({:controller => "content", :action => 'list'}, rs.recognize_path("/content/list")) assert_equal({:controller => "content", :action => 'list'}, rs.recognize_path("/content/list"))
assert_equal({:controller => "content", :action => 'show', :id => '10'}, rs.recognize_path("/content/show/10")) assert_equal({:controller => "content", :action => 'show', :id => '10'}, rs.recognize_path("/content/show/10"))
@ -96,7 +97,7 @@ class LegacyRouteSetTests < Test::Unit::TestCase
def test_ignores_leading_slash def test_ignores_leading_slash
@rs.clear! @rs.clear!
@rs.draw { match '/:controller/:action/:id'} @rs.draw { match '/:controller(/:action(/:id))'}
test_default_setup test_default_setup
end end
@ -139,8 +140,8 @@ class LegacyRouteSetTests < Test::Unit::TestCase
def test_route_with_regexp_for_controller def test_route_with_regexp_for_controller
rs.draw do rs.draw do
match ':controller/:admintoken/:action/:id', :controller => /admin\/.+/ match ':controller/:admintoken(/:action(/:id))', :controller => /admin\/.+/
match ':controller/:action/:id' match '/:controller(/:action(/:id))'
end end
assert_equal({:controller => "admin/user", :admintoken => "foo", :action => "index"}, assert_equal({:controller => "admin/user", :admintoken => "foo", :action => "index"},
rs.recognize_path("/admin/user/foo")) rs.recognize_path("/admin/user/foo"))
@ -151,7 +152,7 @@ class LegacyRouteSetTests < Test::Unit::TestCase
def test_route_with_regexp_and_captures_for_controller def test_route_with_regexp_and_captures_for_controller
rs.draw do rs.draw do
match ':controller/:action/:id', :controller => /admin\/(accounts|users)/ match '/:controller(/:action(/:id))', :controller => /admin\/(accounts|users)/
end end
assert_equal({:controller => "admin/accounts", :action => "index"}, rs.recognize_path("/admin/accounts")) assert_equal({:controller => "admin/accounts", :action => "index"}, rs.recognize_path("/admin/accounts"))
assert_equal({:controller => "admin/users", :action => "index"}, rs.recognize_path("/admin/users")) assert_equal({:controller => "admin/users", :action => "index"}, rs.recognize_path("/admin/users"))
@ -212,7 +213,9 @@ class LegacyRouteSetTests < Test::Unit::TestCase
def test_named_route_with_path_prefix def test_named_route_with_path_prefix
rs.draw do rs.draw do
match 'page' => 'content#show_page', :as => 'page', :path_prefix => 'my' scope "my" do
match 'page' => 'content#show_page', :as => 'page'
end
end end
x = setup_for_named_route x = setup_for_named_route
assert_equal("http://test.host/my/page", assert_equal("http://test.host/my/page",
@ -221,7 +224,9 @@ class LegacyRouteSetTests < Test::Unit::TestCase
def test_named_route_with_blank_path_prefix def test_named_route_with_blank_path_prefix
rs.draw do rs.draw do
match 'page' => 'content#show_page', :as => 'page', :path_prefix => '' scope "" do
match 'page' => 'content#show_page', :as => 'page'
end
end end
x = setup_for_named_route x = setup_for_named_route
assert_equal("http://test.host/page", assert_equal("http://test.host/page",
@ -464,20 +469,18 @@ class LegacyRouteSetTests < Test::Unit::TestCase
rs.generate({:day => nil, :month => nil}, {:controller => 'content', :action => 'list_pages', :year => '2005', :month => '6', :day => '12'}) rs.generate({:day => nil, :month => nil}, {:controller => 'content', :action => 'list_pages', :year => '2005', :month => '6', :day => '12'})
end end
def test_url_with_no_action_specified def test_root_url_generation_with_controller_and_action
rs.draw do rs.draw do
match '' => 'content' root :to => "content#index"
match ':controller/:action/:id'
end end
assert_equal '/', rs.generate(:controller => 'content', :action => 'index') assert_equal '/', rs.generate(:controller => 'content', :action => 'index')
assert_equal '/', rs.generate(:controller => 'content') assert_equal '/', rs.generate(:controller => 'content')
end end
def test_named_url_with_no_action_specified def test_named_root_url_generation_with_controller_and_action
rs.draw do rs.draw do
match '', :controller => 'content', :as => 'home' root :to => "content#index", :as => 'home'
match ':controller/:action/:id'
end end
assert_equal '/', rs.generate(:controller => 'content', :action => 'index') assert_equal '/', rs.generate(:controller => 'content', :action => 'index')
@ -646,14 +649,14 @@ class RouteSetTest < ActiveSupport::TestCase
@default_route_set ||= begin @default_route_set ||= begin
set = ROUTING::RouteSet.new set = ROUTING::RouteSet.new
set.draw do set.draw do
match '/:controller/:action/:id/' match '/:controller(/:action(/:id))'
end end
set set
end end
end end
def test_generate_extras def test_generate_extras
set.draw { match ':controller/:action/:id' } set.draw { match ':controller/(:action(/:id))' }
path, extras = set.generate_extras(:controller => "foo", :action => "bar", :id => 15, :this => "hello", :that => "world") path, extras = set.generate_extras(:controller => "foo", :action => "bar", :id => 15, :this => "hello", :that => "world")
assert_equal "/foo/bar/15", path assert_equal "/foo/bar/15", path
assert_equal %w(that this), extras.map { |e| e.to_s }.sort assert_equal %w(that this), extras.map { |e| e.to_s }.sort
@ -728,10 +731,10 @@ class RouteSetTest < ActiveSupport::TestCase
def setup_named_route_test def setup_named_route_test
set.draw do set.draw do
map.show '/people/:id', :controller => 'people', :action => 'show' match '/people(/:id)' => 'people#show', :as => 'show'
map.index '/people', :controller => 'people', :action => 'index' match '/people' => 'people#index', :as => 'index'
map.multi '/people/go/:foo/:bar/joe/:id', :controller => 'people', :action => 'multi' match '/people/go/:foo/:bar/joe(/:id)' => 'people#multi', :as => 'multi'
map.users '/admin/users', :controller => 'admin/users', :action => 'index' match '/admin/users' => 'admin/users#index', :as => 'index'
end end
MockController.build(set.url_helpers).new MockController.build(set.url_helpers).new
@ -843,17 +846,10 @@ class RouteSetTest < ActiveSupport::TestCase
assert_equal({:controller => 'users', :action => 'index', :id => '10'}, set.recognize_path('/users/index/10/')) assert_equal({:controller => 'users', :action => 'index', :id => '10'}, set.recognize_path('/users/index/10/'))
end end
def test_draw_default_route_with_default_controller
set.draw do
match '/:controller/:action/:id' => 'users'
end
assert_equal({:controller => 'users', :action => 'index'}, set.recognize_path('/'))
end
def test_route_with_parameter_shell def test_route_with_parameter_shell
set.draw do set.draw do
match 'page/:id' => 'pages#show', :id => /\d+/ match 'page/:id' => 'pages#show', :id => /\d+/
match '/:controller/:action/:id' match '/:controller(/:action(/:id))'
end end
assert_equal({:controller => 'pages', :action => 'index'}, set.recognize_path('/pages')) assert_equal({:controller => 'pages', :action => 'index'}, set.recognize_path('/pages'))
@ -925,47 +921,6 @@ class RouteSetTest < ActiveSupport::TestCase
assert_equal({:controller => 'pages', :action => 'show', :id => 'hello+world'}, set.recognize_path('/page/hello+world')) assert_equal({:controller => 'pages', :action => 'show', :id => 'hello+world'}, set.recognize_path('/page/hello+world'))
end end
def test_recognize_with_conditions
set.draw do
with_options(:controller => "people") do |people|
people.people "/people", :action => "index", :conditions => { :method => :get }
people.connect "/people", :action => "create", :conditions => { :method => :post }
people.person "/people/:id", :action => "show", :conditions => { :method => :get }
people.connect "/people/:id", :action => "update", :conditions => { :method => :put }
people.connect "/people/:id", :action => "destroy", :conditions => { :method => :delete }
end
end
params = set.recognize_path("/people", :method => :get)
assert_equal("index", params[:action])
params = set.recognize_path("/people", :method => :post)
assert_equal("create", params[:action])
params = set.recognize_path("/people", :method => :put)
assert_equal("update", params[:action])
assert_raise(ActionController::UnknownHttpMethod) {
set.recognize_path("/people", :method => :bacon)
}
params = set.recognize_path("/people/5", :method => :get)
assert_equal("show", params[:action])
assert_equal("5", params[:id])
params = set.recognize_path("/people/5", :method => :put)
assert_equal("update", params[:action])
assert_equal("5", params[:id])
params = set.recognize_path("/people/5", :method => :delete)
assert_equal("destroy", params[:action])
assert_equal("5", params[:id])
assert_raise(ActionController::RoutingError) {
set.recognize_path("/people/5", :method => :post)
}
end
def test_recognize_with_alias_in_conditions def test_recognize_with_alias_in_conditions
set.draw do set.draw do
match "/people" => 'people#index', :as => 'people', match "/people" => 'people#index', :as => 'people',
@ -999,7 +954,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_routing_traversal_does_not_load_extra_classes def test_routing_traversal_does_not_load_extra_classes
assert !Object.const_defined?("Profiler__"), "Profiler should not be loaded" assert !Object.const_defined?("Profiler__"), "Profiler should not be loaded"
set.draw do set.draw do
match '/profile' => 'profile' match '/profile' => 'profile#index'
end end
params = set.recognize_path("/profile") rescue nil params = set.recognize_path("/profile") rescue nil
@ -1031,7 +986,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_generate_with_default_action def test_generate_with_default_action
set.draw do set.draw do
match "/people", :controller => "people" match "/people", :controller => "people", :action => "index"
match "/people/list", :controller => "people", :action => "list" match "/people/list", :controller => "people", :action => "list"
end end
@ -1040,7 +995,7 @@ class RouteSetTest < ActiveSupport::TestCase
end end
def test_root_map def test_root_map
set.draw { root :to => 'people' } set.draw { root :to => 'people#index' }
params = set.recognize_path("", :method => :get) params = set.recognize_path("", :method => :get)
assert_equal("people", params[:controller]) assert_equal("people", params[:controller])
@ -1063,11 +1018,9 @@ class RouteSetTest < ActiveSupport::TestCase
def test_namespaced_root_map def test_namespaced_root_map
set.draw do set.draw do
namespace 'api' do namespace 'api' do
root :to => 'products' root :to => 'products#index'
end end
end end
params = set.recognize_path("/api", :method => :get) params = set.recognize_path("/api", :method => :get)
@ -1077,7 +1030,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_namespace_with_path_prefix def test_namespace_with_path_prefix
set.draw do set.draw do
namespace 'api', :path_prefix => 'prefix' do scope :module => "api", :path => "prefix" do
match 'inventory' => 'products#inventory' match 'inventory' => 'products#inventory'
end end
end end
@ -1089,7 +1042,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_namespace_with_blank_path_prefix def test_namespace_with_blank_path_prefix
set.draw do set.draw do
namespace 'api', :path_prefix => '' do |api| scope :module => "api", :path => "" do
match 'inventory' => 'products#inventory' match 'inventory' => 'products#inventory'
end end
end end
@ -1147,14 +1100,22 @@ class RouteSetTest < ActiveSupport::TestCase
end end
def test_generate_with_path_prefix def test_generate_with_path_prefix
set.draw { match ':controller/:action/:id', :path_prefix => 'my' } set.draw do
scope "my" do
match ':controller(/:action(/:id))'
end
end
args = { :controller => "foo", :action => "bar", :id => "7", :x => "y" } args = { :controller => "foo", :action => "bar", :id => "7", :x => "y" }
assert_equal "/my/foo/bar/7?x=y", set.generate(args) assert_equal "/my/foo/bar/7?x=y", set.generate(args)
end end
def test_generate_with_blank_path_prefix def test_generate_with_blank_path_prefix
set.draw { match ':controller/:action/:id', :path_prefix => '' } set.draw do
scope "" do
match ':controller(/:action(/:id))'
end
end
args = { :controller => "foo", :action => "bar", :id => "7", :x => "y" } args = { :controller => "foo", :action => "bar", :id => "7", :x => "y" }
assert_equal "/foo/bar/7?x=y", set.generate(args) assert_equal "/foo/bar/7?x=y", set.generate(args)
@ -1162,9 +1123,9 @@ class RouteSetTest < ActiveSupport::TestCase
def test_named_routes_are_never_relative_to_modules def test_named_routes_are_never_relative_to_modules
set.draw do set.draw do
match "/connection/manage/:action" => 'connection/manage' match "/connection/manage(/:action)" => 'connection/manage#index'
match "/connection/connection" => "connection/connection" match "/connection/connection" => "connection/connection#index"
match '/connection' => 'connection', :as => 'family_connection' match '/connection' => 'connection#index', :as => 'family_connection'
end end
url = set.generate({:controller => "connection"}, {:controller => 'connection/manage'}) url = set.generate({:controller => "connection"}, {:controller => 'connection/manage'})
@ -1176,7 +1137,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_action_left_off_when_id_is_recalled def test_action_left_off_when_id_is_recalled
set.draw do set.draw do
match ':controller/:action/:id' match ':controller(/:action(/:id))'
end end
assert_equal '/books', set.generate( assert_equal '/books', set.generate(
{:controller => 'books', :action => 'index'}, {:controller => 'books', :action => 'index'},
@ -1187,7 +1148,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_query_params_will_be_shown_when_recalled def test_query_params_will_be_shown_when_recalled
set.draw do set.draw do
match 'show_weblog/:parameter' => 'weblog#show' match 'show_weblog/:parameter' => 'weblog#show'
match ':controller/:action/:id' match ':controller(/:action(/:id))'
end end
assert_equal '/weblog/edit?parameter=1', set.generate( assert_equal '/weblog/edit?parameter=1', set.generate(
{:action => 'edit', :parameter => 1}, {:action => 'edit', :parameter => 1},
@ -1197,7 +1158,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_format_is_not_inherit def test_format_is_not_inherit
set.draw do set.draw do
match '/posts.:format' => 'posts' match '/posts(.:format)' => 'posts#index'
end end
assert_equal '/posts', set.generate( assert_equal '/posts', set.generate(
@ -1234,7 +1195,7 @@ class RouteSetTest < ActiveSupport::TestCase
assert_nothing_raised do assert_nothing_raised do
set.draw do set.draw do
namespace :admin do namespace :admin do
root :to => 'home' root :to => "home#index"
end end
end end
end end
@ -1244,7 +1205,7 @@ class RouteSetTest < ActiveSupport::TestCase
assert_nothing_raised do assert_nothing_raised do
set.draw do set.draw do
namespace 'admin' do namespace 'admin' do
root :to => 'home' root :to => "home#index"
end end
end end
end end
@ -1262,7 +1223,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_route_constraints_with_supported_options_must_not_error def test_route_constraints_with_supported_options_must_not_error
assert_nothing_raised do assert_nothing_raised do
set.draw do set.draw do
map.connect 'page/:name' => 'pages#show', match 'page/:name' => 'pages#show',
:constraints => {:name => /(david|jamis)/i} :constraints => {:name => /(david|jamis)/i}
end end
end end
@ -1349,7 +1310,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_route_requirement_generate_with_xi_modifiers def test_route_requirement_generate_with_xi_modifiers
set.draw do set.draw do
map.connect 'page/:name' => 'pages#show', match 'page/:name' => 'pages#show',
:constraints => {:name => / # Desperately overcommented regexp :constraints => {:name => / # Desperately overcommented regexp
( #Either ( #Either
david #The Creator david #The Creator
@ -1364,7 +1325,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_route_requirement_recognize_with_xi_modifiers def test_route_requirement_recognize_with_xi_modifiers
set.draw do set.draw do
map.connect 'page/:name' => 'pages#show', match 'page/:name' => 'pages#show',
:constraints => {:name => / # Desperately overcommented regexp :constraints => {:name => / # Desperately overcommented regexp
( #Either ( #Either
david #The Creator david #The Creator
@ -1419,7 +1380,7 @@ class RouteSetTest < ActiveSupport::TestCase
def test_segmentation_of_dynamic_dot_path def test_segmentation_of_dynamic_dot_path
set.draw do set.draw do
match '/books/:action.:format', :controller => 'books' match '/books(/:action(.:format))', :controller => 'books'
end end
assert_equal '/books/list.rss', set.generate(:controller => 'books', :action => 'list', :format => 'rss') assert_equal '/books/list.rss', set.generate(:controller => 'books', :action => 'list', :format => 'rss')
@ -1434,11 +1395,8 @@ class RouteSetTest < ActiveSupport::TestCase
end end
def test_slashes_are_implied def test_slashes_are_implied
['/:controller/:action/:id/', '/:controller/:action/:id',
':controller/:action/:id', '/:controller/:action/:id/'
].each do |path|
@set = nil @set = nil
set.draw { match(path) } set.draw { match("/:controller(/:action(/:id))") }
assert_equal '/content', set.generate(:controller => 'content', :action => 'index') assert_equal '/content', set.generate(:controller => 'content', :action => 'index')
assert_equal '/content/list', set.generate(:controller => 'content', :action => 'list') assert_equal '/content/list', set.generate(:controller => 'content', :action => 'list')
@ -1449,7 +1407,6 @@ class RouteSetTest < ActiveSupport::TestCase
assert_equal({:controller => "content", :action => "list"}, set.recognize_path('/content/list')) assert_equal({:controller => "content", :action => "list"}, set.recognize_path('/content/list'))
assert_equal({:controller => "content", :action => "show", :id => "1"}, set.recognize_path('/content/show/1')) assert_equal({:controller => "content", :action => "show", :id => "1"}, set.recognize_path('/content/show/1'))
end end
end
def test_default_route_recognition def test_default_route_recognition
expected = {:controller => 'pages', :action => 'show', :id => '10'} expected = {:controller => 'pages', :action => 'show', :id => '10'}
@ -1591,29 +1548,29 @@ class RackMountIntegrationTests < ActiveSupport::TestCase
end end
namespace 'api' do namespace 'api' do
root :controller => 'users' root :controller => 'users#index'
end end
map.connect 'blog/:year/:month/:day', match 'blog/:year/:month/:day',
:controller => 'posts', :controller => 'posts',
:action => 'show_date', :action => 'show_date',
:constraints => { :year => /(19|20)\d\d/, :month => /[01]?\d/, :day => /[0-3]?\d/}, :constraints => { :year => /(19|20)\d\d/, :month => /[01]?\d/, :day => /[0-3]?\d/},
:day => nil, :day => nil,
:month => nil :month => nil
map.blog('archive/:year', :controller => 'archive', :action => 'index', match 'archive/:year', :controller => 'archive', :action => 'index',
:defaults => { :year => nil }, :defaults => { :year => nil },
:constraints => { :year => /\d{4}/ } :constraints => { :year => /\d{4}/ },
) :as => "blog"
map.resources :people resources :people
map.connect 'legacy/people', :controller => 'people', :action => 'index', :legacy => 'true' match 'legacy/people', :controller => 'people', :action => 'index', :legacy => 'true'
map.connect 'symbols', :controller => :symbols, :action => :show, :name => :as_symbol match 'symbols', :controller => :symbols, :action => :show, :name => :as_symbol
map.connect 'id_default/:id', :controller => 'foo', :action => 'id_default', :id => 1 match 'id_default/:id', :controller => 'foo', :action => 'id_default', :id => 1
map.connect 'get_or_post', :controller => 'foo', :action => 'get_or_post', :conditions => { :method => [:get, :post] } match 'get_or_post', :controller => 'foo', :action => 'get_or_post', :conditions => { :method => [:get, :post] }
map.connect 'optional/:optional', :controller => 'posts', :action => 'index' match 'optional/:optional', :controller => 'posts', :action => 'index'
map.project 'projects/:project_id', :controller => 'project' match 'projects/:project_id', :controller => 'project', :action => "index", :as => "project"
map.connect 'clients', :controller => 'projects', :action => 'index' map.connect 'clients', :controller => 'projects', :action => 'index'
map.connect 'ignorecase/geocode/:postalcode', :controller => 'geocode', map.connect 'ignorecase/geocode/:postalcode', :controller => 'geocode',
@ -1626,15 +1583,15 @@ class RackMountIntegrationTests < ActiveSupport::TestCase
/x /x
} }
map.connect '', :controller => 'news', :format => nil match '', :controller => 'news', :format => nil
map.connect 'news.:format', :controller => 'news' match 'news(.:format)', :controller => 'news'
match
map.connect 'comment/:id/:action', :controller => 'comments', :action => 'show' match 'comment/:id/:action', :controller => 'comments', :action => 'show'
map.connect 'ws/:controller/:action/:id', :ws => true match 'ws/:controller/:action/:id', :ws => true
map.connect 'account/:action', :controller => :account, :action => :subscription match 'account/:action', :controller => :account, :action => :subscription
map.connect 'pages/:page_id/:controller/:action/:id' match 'pages/:page_id/:controller/:action/:id'
map.connect ':controller/ping', :action => 'ping' match ':controller/ping', :action => 'ping'
map.connect ':controller/:action/:id' match ':controller(/:action(/:id))'
} }
def setup def setup
@ -1648,7 +1605,7 @@ class RackMountIntegrationTests < ActiveSupport::TestCase
assert_raise(ActionController::RoutingError) do assert_raise(ActionController::RoutingError) do
@routes.draw do @routes.draw do
match 'file/*path' => 'content#show_file', :path => %w(fake default), :as => :path match 'file/*path' => 'content#show_file', :path => %w(fake default), :as => :path
match ':controller/:action/:id' match ':controller(/:action(/:id))'
end end
end end
end end