mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
98 lines
3.2 KiB
Ruby
98 lines
3.2 KiB
Ruby
|
require 'test/unit'
|
||
|
require 'rails/application/route_inspector'
|
||
|
require 'action_controller'
|
||
|
|
||
|
module ApplicationTests
|
||
|
class RouteInspectTest < Test::Unit::TestCase
|
||
|
def setup
|
||
|
@set = ActionDispatch::Routing::RouteSet.new
|
||
|
@inspector = Rails::Application::RouteInspector.new
|
||
|
end
|
||
|
|
||
|
def test_cart_inspect
|
||
|
@set.draw do
|
||
|
get '/cart', :to => 'cart#show'
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal ["cart GET /cart(.:format) cart#show"], output
|
||
|
end
|
||
|
|
||
|
def test_inspect_shows_custom_assets
|
||
|
@set.draw do
|
||
|
get '/custom/assets', :to => 'custom_assets#show'
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal ["custom_assets GET /custom/assets(.:format) custom_assets#show"], output
|
||
|
end
|
||
|
|
||
|
def test_inspect_routes_shows_resources_route
|
||
|
@set.draw do
|
||
|
resources :articles
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
expected = [
|
||
|
" articles GET /articles(.:format) articles#index",
|
||
|
" POST /articles(.:format) articles#create",
|
||
|
" new_article GET /articles/new(.:format) articles#new",
|
||
|
"edit_article GET /articles/:id/edit(.:format) articles#edit",
|
||
|
" article GET /articles/:id(.:format) articles#show",
|
||
|
" PUT /articles/:id(.:format) articles#update",
|
||
|
" DELETE /articles/:id(.:format) articles#destroy" ]
|
||
|
assert_equal expected, output
|
||
|
end
|
||
|
|
||
|
def test_inspect_routes_shows_root_route
|
||
|
@set.draw do
|
||
|
root :to => 'pages#main'
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal ["root / pages#main"], output
|
||
|
end
|
||
|
|
||
|
def test_inspect_routes_shows_controller_and_action_only_route
|
||
|
@set.draw do
|
||
|
match ':controller/:action'
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal [" /:controller/:action(.:format) "], output
|
||
|
end
|
||
|
|
||
|
def test_inspect_routes_shows_controller_and_action_route_with_constraints
|
||
|
@set.draw do
|
||
|
match ':controller(/:action(/:id))', :id => /\d+/
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal [" /:controller(/:action(/:id))(.:format) {:id=>/\\d+/}"], output
|
||
|
end
|
||
|
|
||
|
def test_rake_routes_shows_route_with_defaults
|
||
|
@set.draw do
|
||
|
match 'photos/:id' => 'photos#show', :defaults => {:format => 'jpg'}
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal [%Q[ /photos/:id(.:format) photos#show {:format=>"jpg"}]], output
|
||
|
end
|
||
|
|
||
|
def test_rake_routes_shows_route_with_constraints
|
||
|
@set.draw do
|
||
|
match 'photos/:id' => 'photos#show', :id => /[A-Z]\d{5}/
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal [" /photos/:id(.:format) photos#show {:id=>/[A-Z]\\d{5}/}"], output
|
||
|
end
|
||
|
|
||
|
class RackApp
|
||
|
def self.call(env)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_rake_routes_shows_route_with_rack_app
|
||
|
@set.draw do
|
||
|
match 'foo/:id' => RackApp, :id => /[A-Z]\d{5}/
|
||
|
end
|
||
|
output = @inspector.format @set.routes
|
||
|
assert_equal [" /foo/:id(.:format) #{RackApp.name} {:id=>/[A-Z]\\d{5}/}"], output
|
||
|
end
|
||
|
end
|
||
|
end
|