From a5c82a9dfb6d63bf90a3378da0b71d6ea592d7e3 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 20 Oct 2009 16:03:55 -0500 Subject: Start rewriting some internal tests to use the new routing dsl --- actionpack/test/dispatch/request/json_params_parsing_test.rb | 2 +- actionpack/test/dispatch/request/query_string_parsing_test.rb | 2 +- actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb | 2 +- actionpack/test/dispatch/request/xml_params_parsing_test.rb | 2 +- actionpack/test/dispatch/session/cookie_store_test.rb | 2 +- actionpack/test/dispatch/session/mem_cache_store_test.rb | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) (limited to 'actionpack/test/dispatch') diff --git a/actionpack/test/dispatch/request/json_params_parsing_test.rb b/actionpack/test/dispatch/request/json_params_parsing_test.rb index db6cf7b330..3c2408de5f 100644 --- a/actionpack/test/dispatch/request/json_params_parsing_test.rb +++ b/actionpack/test/dispatch/request/json_params_parsing_test.rb @@ -57,7 +57,7 @@ class JsonParamsParsingTest < ActionController::IntegrationTest def with_test_routing with_routing do |set| set.draw do |map| - map.connect ':action', :controller => "json_params_parsing_test/test" + match ':action', :to => TestController end yield end diff --git a/actionpack/test/dispatch/request/query_string_parsing_test.rb b/actionpack/test/dispatch/request/query_string_parsing_test.rb index a31e326ddf..b764478d87 100644 --- a/actionpack/test/dispatch/request/query_string_parsing_test.rb +++ b/actionpack/test/dispatch/request/query_string_parsing_test.rb @@ -109,7 +109,7 @@ class QueryStringParsingTest < ActionController::IntegrationTest def assert_parses(expected, actual) with_routing do |set| set.draw do |map| - map.connect ':action', :controller => "query_string_parsing_test/test" + match ':action', :to => TestController end get "/parse", actual diff --git a/actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb b/actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb index 7167cdafac..e98a49980e 100644 --- a/actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb +++ b/actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb @@ -130,7 +130,7 @@ class UrlEncodedParamsParsingTest < ActionController::IntegrationTest def with_test_routing with_routing do |set| set.draw do |map| - map.connect ':action', :controller => "url_encoded_params_parsing_test/test" + match ':action', :to => TestController end yield end diff --git a/actionpack/test/dispatch/request/xml_params_parsing_test.rb b/actionpack/test/dispatch/request/xml_params_parsing_test.rb index 521002b519..0dc47ed9d5 100644 --- a/actionpack/test/dispatch/request/xml_params_parsing_test.rb +++ b/actionpack/test/dispatch/request/xml_params_parsing_test.rb @@ -84,7 +84,7 @@ class XmlParamsParsingTest < ActionController::IntegrationTest def with_test_routing with_routing do |set| set.draw do |map| - map.connect ':action', :controller => "xml_params_parsing_test/test" + match ':action', :to => TestController end yield end diff --git a/actionpack/test/dispatch/session/cookie_store_test.rb b/actionpack/test/dispatch/session/cookie_store_test.rb index ab5fabde65..edfc303d3d 100644 --- a/actionpack/test/dispatch/session/cookie_store_test.rb +++ b/actionpack/test/dispatch/session/cookie_store_test.rb @@ -219,7 +219,7 @@ class CookieStoreTest < ActionController::IntegrationTest def with_test_route_set(options = {}) with_routing do |set| set.draw do |map| - map.connect "/:action", :controller => "cookie_store_test/test" + match ':action', :to => TestController end options = {:key => SessionKey, :secret => SessionSecret}.merge(options) @app = ActionDispatch::Session::CookieStore.new(set, options) diff --git a/actionpack/test/dispatch/session/mem_cache_store_test.rb b/actionpack/test/dispatch/session/mem_cache_store_test.rb index c7435bd06b..afc9d91d50 100644 --- a/actionpack/test/dispatch/session/mem_cache_store_test.rb +++ b/actionpack/test/dispatch/session/mem_cache_store_test.rb @@ -112,7 +112,7 @@ class MemCacheStoreTest < ActionController::IntegrationTest def with_test_route_set with_routing do |set| set.draw do |map| - map.connect "/:action", :controller => "mem_cache_store_test/test" + match ':action', :to => TestController end @app = ActionDispatch::Session::MemCacheStore.new(set, :key => '_session_id') yield -- cgit v1.2.3 From 759f2ccc4cebd28534aee9511af8ba3a33e33a80 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 27 Oct 2009 18:26:53 -0500 Subject: Start migrating AC routing tests into dispatch folder --- actionpack/test/dispatch/routing_test.rb | 336 +++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100644 actionpack/test/dispatch/routing_test.rb (limited to 'actionpack/test/dispatch') diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb new file mode 100644 index 0000000000..ea7113a602 --- /dev/null +++ b/actionpack/test/dispatch/routing_test.rb @@ -0,0 +1,336 @@ +require 'abstract_unit' +require 'controller/fake_controllers' + +class TestRoutingMapper < ActionDispatch::IntegrationTest + SprocketsApp = lambda { |env| + [200, {"Content-Type" => "text/html"}, ["javascripts"]] + } + + class IpRestrictor + def self.matches?(request) + request.ip =~ /192\.168\.1\.1\d\d/ + end + end + + class Dispatcher + def self.new(*args) + lambda { |env| + params = env['action_dispatch.request.path_parameters'] + controller, action = params[:controller], params[:action] + [200, {'Content-Type' => 'text/html'}, ["#{controller}##{action}"]] + } + end + end + old_dispatcher = ActionDispatch::Routing::RouteSet::Dispatcher + ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } + ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, Dispatcher } + + Routes = ActionDispatch::Routing::RouteSet.new + Routes.draw do + controller :sessions do + get 'login', :to => :new, :as => :login + post 'login', :to => :create + + delete 'logout', :to => :destroy, :as => :logout + end + + match 'account/login', :to => redirect("/login") + + match 'openid/login', :via => [:get, :post], :to => "openid#login" + + controller(:global) do + match 'global/:action' + match 'global/export', :to => :export, :as => :export_request + match 'global/hide_notice', :to => :hide_notice, :as => :hide_notice + match '/export/:id/:file', :to => :export, :as => :export_download, :constraints => { :file => /.*/ } + end + + constraints(:ip => /192\.168\.1\.\d\d\d/) do + get 'admin', :to => "queenbee#index" + end + + constraints IpRestrictor do + get 'admin/accounts', :to => "queenbee#accounts" + end + + resources :projects, :controller => :project do + resources :involvements, :attachments + + resources :participants do + put :update_all, :on => :collection + end + + resources :companies do + resources :people + resource :avatar + end + + resources :images do + post :revise, :on => :member + end + + resources :people do + namespace ":access_token" do + resource :avatar + end + + member do + put :accessible_projects + post :resend, :generate_new_password + end + end + + resources :posts do + get :archive, :toggle_view, :on => :collection + post :preview, :on => :member + + resource :subscription + + resources :comments do + post :preview, :on => :collection + end + end + end + + match 'sprockets.js', :to => SprocketsApp + + match 'people/:id/update', :to => 'people#update', :as => :update_person + match '/projects/:project_id/people/:id/update', :to => 'people#update', :as => :update_project_person + + # misc + match 'articles/:year/:month/:day/:title', :to => "articles#show", :as => :article + + namespace :account do + resource :subscription, :credit, :credit_card + end + + controller :articles do + scope 'articles' do + scope ':title', :title => /[a-z]+/, :as => :with_title do + match ':id', :to => :with_id + end + end + end + + scope ':access_token', :constraints => { :access_token => /\w{5,5}/ } do + resources :rooms + end + end + ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } + ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, old_dispatcher } + + def app + Routes + end + + def setup + Routes.install_helpers(metaclass) + end + + def test_logout + delete '/logout' + assert_equal 'sessions#destroy', @response.body + + # assert_equal '/logout', logout_path + end + + def test_login + get '/login' + assert_equal 'sessions#new', @response.body + + post '/login' + assert_equal 'sessions#create', @response.body + + # assert_equal '/login', app.login_path + end + + def test_login_redirect + get '/account/login' + assert_equal 301, @response.status + assert_equal 'http://www.example.com/login', @response.headers['Location'] + assert_equal 'Moved Permanently', @response.body + end + + def test_openid + get '/openid/login' + assert_equal 'openid#login', @response.body + + post '/openid/login' + assert_equal 'openid#login', @response.body + end + + # def test_admin + # get '/admin', {}, {'REMOTE_ADDR' => '192.168.1.100'} + # assert_equal 'queenbee#index', @response.body + # + # assert_raise(ActionController::RoutingError) { get '/admin', {}, {'REMOTE_ADDR' => '10.0.0.100'} } + # + # get '/admin/accounts', {}, {'REMOTE_ADDR' => '192.168.1.100'} + # assert_equal 'queenbee#accounts', @response.body + # + # assert_raise(ActionController::RoutingError) { get '/admin/accounts', {}, {'REMOTE_ADDR' => '10.0.0.100'} } + # end + + def test_global + get '/global/dashboard' + assert_equal 'global#dashboard', @response.body + + get '/global/export' + assert_equal 'global#export', @response.body + + get '/global/hide_notice' + assert_equal 'global#hide_notice', @response.body + + get '/export/123/foo.txt' + assert_equal 'global#export', @response.body + + # assert_equal '/global/export', app.export_request_path + # assert_equal '/global/hide_notice', app.hide_notice_path + # assert_equal '/export/123/foo.txt', app.export_download_path(:id => 123, :file => 'foo.txt') + end + + def test_projects + get '/projects/1' + assert_equal 'projects#show', @response.body + end + + def test_projects_involvements + get '/projects/1/involvements' + assert_equal 'involvements#index', @response.body + + get '/projects/1/involvements/1' + assert_equal 'involvements#show', @response.body + end + + def test_projects_attachments + get '/projects/1/attachments' + assert_equal 'attachments#index', @response.body + end + + def test_projects_participants + get '/projects/1/participants' + assert_equal 'participants#index', @response.body + + put '/projects/1/participants/update_all' + assert_equal 'participants#update_all', @response.body + end + + def test_projects_companies + get '/projects/1/companies' + assert_equal 'companies#index', @response.body + + get '/projects/1/companies/1/people' + assert_equal 'people#index', @response.body + + get '/projects/1/companies/1/avatar' + assert_equal 'avatar#show', @response.body + end + + def test_project_images + get '/projects/1/images' + assert_equal 'images#index', @response.body + + post '/projects/1/images/1/revise' + assert_equal 'images#revise', @response.body + end + + def test_projects_people + get '/projects/1/people' + assert_equal 'people#index', @response.body + + get '/projects/1/people/1' + assert_equal 'people#show', @response.body + + get '/projects/1/people/1/7a2dec8/avatar' + assert_equal 'avatar#show', @response.body + + put '/projects/1/people/1/accessible_projects' + assert_equal 'people#accessible_projects', @response.body + + post '/projects/1/people/1/resend' + assert_equal 'people#resend', @response.body + + post '/projects/1/people/1/generate_new_password' + assert_equal 'people#generate_new_password', @response.body + end + + def test_projects_posts + get '/projects/1/posts' + assert_equal 'posts#index', @response.body + + get '/projects/1/posts/archive' + assert_equal 'posts#archive', @response.body + + get '/projects/1/posts/toggle_view' + assert_equal 'posts#toggle_view', @response.body + + post '/projects/1/posts/1/preview' + assert_equal 'posts#preview', @response.body + + get '/projects/1/posts/1/subscription' + assert_equal 'subscription#show', @response.body + + get '/projects/1/posts/1/comments' + assert_equal 'comments#index', @response.body + + post '/projects/1/posts/1/comments/preview' + assert_equal 'comments#preview', @response.body + end + + def test_sprockets + get '/sprockets.js' + assert_equal 'javascripts', @response.body + end + + def test_update_person_route + get '/people/1/update' + assert_equal 'people#update', @response.body + + # assert_equal '/people/1/update', app.update_person_path(:id => 1) + end + + def test_update_project_person + get '/projects/1/people/2/update' + assert_equal 'people#update', @response.body + + # assert_equal '/projects/1/people/2/update', app.update_project_person_path(:project_id => 1, :id => 2) + end + + def test_articles_perma + get '/articles/2009/08/18/rails-3' + assert_equal 'articles#show', @response.body + + # assert_equal '/articles/2009/8/18/rails-3', app.article_path(:year => 2009, :month => 8, :day => 18, :title => 'rails-3') + end + + def test_account_namespace + get '/account/subscription' + assert_equal 'subscription#show', @response.body + + get '/account/credit' + assert_equal 'credit#show', @response.body + + get '/account/credit_card' + assert_equal 'credit_card#show', @response.body + end + + def test_articles_with_id + get '/articles/rails/1' + assert_equal 'articles#with_id', @response.body + + assert_raise(ActionController::RoutingError) { get '/articles/123/1' } + + # assert_equal '/articles/rails/1', app.with_title_path(:title => 'rails', :id => 1) + end + + def test_access_token_rooms + get '/12345/rooms' + assert_equal 'rooms#index', @response.body + + get '/12345/rooms/1' + assert_equal 'rooms#show', @response.body + + get '/12345/rooms/1/edit' + assert_equal 'rooms#edit', @response.body + end +end -- cgit v1.2.3 From e296ea056e87027933c7d37e1e8c1f6ef73bc447 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 27 Oct 2009 19:32:31 -0500 Subject: Enable named route tests --- actionpack/test/dispatch/routing_test.rb | 280 ++++++++++++++++++------------- 1 file changed, 166 insertions(+), 114 deletions(-) (limited to 'actionpack/test/dispatch') diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index ea7113a602..972bf73602 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -21,12 +21,12 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest } end end + old_dispatcher = ActionDispatch::Routing::RouteSet::Dispatcher ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, Dispatcher } - Routes = ActionDispatch::Routing::RouteSet.new - Routes.draw do + Routes.draw do |map| controller :sessions do get 'login', :to => :new, :as => :login post 'login', :to => :create @@ -123,214 +123,266 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest Routes end - def setup - Routes.install_helpers(metaclass) - end - def test_logout - delete '/logout' - assert_equal 'sessions#destroy', @response.body + with_test_routes do + delete '/logout' + assert_equal 'sessions#destroy', @response.body - # assert_equal '/logout', logout_path + assert_equal '/logout', logout_path + end end def test_login - get '/login' - assert_equal 'sessions#new', @response.body + with_test_routes do + get '/login' + assert_equal 'sessions#new', @response.body - post '/login' - assert_equal 'sessions#create', @response.body + post '/login' + assert_equal 'sessions#create', @response.body - # assert_equal '/login', app.login_path + assert_equal '/login', login_path + end end def test_login_redirect - get '/account/login' - assert_equal 301, @response.status - assert_equal 'http://www.example.com/login', @response.headers['Location'] - assert_equal 'Moved Permanently', @response.body + with_test_routes do + get '/account/login' + assert_equal 301, @response.status + assert_equal 'http://www.example.com/login', @response.headers['Location'] + assert_equal 'Moved Permanently', @response.body + end end def test_openid - get '/openid/login' - assert_equal 'openid#login', @response.body + with_test_routes do + get '/openid/login' + assert_equal 'openid#login', @response.body - post '/openid/login' - assert_equal 'openid#login', @response.body + post '/openid/login' + assert_equal 'openid#login', @response.body + end end + # TODO: rackmount is broken # def test_admin - # get '/admin', {}, {'REMOTE_ADDR' => '192.168.1.100'} - # assert_equal 'queenbee#index', @response.body + # with_test_routes do + # get '/admin', {}, {'REMOTE_ADDR' => '192.168.1.100'} + # assert_equal 'queenbee#index', @response.body # - # assert_raise(ActionController::RoutingError) { get '/admin', {}, {'REMOTE_ADDR' => '10.0.0.100'} } + # assert_raise(ActionController::RoutingError) { get '/admin', {}, {'REMOTE_ADDR' => '10.0.0.100'} } # - # get '/admin/accounts', {}, {'REMOTE_ADDR' => '192.168.1.100'} - # assert_equal 'queenbee#accounts', @response.body + # get '/admin/accounts', {}, {'REMOTE_ADDR' => '192.168.1.100'} + # assert_equal 'queenbee#accounts', @response.body # - # assert_raise(ActionController::RoutingError) { get '/admin/accounts', {}, {'REMOTE_ADDR' => '10.0.0.100'} } + # assert_raise(ActionController::RoutingError) { get '/admin/accounts', {}, {'REMOTE_ADDR' => '10.0.0.100'} } + # end # end def test_global - get '/global/dashboard' - assert_equal 'global#dashboard', @response.body + with_test_routes do + get '/global/dashboard' + assert_equal 'global#dashboard', @response.body - get '/global/export' - assert_equal 'global#export', @response.body + get '/global/export' + assert_equal 'global#export', @response.body - get '/global/hide_notice' - assert_equal 'global#hide_notice', @response.body + get '/global/hide_notice' + assert_equal 'global#hide_notice', @response.body - get '/export/123/foo.txt' - assert_equal 'global#export', @response.body + get '/export/123/foo.txt' + assert_equal 'global#export', @response.body - # assert_equal '/global/export', app.export_request_path - # assert_equal '/global/hide_notice', app.hide_notice_path - # assert_equal '/export/123/foo.txt', app.export_download_path(:id => 123, :file => 'foo.txt') + assert_equal '/global/export', export_request_path + assert_equal '/global/hide_notice', hide_notice_path + assert_equal '/export/123/foo.txt', export_download_path(:id => 123, :file => 'foo.txt') + end end def test_projects - get '/projects/1' - assert_equal 'projects#show', @response.body + with_test_routes do + get '/projects/1' + assert_equal 'projects#show', @response.body + end end def test_projects_involvements - get '/projects/1/involvements' - assert_equal 'involvements#index', @response.body + with_test_routes do + get '/projects/1/involvements' + assert_equal 'involvements#index', @response.body - get '/projects/1/involvements/1' - assert_equal 'involvements#show', @response.body + get '/projects/1/involvements/1' + assert_equal 'involvements#show', @response.body + end end def test_projects_attachments - get '/projects/1/attachments' - assert_equal 'attachments#index', @response.body + with_test_routes do + get '/projects/1/attachments' + assert_equal 'attachments#index', @response.body + end end def test_projects_participants - get '/projects/1/participants' - assert_equal 'participants#index', @response.body + with_test_routes do + get '/projects/1/participants' + assert_equal 'participants#index', @response.body - put '/projects/1/participants/update_all' - assert_equal 'participants#update_all', @response.body + put '/projects/1/participants/update_all' + assert_equal 'participants#update_all', @response.body + end end def test_projects_companies - get '/projects/1/companies' - assert_equal 'companies#index', @response.body + with_test_routes do + get '/projects/1/companies' + assert_equal 'companies#index', @response.body - get '/projects/1/companies/1/people' - assert_equal 'people#index', @response.body + get '/projects/1/companies/1/people' + assert_equal 'people#index', @response.body - get '/projects/1/companies/1/avatar' - assert_equal 'avatar#show', @response.body + get '/projects/1/companies/1/avatar' + assert_equal 'avatar#show', @response.body + end end def test_project_images - get '/projects/1/images' - assert_equal 'images#index', @response.body + with_test_routes do + get '/projects/1/images' + assert_equal 'images#index', @response.body - post '/projects/1/images/1/revise' - assert_equal 'images#revise', @response.body + post '/projects/1/images/1/revise' + assert_equal 'images#revise', @response.body + end end def test_projects_people - get '/projects/1/people' - assert_equal 'people#index', @response.body + with_test_routes do + get '/projects/1/people' + assert_equal 'people#index', @response.body - get '/projects/1/people/1' - assert_equal 'people#show', @response.body + get '/projects/1/people/1' + assert_equal 'people#show', @response.body - get '/projects/1/people/1/7a2dec8/avatar' - assert_equal 'avatar#show', @response.body + get '/projects/1/people/1/7a2dec8/avatar' + assert_equal 'avatar#show', @response.body - put '/projects/1/people/1/accessible_projects' - assert_equal 'people#accessible_projects', @response.body + put '/projects/1/people/1/accessible_projects' + assert_equal 'people#accessible_projects', @response.body - post '/projects/1/people/1/resend' - assert_equal 'people#resend', @response.body + post '/projects/1/people/1/resend' + assert_equal 'people#resend', @response.body - post '/projects/1/people/1/generate_new_password' - assert_equal 'people#generate_new_password', @response.body + post '/projects/1/people/1/generate_new_password' + assert_equal 'people#generate_new_password', @response.body + end end def test_projects_posts - get '/projects/1/posts' - assert_equal 'posts#index', @response.body + with_test_routes do + get '/projects/1/posts' + assert_equal 'posts#index', @response.body - get '/projects/1/posts/archive' - assert_equal 'posts#archive', @response.body + get '/projects/1/posts/archive' + assert_equal 'posts#archive', @response.body - get '/projects/1/posts/toggle_view' - assert_equal 'posts#toggle_view', @response.body + get '/projects/1/posts/toggle_view' + assert_equal 'posts#toggle_view', @response.body - post '/projects/1/posts/1/preview' - assert_equal 'posts#preview', @response.body + post '/projects/1/posts/1/preview' + assert_equal 'posts#preview', @response.body - get '/projects/1/posts/1/subscription' - assert_equal 'subscription#show', @response.body + get '/projects/1/posts/1/subscription' + assert_equal 'subscription#show', @response.body - get '/projects/1/posts/1/comments' - assert_equal 'comments#index', @response.body + get '/projects/1/posts/1/comments' + assert_equal 'comments#index', @response.body - post '/projects/1/posts/1/comments/preview' - assert_equal 'comments#preview', @response.body + post '/projects/1/posts/1/comments/preview' + assert_equal 'comments#preview', @response.body + end end def test_sprockets - get '/sprockets.js' - assert_equal 'javascripts', @response.body + with_test_routes do + get '/sprockets.js' + assert_equal 'javascripts', @response.body + end end def test_update_person_route - get '/people/1/update' - assert_equal 'people#update', @response.body + with_test_routes do + get '/people/1/update' + assert_equal 'people#update', @response.body - # assert_equal '/people/1/update', app.update_person_path(:id => 1) + assert_equal '/people/1/update', update_person_path(:id => 1) + end end def test_update_project_person - get '/projects/1/people/2/update' - assert_equal 'people#update', @response.body + with_test_routes do + get '/projects/1/people/2/update' + assert_equal 'people#update', @response.body - # assert_equal '/projects/1/people/2/update', app.update_project_person_path(:project_id => 1, :id => 2) + assert_equal '/projects/1/people/2/update', update_project_person_path(:project_id => 1, :id => 2) + end end def test_articles_perma - get '/articles/2009/08/18/rails-3' - assert_equal 'articles#show', @response.body + with_test_routes do + get '/articles/2009/08/18/rails-3' + assert_equal 'articles#show', @response.body - # assert_equal '/articles/2009/8/18/rails-3', app.article_path(:year => 2009, :month => 8, :day => 18, :title => 'rails-3') + assert_equal '/articles/2009/8/18/rails-3', article_path(:year => 2009, :month => 8, :day => 18, :title => 'rails-3') + end end def test_account_namespace - get '/account/subscription' - assert_equal 'subscription#show', @response.body + with_test_routes do + get '/account/subscription' + assert_equal 'subscription#show', @response.body - get '/account/credit' - assert_equal 'credit#show', @response.body + get '/account/credit' + assert_equal 'credit#show', @response.body - get '/account/credit_card' - assert_equal 'credit_card#show', @response.body + get '/account/credit_card' + assert_equal 'credit_card#show', @response.body + end end def test_articles_with_id - get '/articles/rails/1' - assert_equal 'articles#with_id', @response.body + with_test_routes do + get '/articles/rails/1' + assert_equal 'articles#with_id', @response.body - assert_raise(ActionController::RoutingError) { get '/articles/123/1' } + assert_raise(ActionController::RoutingError) { get '/articles/123/1' } - # assert_equal '/articles/rails/1', app.with_title_path(:title => 'rails', :id => 1) + assert_equal '/articles/rails/1', with_title_path(:title => 'rails', :id => 1) + end end def test_access_token_rooms - get '/12345/rooms' - assert_equal 'rooms#index', @response.body + with_test_routes do + get '/12345/rooms' + assert_equal 'rooms#index', @response.body - get '/12345/rooms/1' - assert_equal 'rooms#show', @response.body + get '/12345/rooms/1' + assert_equal 'rooms#show', @response.body - get '/12345/rooms/1/edit' - assert_equal 'rooms#edit', @response.body + get '/12345/rooms/1/edit' + assert_equal 'rooms#edit', @response.body + end end + + 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 -- cgit v1.2.3 From 43e0bc1c9f39ebf5b253b498b38101a4aba04a45 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 27 Oct 2009 19:48:35 -0500 Subject: Extract routing controller stub helper into abstract unit --- actionpack/test/dispatch/routing_test.rb | 145 ++++++++++++++----------------- 1 file changed, 66 insertions(+), 79 deletions(-) (limited to 'actionpack/test/dispatch') diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 972bf73602..5558cf0154 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -12,112 +12,99 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest end end - class Dispatcher - def self.new(*args) - lambda { |env| - params = env['action_dispatch.request.path_parameters'] - controller, action = params[:controller], params[:action] - [200, {'Content-Type' => 'text/html'}, ["#{controller}##{action}"]] - } - end - end - - old_dispatcher = ActionDispatch::Routing::RouteSet::Dispatcher - ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } - ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, Dispatcher } - Routes = ActionDispatch::Routing::RouteSet.new - Routes.draw do |map| - controller :sessions do - get 'login', :to => :new, :as => :login - post 'login', :to => :create - - delete 'logout', :to => :destroy, :as => :logout - end - - match 'account/login', :to => redirect("/login") - - match 'openid/login', :via => [:get, :post], :to => "openid#login" - - controller(:global) do - match 'global/:action' - match 'global/export', :to => :export, :as => :export_request - match 'global/hide_notice', :to => :hide_notice, :as => :hide_notice - match '/export/:id/:file', :to => :export, :as => :export_download, :constraints => { :file => /.*/ } - end - - constraints(:ip => /192\.168\.1\.\d\d\d/) do - get 'admin', :to => "queenbee#index" - end + stub_controllers do |routes| + Routes = routes + Routes.draw do |map| + controller :sessions do + get 'login', :to => :new, :as => :login + post 'login', :to => :create + + delete 'logout', :to => :destroy, :as => :logout + end - constraints IpRestrictor do - get 'admin/accounts', :to => "queenbee#accounts" - end + match 'account/login', :to => redirect("/login") - resources :projects, :controller => :project do - resources :involvements, :attachments + match 'openid/login', :via => [:get, :post], :to => "openid#login" - resources :participants do - put :update_all, :on => :collection + controller(:global) do + match 'global/:action' + match 'global/export', :to => :export, :as => :export_request + match 'global/hide_notice', :to => :hide_notice, :as => :hide_notice + match '/export/:id/:file', :to => :export, :as => :export_download, :constraints => { :file => /.*/ } end - resources :companies do - resources :people - resource :avatar + constraints(:ip => /192\.168\.1\.\d\d\d/) do + get 'admin', :to => "queenbee#index" end - resources :images do - post :revise, :on => :member + constraints IpRestrictor do + get 'admin/accounts', :to => "queenbee#accounts" end - resources :people do - namespace ":access_token" do - resource :avatar + resources :projects, :controller => :project do + resources :involvements, :attachments + + resources :participants do + put :update_all, :on => :collection end - member do - put :accessible_projects - post :resend, :generate_new_password + resources :companies do + resources :people + resource :avatar + end + + resources :images do + post :revise, :on => :member + end + + resources :people do + namespace ":access_token" do + resource :avatar + end + + member do + put :accessible_projects + post :resend, :generate_new_password + end end - end - resources :posts do - get :archive, :toggle_view, :on => :collection - post :preview, :on => :member + resources :posts do + get :archive, :toggle_view, :on => :collection + post :preview, :on => :member - resource :subscription + resource :subscription - resources :comments do - post :preview, :on => :collection + resources :comments do + post :preview, :on => :collection + end end end - end - match 'sprockets.js', :to => SprocketsApp + match 'sprockets.js', :to => SprocketsApp - match 'people/:id/update', :to => 'people#update', :as => :update_person - match '/projects/:project_id/people/:id/update', :to => 'people#update', :as => :update_project_person + match 'people/:id/update', :to => 'people#update', :as => :update_person + match '/projects/:project_id/people/:id/update', :to => 'people#update', :as => :update_project_person - # misc - match 'articles/:year/:month/:day/:title', :to => "articles#show", :as => :article + # misc + match 'articles/:year/:month/:day/:title', :to => "articles#show", :as => :article - namespace :account do - resource :subscription, :credit, :credit_card - end + namespace :account do + resource :subscription, :credit, :credit_card + end - controller :articles do - scope 'articles' do - scope ':title', :title => /[a-z]+/, :as => :with_title do - match ':id', :to => :with_id + controller :articles do + scope 'articles' do + scope ':title', :title => /[a-z]+/, :as => :with_title do + match ':id', :to => :with_id + end end end - end - scope ':access_token', :constraints => { :access_token => /\w{5,5}/ } do - resources :rooms + scope ':access_token', :constraints => { :access_token => /\w{5,5}/ } do + resources :rooms + end end end - ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } - ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, old_dispatcher } def app Routes -- cgit v1.2.3 From 07da304ff84dca9a286005630cd3340f51384465 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 27 Oct 2009 19:57:57 -0500 Subject: Some more generation tests --- actionpack/test/dispatch/routing_test.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'actionpack/test/dispatch') diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 5558cf0154..74e6c8e72d 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -116,6 +116,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest assert_equal 'sessions#destroy', @response.body assert_equal '/logout', logout_path + assert_equal '/logout', url_for(:controller => 'sessions', :action => 'destroy', :only_path => true) end end @@ -123,11 +124,13 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest with_test_routes do get '/login' assert_equal 'sessions#new', @response.body + assert_equal '/login', login_path post '/login' assert_equal 'sessions#create', @response.body - assert_equal '/login', login_path + assert_equal '/login', url_for(:controller => 'sessions', :action => 'create', :only_path => true) + assert_equal '/login', url_for(:controller => 'sessions', :action => 'new', :only_path => true) end end -- cgit v1.2.3