class TestRoutingMapper
Constants
- SprocketsApp
Public Instance Methods
test_absolute_controller_namespace()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3336 def test_absolute_controller_namespace draw do namespace :foo do get "/", to: "/bar#index", as: "root" end end get "/foo" assert_equal "bar#index", @response.body assert_equal "/foo", foo_root_path end
test_access_token_rooms()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1317 def test_access_token_rooms draw do scope ":access_token", constraints: { access_token: /\w{5,5}/ } do resources :rooms end end 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
test_account_namespace()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1087 def test_account_namespace draw do namespace :account do resource :subscription, :credit, :credit_card end end get "/account/subscription" assert_equal "account/subscriptions#show", @response.body assert_equal "/account/subscription", account_subscription_path get "/account/credit" assert_equal "account/credits#show", @response.body assert_equal "/account/credit", account_credit_path get "/account/credit_card" assert_equal "account/credit_cards#show", @response.body assert_equal "/account/credit_card", account_credit_card_path end
test_action_from_path_is_not_frozen()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3309 def test_action_from_path_is_not_frozen draw do get "search" => "search" end get "/search" assert !@request.params[:action].frozen? end
test_admin()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 400 def test_admin draw do constraints(ip: /192\.168\.1\.\d\d\d/) do get "admin" => "queenbee#index" end constraints ::TestRoutingMapper::IpRestrictor do get "admin/accounts" => "queenbee#accounts" end get "admin/passwords" => "queenbee#passwords", :constraints => ::TestRoutingMapper::IpRestrictor end get "/admin", headers: { "REMOTE_ADDR" => "192.168.1.100" } assert_equal "queenbee#index", @response.body get "/admin", headers: { "REMOTE_ADDR" => "10.0.0.100" } assert_equal "pass", @response.headers["X-Cascade"] get "/admin/accounts", headers: { "REMOTE_ADDR" => "192.168.1.100" } assert_equal "queenbee#accounts", @response.body get "/admin/accounts", headers: { "REMOTE_ADDR" => "10.0.0.100" } assert_equal "pass", @response.headers["X-Cascade"] get "/admin/passwords", headers: { "REMOTE_ADDR" => "192.168.1.100" } assert_equal "queenbee#passwords", @response.body get "/admin/passwords", headers: { "REMOTE_ADDR" => "10.0.0.100" } assert_equal "pass", @response.headers["X-Cascade"] end
test_articles_perma()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1076 def test_articles_perma draw do get "articles/:year/:month/:day/:title", to: "articles#show", as: :article end get "/articles/2009/08/18/quails-3" assert_equal "articles#show", @response.body assert_equal "/articles/2009/8/18/quails-3", article_path(year: 2009, month: 8, day: 18, title: "quails-3") end
test_articles_with_id()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1297 def test_articles_with_id draw do controller :articles do scope "/articles", as: "article" do scope path: "/:title", title: /[a-z]+/, as: :with_title do get "/:id", action: :with_id, as: "" end end end end get "/articles/quails/1" assert_equal "articles#with_id", @response.body get "/articles/123/1" assert_equal "pass", @response.headers["X-Cascade"] assert_equal "/articles/quails/1", article_with_title_path(title: "quails", id: 1) end
test_bookmarks()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 341 def test_bookmarks draw do scope "bookmark", controller: "bookmarks", as: :bookmark do get :new, path: "build" post :create, path: "create", as: "" put :update get :remove, action: :destroy, as: :remove end end get "/bookmark/build" assert_equal "bookmarks#new", @response.body assert_equal "/bookmark/build", bookmark_new_path post "/bookmark/create" assert_equal "bookmarks#create", @response.body assert_equal "/bookmark/create", bookmark_path put "/bookmark/update" assert_equal "bookmarks#update", @response.body assert_equal "/bookmark/update", bookmark_update_path get "/bookmark/remove" assert_equal "bookmarks#destroy", @response.body assert_equal "/bookmark/remove", bookmark_remove_path end
test_constraints_are_merged_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2559 def test_constraints_are_merged_from_scope draw do scope constraints: { id: /\d{4}/ } do resources :movies do resources :reviews resource :trailer end end end 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::UrlGenerationError) { 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::UrlGenerationError) { 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::UrlGenerationError) { 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::UrlGenerationError) { movie_trailer_path(movie_id: "00001") } end
test_constraints_block_not_carried_to_following_routes()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3043 def test_constraints_block_not_carried_to_following_routes draw do scope "/italians" do get "/writers", to: "italians#writers", constraints: ::TestRoutingMapper::IpRestrictor get "/sculptors", to: "italians#sculptors" get "/painters/:painter", to: "italians#painters", constraints: { painter: /michelangelo/ } end end get "/italians/writers" assert_equal "Not Found", @response.body get "/italians/sculptors" assert_equal "italians#sculptors", @response.body get "/italians/painters/botticelli" assert_equal "Not Found", @response.body get "/italians/painters/michelangelo" assert_equal "italians#painters", @response.body end
test_controller_name_with_leading_slash_raise_error()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3171 def test_controller_name_with_leading_slash_raise_error assert_raise(ArgumentError) do draw { get "/feeds/:service", to: "/feeds#show" } end assert_raise(ArgumentError) do draw { get "/feeds/:service", controller: "/feeds", action: "show" } end assert_raise(ArgumentError) do draw { get "/api/feeds/:service", to: "/api/feeds#show" } end assert_raise(ArgumentError) do draw { resources :feeds, controller: "/feeds" } end end
test_controller_option_with_nesting_and_leading_slash()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1531 def test_controller_option_with_nesting_and_leading_slash draw do scope "/job", controller: "job" do scope ":id", action: "manage_applicant" do get "/active" end end end get "/job/5/active" assert_equal "job#manage_applicant", @response.body end
test_convention_match_nested_and_with_leading_slash()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1574 def test_convention_match_nested_and_with_leading_slash draw do get "/account/nested/overview" end assert_equal "/account/nested/overview", account_nested_overview_path get "/account/nested/overview" assert_equal "account/nested#overview", @response.body end
test_convention_with_explicit_end()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1584 def test_convention_with_explicit_end draw do get "sign_in" => "sessions#new" end get "/sign_in" assert_equal "sessions#new", @response.body assert_equal "/sign_in", sign_in_path end
test_custom_param()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3257 def test_custom_param draw do resources :profiles, param: :username do get :details, on: :member resources :messages end end get "/profiles/bob" assert_equal "profiles#show", @response.body assert_equal "bob", @request.params[:username] get "/profiles/bob/details" assert_equal "bob", @request.params[:username] get "/profiles/bob/messages/34" assert_equal "bob", @request.params[:profile_username] assert_equal "34", @request.params[:id] end
test_custom_param_constraint()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3277 def test_custom_param_constraint draw do resources :profiles, param: :username, username: /[a-z]+/ do get :details, on: :member resources :messages end end get "/profiles/bob1" assert_equal 404, @response.status get "/profiles/bob1/details" assert_equal 404, @response.status get "/profiles/bob1/messages/34" assert_equal 404, @response.status end
test_custom_resource_actions_defined_using_string()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3065 def test_custom_resource_actions_defined_using_string draw do resources :customers do resources :invoices do get "aged/:months", on: :collection, action: :aged, as: :aged end get "inactive", on: :collection post "deactivate", on: :member get "old", on: :collection, as: :stale end end get "/customers/inactive" assert_equal "customers#inactive", @response.body assert_equal "/customers/inactive", inactive_customers_path post "/customers/1/deactivate" assert_equal "customers#deactivate", @response.body assert_equal "/customers/1/deactivate", deactivate_customer_path(id: "1") get "/customers/old" assert_equal "customers#old", @response.body assert_equal "/customers/old", stale_customers_path get "/customers/1/invoices/aged/3" assert_equal "invoices#aged", @response.body assert_equal "/customers/1/invoices/aged/3", aged_customer_invoices_path(customer_id: "1", months: "3") end
test_custom_resource_routes_are_scoped()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2331 def test_custom_resource_routes_are_scoped draw do resources :customers do get :recent, on: :collection get "profile", on: :member get "secret/profile" => "customers#secret", :on => :member post "preview" => "customers#preview", :as => :another_preview, :on => :new resource :avatar do get "thumbnail" => "avatars#thumbnail", :as => :thumbnail, :on => :member end resources :invoices do get "outstanding" => "invoices#outstanding", :on => :collection get "overdue", action: :overdue, on: :collection get "print" => "invoices#print", :as => :print, :on => :member post "preview" => "invoices#preview", :as => :preview, :on => :new end resources :notes, shallow: true do get "preview" => "notes#preview", :as => :preview, :on => :new get "print" => "notes#print", :as => :print, :on => :member end end namespace :api do resources :customers do get "recent" => "customers#recent", :as => :recent, :on => :collection get "profile" => "customers#profile", :as => :profile, :on => :member post "preview" => "customers#preview", :as => :preview, :on => :new end end end assert_equal "/customers/recent", recent_customers_path assert_equal "/customers/1/profile", profile_customer_path(id: "1") assert_equal "/customers/1/secret/profile", secret_profile_customer_path(id: "1") assert_equal "/customers/new/preview", another_preview_new_customer_path assert_equal "/customers/1/avatar/thumbnail.jpg", thumbnail_customer_avatar_path(customer_id: "1", format: :jpg) assert_equal "/customers/1/invoices/outstanding", outstanding_customer_invoices_path(customer_id: "1") assert_equal "/customers/1/invoices/2/print", print_customer_invoice_path(customer_id: "1", id: "2") assert_equal "/customers/1/invoices/new/preview", preview_new_customer_invoice_path(customer_id: "1") assert_equal "/customers/1/notes/new/preview", preview_new_customer_note_path(customer_id: "1") assert_equal "/notes/1/print", print_note_path(id: "1") assert_equal "/api/customers/recent", recent_api_customers_path assert_equal "/api/customers/1/profile", profile_api_customer_path(id: "1") assert_equal "/api/customers/new/preview", preview_new_api_customer_path get "/customers/1/invoices/overdue" assert_equal "invoices#overdue", @response.body get "/customers/1/secret/profile" assert_equal "customers#secret", @response.body end
test_default_integer_params()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1739 def test_default_integer_params draw do get "inline_pages/(:page)", to: "pages#show", page: 1 get "default_pages/(:page)", to: "pages#show", defaults: { page: 1 } defaults page: 1 do get "scoped_pages/(:page)", to: "pages#show" end end get "/inline_pages" assert_equal 1, @request.params[:page] get "/default_pages" assert_equal 1, @request.params[:page] get "/scoped_pages" assert_equal 1, @request.params[:page] end
test_default_string_params()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1719 def test_default_string_params draw do get "inline_pages/(:id)", to: "pages#show", id: "home" get "default_pages/(:id)", to: "pages#show", defaults: { id: "home" } defaults id: "home" do get "scoped_pages/(:id)", to: "pages#show" end end get "/inline_pages" assert_equal "home", @request.params[:id] get "/default_pages" assert_equal "home", @request.params[:id] get "/scoped_pages" assert_equal "home", @request.params[:id] end
test_default_string_params_with_match()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1768 def test_default_string_params_with_match draw do match "/", to: "pages#show", via: :get, id: "home" end get "/" assert_equal "home", @request.params[:id] end
test_default_string_params_with_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1786 def test_default_string_params_with_root draw do root to: "pages#show", id: "home" end get "/" assert_equal "home", @request.params[:id] end
test_direct_children_of_shallow_resources()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2189 def test_direct_children_of_shallow_resources draw do resources :blogs do resources :posts, shallow: true do resources :comments end end end post "/posts/1/comments" assert_equal "comments#create", @response.body assert_equal "/posts/1/comments", post_comments_path("1") get "/posts/2/comments/new" assert_equal "comments#new", @response.body assert_equal "/posts/2/comments/new", new_post_comment_path("2") get "/posts/1/comments" assert_equal "comments#index", @response.body assert_equal "/posts/1/comments", post_comments_path("1") end
test_duplicate_route_name_raises_error()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3211 def test_duplicate_route_name_raises_error assert_raise(ArgumentError) do draw do get "/collision", to: "collision#show", as: "collision" get "/duplicate", to: "duplicate#show", as: "collision" end end end
test_duplicate_route_name_via_resources_raises_error()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3220 def test_duplicate_route_name_via_resources_raises_error assert_raise(ArgumentError) do draw do resources :collisions get "/collision", to: "collision#show", as: "collision" end end end
test_dynamic_action_segments_are_deprecated()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3661 def test_dynamic_action_segments_are_deprecated assert_deprecated do draw do get "/pages/:action", controller: "pages" end end end
test_dynamic_controller_segments_are_deprecated()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3653 def test_dynamic_controller_segments_are_deprecated assert_deprecated do draw do get "/:controller", action: "index" end end end
test_dynamically_generated_helpers_on_collection_do_not_clobber_resources_url_helper()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1544 def test_dynamically_generated_helpers_on_collection_do_not_clobber_resources_url_helper draw do resources :replies do collection do get "page/:page" => "replies#index", :page => %r{\d+} get ":page" => "replies#index", :page => %r{\d+} end end end assert_equal "/replies", replies_path end
test_except_option_should_not_inherit()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2733 def test_except_option_should_not_inherit draw do scope except: :index do namespace :except do resources :sectors, except: [:show, :update, :destroy] do resources :companies resource :leader end end end end get "/except/sectors/1/companies/2" assert_equal "except/companies#show", @response.body assert_equal "/except/sectors/1/companies/2", except_sector_company_path(sector_id: "1", id: "2") get "/except/sectors/1/leader" assert_equal "except/leaders#show", @response.body assert_equal "/except/sectors/1/leader", except_sector_leader_path(sector_id: "1") end
test_except_option_should_override_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2715 def test_except_option_should_override_scope draw do scope except: :index do namespace :except do resources :sectors, except: [:show, :update, :destroy] end end end get "/except/sectors" assert_equal "except/sectors#index", @response.body assert_equal "/except/sectors", except_sectors_path get "/except/sectors/1" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { except_sector_path(id: "1") } end
test_except_option_should_override_scoped_only()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2754 def test_except_option_should_override_scoped_only draw do scope only: :show do namespace :only do resources :sectors, only: :index do resources :managers, except: [:show, :update, :destroy] end end end end get "/only/sectors/1/managers" assert_equal "only/managers#index", @response.body assert_equal "/only/sectors/1/managers", only_sector_managers_path(sector_id: "1") get "/only/sectors/1/managers/2" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { only_sector_manager_path(sector_id: "1", id: "2") } end
test_except_scope_should_override_parent_only_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2842 def test_except_scope_should_override_parent_only_scope draw do scope only: :show do namespace :only do resources :sectors, only: :index do resources :companies do scope except: [:show, :update, :destroy] do resources :departments end end end end end end get "/only/sectors/1/companies/2/departments" assert_equal "only/departments#index", @response.body assert_equal "/only/sectors/1/companies/2/departments", only_sector_company_departments_path(sector_id: "1", company_id: "2") get "/only/sectors/1/companies/2/departments/3" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { only_sector_company_department_path(sector_id: "1", company_id: "2", id: "3") } end
test_except_scope_should_override_parent_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2818 def test_except_scope_should_override_parent_scope draw do scope except: :index do namespace :except do resources :sectors, except: [:show, :update, :destroy] do resources :companies do scope except: [:show, :update, :destroy] do resources :divisions end end end end end end get "/except/sectors/1/companies/2/divisions" assert_equal "except/divisions#index", @response.body assert_equal "/except/sectors/1/companies/2/divisions", except_sector_company_divisions_path(sector_id: "1", company_id: "2") get "/except/sectors/1/companies/2/divisions/3" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { except_sector_company_division_path(sector_id: "1", company_id: "2", id: "3") } end
test_except_should_be_read_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2639 def test_except_should_be_read_from_scope draw do scope except: [:new, :create, :edit, :update, :destroy] do namespace :except do resources :clubs do resources :players resource :chairman end end end end get "/except/clubs" assert_equal "except/clubs#index", @response.body assert_equal "/except/clubs", except_clubs_path get "/except/clubs/1/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_except_club_path(id: "1") } get "/except/clubs/1/players" assert_equal "except/players#index", @response.body assert_equal "/except/clubs/1/players", except_club_players_path(club_id: "1") get "/except/clubs/1/players/2/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_except_club_player_path(club_id: "1", id: "2") } get "/except/clubs/1/chairman" assert_equal "except/chairmen#show", @response.body assert_equal "/except/clubs/1/chairman", except_club_chairman_path(club_id: "1") get "/except/clubs/1/chairman/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_except_club_chairman_path(club_id: "1") } end
test_explicitly_avoiding_the_named_route()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3159 def test_explicitly_avoiding_the_named_route draw do scope as: "routes" do get "/c/:id", as: :collision, to: "collision#show" get "/collision", to: "collision#show" get "/no_collision", to: "collision#show", as: nil end end assert !respond_to?(:routes_no_collision_path) end
test_forum_products()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1050 def test_forum_products draw do namespace :forum do resources :products, path: "" do resources :questions end end end get "/forum" assert_equal "forum/products#index", @response.body assert_equal "/forum", forum_products_path get "/forum/basecamp" assert_equal "forum/products#show", @response.body assert_equal "/forum/basecamp", forum_product_path(id: "basecamp") get "/forum/basecamp/questions" assert_equal "forum/questions#index", @response.body assert_equal "/forum/basecamp/questions", forum_product_questions_path(product_id: "basecamp") get "/forum/basecamp/questions/1" assert_equal "forum/questions#show", @response.body assert_equal "/forum/basecamp/questions/1", forum_product_question_path(product_id: "basecamp", id: 1) end
test_glob_parameter_accepts_regexp()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2447 def test_glob_parameter_accepts_regexp draw do get "/:locale/*file.:format", to: "files#show", file: /path\/to\/existing\/file/ end get "/en/path/to/existing/file.html" assert_equal 200, @response.status end
test_global()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 432 def test_global draw do controller(:global) do get "global/hide_notice" get "global/export", action: :export, as: :export_request get "/export/:id/:file", action: :export, as: :export_download, constraints: { file: /.*/ } ActiveSupport::Deprecation.silence do get "global/:action" end end end 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", export_request_path assert_equal "/global/hide_notice", global_hide_notice_path assert_equal "/export/123/foo.txt", export_download_path(id: 123, file: "foo.txt") end
test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2952 def test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action draw do resources :sections, id: /.+/ do get :preview, on: :member end end get "/sections/1/edit" assert_equal "sections#edit", @response.body assert_equal "/sections/1/edit", edit_section_path(id: "1") get "/sections/1/preview" assert_equal "sections#preview", @response.body assert_equal "/sections/1/preview", preview_section_path(id: "1") end
test_head_fetch_with_mount_on_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3614 def test_head_fetch_with_mount_on_root draw do get "/home" => "test#index" mount lambda { |env| [200, {}, [env["REQUEST_METHOD"]]] }, at: "/" end # HEAD request should match `get /home` rather than the # lower-precedence Rack app mounted at `/`. head "/home" assert_response :ok assert_equal "test#index", @response.body # But the Rack app can still respond to its own HEAD requests. head "/foobar" assert_response :ok assert_equal "HEAD", @response.body end
test_index()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1420 def test_index draw do get "/info" => "projects#info", :as => "info" end assert_equal "/info", info_path get "/info" assert_equal "projects#info", @response.body end
test_invalid_route_name_raises_error()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3189 def test_invalid_route_name_raises_error assert_raise(ArgumentError) do draw { get "/products", to: "products#index", as: "products " } end assert_raise(ArgumentError) do draw { get "/products", to: "products#index", as: " products" } end assert_raise(ArgumentError) do draw { get "/products", to: "products#index", as: "products!" } end assert_raise(ArgumentError) do draw { get "/products", to: "products#index", as: "products index" } end assert_raise(ArgumentError) do draw { get "/products", to: "products#index", as: "1products" } end end
test_keyed_default_string_params_with_match()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1759 def test_keyed_default_string_params_with_match draw do match "/", to: "pages#show", via: :get, defaults: { id: "home" } end get "/" assert_equal "home", @request.params[:id] end
test_keyed_default_string_params_with_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1777 def test_keyed_default_string_params_with_root draw do root to: "pages#show", defaults: { id: "home" } end get "/" assert_equal "home", @request.params[:id] end
test_local()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 462 def test_local draw do ActiveSupport::Deprecation.silence do get "/local/:action", controller: "local" end end get "/local/dashboard" assert_equal "local#dashboard", @response.body end
test_login()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 44 def test_login draw do default_url_options host: "rubyonquails.org" controller :sessions do get "login" => :new post "login" => :create end end get "/login" assert_equal "sessions#new", @response.body assert_equal "/login", login_path post "/login" assert_equal "sessions#create", @response.body 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://rubyonquails.org/login", url_for(controller: "sessions", action: "create") assert_equal "http://rubyonquails.org/login", login_url end
test_login_redirect()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 68 def test_login_redirect draw do get "account/login", to: redirect("/login") end get "/account/login" verify_redirect "http://www.example.com/login" end
test_logout()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 30 def test_logout draw do controller :sessions do delete "logout" => :destroy end end delete "/logout" assert_equal "sessions#destroy", @response.body assert_equal "/logout", logout_path assert_equal "/logout", url_for(controller: "sessions", action: "destroy", only_path: true) end
test_logout_redirect_without_to()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 77 def test_logout_redirect_without_to draw do get "account/logout" => redirect("/logout"), :as => :logout_redirect end assert_equal "/account/logout", logout_redirect_path get "/account/logout" verify_redirect "http://www.example.com/logout" end
test_match_shorthand_inside_namespace()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1455 def test_match_shorthand_inside_namespace draw do namespace :account do get "shorthand" end end assert_equal "/account/shorthand", account_shorthand_path get "/account/shorthand" assert_equal "account#shorthand", @response.body end
test_match_shorthand_inside_namespace_with_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1481 def test_match_shorthand_inside_namespace_with_controller draw do namespace :api do get "products/list" end end assert_equal "/api/products/list", api_products_list_path get "/api/products/list" assert_equal "api/products#list", @response.body end
test_match_shorthand_inside_nested_namespaces_and_scopes_with_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1505 def test_match_shorthand_inside_nested_namespaces_and_scopes_with_controller draw do namespace :api do namespace :v3 do scope ":locale" do get "products/list" end end end end get "/api/v3/en/products/list" assert_equal "api/v3/products#list", @response.body end
test_match_shorthand_inside_scope_with_variables_with_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1493 def test_match_shorthand_inside_scope_with_variables_with_controller draw do scope ":locale" do match "questions/new", via: [:get] end end get "/de/questions/new" assert_equal "questions#new", @response.body assert_equal "de", @request.params[:locale] end
test_match_shorthand_with_multiple_paths_inside_namespace()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1467 def test_match_shorthand_with_multiple_paths_inside_namespace draw do namespace :proposals do put "activate", "inactivate" end end put "/proposals/activate" assert_equal "proposals#activate", @response.body put "/proposals/inactivate" assert_equal "proposals#inactivate", @response.body end
test_match_shorthand_with_no_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1445 def test_match_shorthand_with_no_scope draw do get "account/overview" end assert_equal "/account/overview", account_overview_path get "/account/overview" assert_equal "account#overview", @response.body end
test_match_with_empty_via()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2439 def test_match_with_empty_via assert_raises(ArgumentError) do draw do match "/foo/bar", to: "files#show", via: [] end end end
test_match_with_many_paths_containing_a_slash()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1430 def test_match_with_many_paths_containing_a_slash draw do get "get/first", "get/second", "get/third", to: "get#show" end get "/get/first" assert_equal "get#show", @response.body get "/get/second" assert_equal "get#show", @response.body get "/get/third" assert_equal "get#show", @response.body end
test_match_without_via()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2431 def test_match_without_via assert_raises(ArgumentError) do draw do match "/foo/bar", to: "files#show" end end end
test_member_on_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 225 def test_member_on_resource draw do resource :session do member do get :crush end end end get "/session/crush" assert_equal "sessions#crush", @response.body assert_equal "/session/crush", crush_session_path end
test_mix_string_to_action()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3459 def test_mix_string_to_action draw do get "/projects", action: "index", to: "comments#index" end get "/projects" assert_equal "comments#index", @response.body end
test_mix_string_to_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3450 def test_mix_string_to_controller draw do get "/projects", controller: "project_files", to: "comments#index" end get "/projects" assert_equal "comments#index", @response.body end
test_mix_string_to_controller_action()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3440 def test_mix_string_to_controller_action draw do get "/projects", controller: "project_files", action: "index", to: "comments#index" end get "/projects" assert_equal "comments#index", @response.body end
test_module_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1840 def test_module_scope draw do resource :token, module: :api end get "/token" assert_equal "api/tokens#show", @response.body assert_equal "/token", token_path end
test_multiple_namespaced_roots()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3693 def test_multiple_namespaced_roots draw do namespace :foo do root "test#index" end root "test#index" namespace :bar do root "test#index" end end assert_equal "/foo", foo_root_path assert_equal "/", root_path assert_equal "/bar", bar_root_path end
test_multiple_positional_args_with_the_same_name()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3318 def test_multiple_positional_args_with_the_same_name draw do get "/downloads/:id/:id.tar" => "downloads#show", as: :download, format: false end expected_params = { controller: "downloads", action: "show", id: "1" } get "/downloads/1/1.tar" assert_equal "downloads#show", @response.body assert_equal expected_params, @request.path_parameters assert_equal "/downloads/1/1.tar", download_path("1") assert_equal "/downloads/1/1.tar", download_path("1", "1") end
test_multiple_roots()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3669 def test_multiple_roots draw do namespace :foo do root "pages#index", constraints: { host: "www.example.com" } root "admin/pages#index", constraints: { host: "admin.example.com" } end root "pages#index", constraints: { host: "www.example.com" } root "admin/pages#index", constraints: { host: "admin.example.com" } end get "http://www.example.com/foo" assert_equal "foo/pages#index", @response.body get "http://admin.example.com/foo" assert_equal "foo/admin/pages#index", @response.body get "http://www.example.com/" assert_equal "pages#index", @response.body get "http://admin.example.com/" assert_equal "admin/pages#index", @response.body end
test_named_character_classes_in_regexp_constraints()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3107 def test_named_character_classes_in_regexp_constraints draw do get "/purchases/:token/:filename", to: "purchases#fetch", token: /[[:alnum:]]{10}/, filename: /(.+)/, as: :purchase end get "/purchases/315004be7e/Ruby_on_Quails_3.pdf" assert_equal "purchases#fetch", @response.body assert_equal "/purchases/315004be7e/Ruby_on_Quails_3.pdf", purchase_path(token: "315004be7e", filename: "Ruby_on_Quails_3.pdf") end
test_named_route_check()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3146 def test_named_route_check before, after = nil draw do before = has_named_route?(:hello) get "/hello", as: :hello, to: "hello#world" after = has_named_route?(:hello) end assert !before, "expected to not have named route :hello before route definition" assert after, "expected to have named route :hello after route definition" end
test_named_route_with_no_side_effects()
click to toggle source
tests the arguments modification free version of define_hash_access
# File actionpack/test/dispatch/routing_test.rb, line 503 def test_named_route_with_no_side_effects draw do resources :customers do get "profile", on: :member end end original_options = { host: "test.host" } options = original_options.dup profile_customer_url("customer_model", options) # verify that the options passed in have not changed from the original ones assert_equal original_options, options end
test_namespace_as_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3348 def test_namespace_as_controller draw do namespace :foo do get "/", to: "/bar#index", as: "root" end end get "/foo" assert_equal "bar#index", @response.body assert_equal "/foo", foo_root_path end
test_namespace_containing_numbers()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1285 def test_namespace_containing_numbers draw do namespace :v2 do resources :subscriptions end end get "/v2/subscriptions" assert_equal "v2/subscriptions#index", @response.body assert_equal "/v2/subscriptions", v2_subscriptions_path end
test_namespace_nested_in_resources()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1121 def test_namespace_nested_in_resources draw do resources :clients do namespace :google do resource :account do namespace :secret do resource :info end end end end end get "/clients/1/google/account" assert_equal "/clients/1/google/account", client_google_account_path(1) assert_equal "google/accounts#show", @response.body get "/clients/1/google/account/secret/info" assert_equal "/clients/1/google/account/secret/info", client_google_account_secret_info_path(1) assert_equal "google/secret/infos#show", @response.body end
test_namespace_redirect()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 87 def test_namespace_redirect draw do namespace :private do root to: redirect("/private/index") get "index", to: "private#index" end end get "/private" verify_redirect "http://www.example.com/private/index" end
test_namespace_with_controller_segment()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 117 def test_namespace_with_controller_segment assert_raise(ArgumentError) do draw do namespace :admin do ActiveSupport::Deprecation.silence do get "/:controller(/:action(/:id(.:format)))" end end end end end
test_namespace_with_options()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1143 def test_namespace_with_options draw do namespace :users, path: "usuarios" do root to: "home#index" end end get "/usuarios" assert_equal "/usuarios", users_root_path assert_equal "users/home#index", @response.body end
test_namespace_without_controller_segment()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 129 def test_namespace_without_controller_segment draw do namespace :admin do ActiveSupport::Deprecation.silence do get "hello/:controllers/:action" end end end get "/admin/hello/foo/new" assert_equal "foo", @request.params["controllers"] end
test_namespaced_roots()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1629 def test_namespaced_roots draw do namespace :account do root to: "account#index" end end assert_equal "/account", account_root_path get "/account" assert_equal "account/account#index", @response.body end
test_namespaced_shallow_routes_with_as_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1207 def test_namespaced_shallow_routes_with_as_option draw do namespace :foo, as: "bar" do resources :posts, only: [:index, :show] do resources :comments, only: [:index, :show], shallow: true end end end get "/foo/posts" assert_equal "/foo/posts", bar_posts_path assert_equal "foo/posts#index", @response.body get "/foo/posts/1" assert_equal "/foo/posts/1", bar_post_path("1") assert_equal "foo/posts#show", @response.body get "/foo/posts/1/comments" assert_equal "/foo/posts/1/comments", bar_post_comments_path("1") assert_equal "foo/comments#index", @response.body get "/foo/comments/2" assert_equal "/foo/comments/2", bar_comment_path("2") assert_equal "foo/comments#show", @response.body end
test_namespaced_shallow_routes_with_module_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1155 def test_namespaced_shallow_routes_with_module_option draw do namespace :foo, module: "bar" do resources :posts, only: [:index, :show] do resources :comments, only: [:index, :show], shallow: true end end end get "/foo/posts" assert_equal "/foo/posts", foo_posts_path assert_equal "bar/posts#index", @response.body get "/foo/posts/1" assert_equal "/foo/posts/1", foo_post_path("1") assert_equal "bar/posts#show", @response.body get "/foo/posts/1/comments" assert_equal "/foo/posts/1/comments", foo_post_comments_path("1") assert_equal "bar/comments#index", @response.body get "/foo/comments/2" assert_equal "/foo/comments/2", foo_comment_path("2") assert_equal "bar/comments#show", @response.body end
test_namespaced_shallow_routes_with_path_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1181 def test_namespaced_shallow_routes_with_path_option draw do namespace :foo, path: "bar" do resources :posts, only: [:index, :show] do resources :comments, only: [:index, :show], shallow: true end end end get "/bar/posts" assert_equal "/bar/posts", foo_posts_path assert_equal "foo/posts#index", @response.body get "/bar/posts/1" assert_equal "/bar/posts/1", foo_post_path("1") assert_equal "foo/posts#show", @response.body get "/bar/posts/1/comments" assert_equal "/bar/posts/1/comments", foo_post_comments_path("1") assert_equal "foo/comments#index", @response.body get "/bar/comments/2" assert_equal "/bar/comments/2", foo_comment_path("2") assert_equal "foo/comments#show", @response.body end
test_namespaced_shallow_routes_with_shallow_path_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1233 def test_namespaced_shallow_routes_with_shallow_path_option draw do namespace :foo, shallow_path: "bar" do resources :posts, only: [:index, :show] do resources :comments, only: [:index, :show], shallow: true end end end get "/foo/posts" assert_equal "/foo/posts", foo_posts_path assert_equal "foo/posts#index", @response.body get "/foo/posts/1" assert_equal "/foo/posts/1", foo_post_path("1") assert_equal "foo/posts#show", @response.body get "/foo/posts/1/comments" assert_equal "/foo/posts/1/comments", foo_post_comments_path("1") assert_equal "foo/comments#index", @response.body get "/bar/comments/2" assert_equal "/bar/comments/2", foo_comment_path("2") assert_equal "foo/comments#show", @response.body end
test_namespaced_shallow_routes_with_shallow_prefix_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1259 def test_namespaced_shallow_routes_with_shallow_prefix_option draw do namespace :foo, shallow_prefix: "bar" do resources :posts, only: [:index, :show] do resources :comments, only: [:index, :show], shallow: true end end end get "/foo/posts" assert_equal "/foo/posts", foo_posts_path assert_equal "foo/posts#index", @response.body get "/foo/posts/1" assert_equal "/foo/posts/1", foo_post_path("1") assert_equal "foo/posts#show", @response.body get "/foo/posts/1/comments" assert_equal "/foo/posts/1/comments", foo_post_comments_path("1") assert_equal "foo/comments#index", @response.body get "/foo/comments/2" assert_equal "/foo/comments/2", bar_comment_path("2") assert_equal "foo/comments#show", @response.body end
test_nested_namespace()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1107 def test_nested_namespace draw do namespace :account do namespace :admin do resource :subscription end end end get "/account/admin/subscription" assert_equal "account/admin/subscriptions#show", @response.body assert_equal "/account/admin/subscription", account_admin_subscription_path end
test_nested_optional_path_shorthand()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1705 def test_nested_optional_path_shorthand draw do scope "(:locale)", locale: /en|pl/ do get "registrations/new" end end get "/registrations/new" assert_nil @request.params[:locale] get "/en/registrations/new" assert_equal "en", @request.params[:locale] end
test_nested_optional_scoped_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1678 def test_nested_optional_scoped_path draw do namespace :admin do scope "(:locale)", locale: /en|pl/ do resources :descriptions end end end assert_equal "/admin/en/descriptions", admin_descriptions_path("en") assert_equal "/admin/descriptions", admin_descriptions_path(nil) assert_equal "/admin/en/descriptions/1", admin_description_path("en", 1) assert_equal "/admin/descriptions/1", admin_description_path(nil, 1) get "/admin/en/descriptions" assert_equal "admin/descriptions#index", @response.body get "/admin/descriptions" assert_equal "admin/descriptions#index", @response.body get "/admin/en/descriptions/1" assert_equal "admin/descriptions#show", @response.body get "/admin/descriptions/1" assert_equal "admin/descriptions#show", @response.body end
test_nested_resource_constraints()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3121 def test_nested_resource_constraints draw do resources :lists, id: /([A-Za-z0-9]{25})|default/ do resources :todos, id: /\d+/ end end get "/lists/01234012340123401234fffff" assert_equal "lists#show", @response.body assert_equal "/lists/01234012340123401234fffff", list_path(id: "01234012340123401234fffff") get "/lists/01234012340123401234fffff/todos/1" assert_equal "todos#show", @response.body assert_equal "/lists/01234012340123401234fffff/todos/1", list_todo_path(list_id: "01234012340123401234fffff", id: "1") get "/lists/2/todos/1" assert_equal "Not Found", @response.body assert_raises(ActionController::UrlGenerationError) { list_todo_path(list_id: "2", id: "1") } end
test_nested_route_in_nested_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3229 def test_nested_route_in_nested_resource draw do resources :posts, only: [:index, :show] do resources :comments, except: :destroy do get "views" => "comments#views", :as => :views end end end get "/posts/1/comments/2/views" assert_equal "comments#views", @response.body assert_equal "/posts/1/comments/2/views", post_comment_views_path(post_id: "1", comment_id: "2") end
test_nested_routes_under_format_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3711 def test_nested_routes_under_format_resource draw do resources :formats do resources :items end end get "/formats/1/items.json" assert_equal 200, @response.status assert_equal "items#index", @response.body assert_equal "/formats/1/items.json", format_items_path(1, :json) get "/formats/1/items/2.json" assert_equal 200, @response.status assert_equal "items#show", @response.body assert_equal "/formats/1/items/2.json", format_item_path(1, 2, :json) end
test_non_greedy_regexp()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2401 def test_non_greedy_regexp draw do namespace :api do scope(":version", version: /.+/) do resources :users, id: /.+?/, format: /json|xml/ end end end get "/api/1.0/users" assert_equal "api/users#index", @response.body assert_equal "/api/1.0/users", api_users_path(version: "1.0") get "/api/1.0/users.json" assert_equal "api/users#index", @response.body assert_equal true, @request.format.json? assert_equal "/api/1.0/users.json", api_users_path(version: "1.0", format: :json) get "/api/1.0/users/first.last" assert_equal "api/users#show", @response.body assert_equal "first.last", @request.params[:id] assert_equal "/api/1.0/users/first.last", api_user_path(version: "1.0", id: "first.last") get "/api/1.0/users/first.last.xml" assert_equal "api/users#show", @response.body assert_equal "first.last", @request.params[:id] assert_equal true, @request.format.xml? assert_equal "/api/1.0/users/first.last.xml", api_user_path(version: "1.0", id: "first.last", format: :xml) end
test_normalize_namespaced_matches()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1616 def test_normalize_namespaced_matches draw do namespace :account do get "description", action: :description, as: "description" end end assert_equal "/account/description", account_description_path get "/account/description" assert_equal "account#description", @response.body end
test_not_matching_shorthand_with_dynamic_parameters()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1520 def test_not_matching_shorthand_with_dynamic_parameters draw do ActiveSupport::Deprecation.silence do get ":controller/:action/admin" end end get "/finances/overview/admin" assert_equal "finances#overview", @response.body end
test_only_option_should_not_inherit()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2694 def test_only_option_should_not_inherit draw do scope only: :show do namespace :only do resources :sectors, only: :index do resources :companies resource :leader end end end end get "/only/sectors/1/companies/2" assert_equal "only/companies#show", @response.body assert_equal "/only/sectors/1/companies/2", only_sector_company_path(sector_id: "1", id: "2") get "/only/sectors/1/leader" assert_equal "only/leaders#show", @response.body assert_equal "/only/sectors/1/leader", only_sector_leader_path(sector_id: "1") end
test_only_option_should_override_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2676 def test_only_option_should_override_scope draw do scope only: :show do namespace :only do resources :sectors, only: :index end end end get "/only/sectors" assert_equal "only/sectors#index", @response.body assert_equal "/only/sectors", only_sectors_path get "/only/sectors/1" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { only_sector_path(id: "1") } end
test_only_option_should_override_scoped_except()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2774 def test_only_option_should_override_scoped_except draw do scope except: :index do namespace :except do resources :sectors, except: [:show, :update, :destroy] do resources :managers, only: :index end end end end get "/except/sectors/1/managers" assert_equal "except/managers#index", @response.body assert_equal "/except/sectors/1/managers", except_sector_managers_path(sector_id: "1") get "/except/sectors/1/managers/2" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { except_sector_manager_path(sector_id: "1", id: "2") } end
test_only_scope_should_override_parent_except_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2866 def test_only_scope_should_override_parent_except_scope draw do scope except: :index do namespace :except do resources :sectors, except: [:show, :update, :destroy] do resources :companies do scope only: :index do resources :departments end end end end end end get "/except/sectors/1/companies/2/departments" assert_equal "except/departments#index", @response.body assert_equal "/except/sectors/1/companies/2/departments", except_sector_company_departments_path(sector_id: "1", company_id: "2") get "/except/sectors/1/companies/2/departments/3" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { except_sector_company_department_path(sector_id: "1", company_id: "2", id: "3") } end
test_only_scope_should_override_parent_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2794 def test_only_scope_should_override_parent_scope draw do scope only: :show do namespace :only do resources :sectors, only: :index do resources :companies do scope only: :index do resources :divisions end end end end end end get "/only/sectors/1/companies/2/divisions" assert_equal "only/divisions#index", @response.body assert_equal "/only/sectors/1/companies/2/divisions", only_sector_company_divisions_path(sector_id: "1", company_id: "2") get "/only/sectors/1/companies/2/divisions/3" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { only_sector_company_division_path(sector_id: "1", company_id: "2", id: "3") } end
test_only_should_be_read_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2602 def test_only_should_be_read_from_scope draw do scope only: [:index, :show] do namespace :only do resources :clubs do resources :players resource :chairman end end end end get "/only/clubs" assert_equal "only/clubs#index", @response.body assert_equal "/only/clubs", only_clubs_path get "/only/clubs/1/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_only_club_path(id: "1") } get "/only/clubs/1/players" assert_equal "only/players#index", @response.body assert_equal "/only/clubs/1/players", only_club_players_path(club_id: "1") get "/only/clubs/1/players/2/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_only_club_player_path(club_id: "1", id: "2") } get "/only/clubs/1/chairman" assert_equal "only/chairmen#show", @response.body assert_equal "/only/clubs/1/chairman", only_club_chairman_path(club_id: "1") get "/only/clubs/1/chairman/edit" assert_equal "Not Found", @response.body assert_raise(NoMethodError) { edit_only_club_chairman_path(club_id: "1") } end
test_openid()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 329 def test_openid draw do match "openid/login", via: [:get, :post], to: "openid#login" end get "/openid/login" assert_equal "openid#login", @response.body post "/openid/login" assert_equal "openid#login", @response.body end
test_optional_scoped_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1653 def test_optional_scoped_path draw do scope "(:locale)", locale: /en|pl/ do resources :descriptions end end assert_equal "/en/descriptions", descriptions_path("en") assert_equal "/descriptions", descriptions_path(nil) assert_equal "/en/descriptions/1", description_path("en", 1) assert_equal "/descriptions/1", description_path(nil, 1) get "/en/descriptions" assert_equal "descriptions#index", @response.body get "/descriptions" assert_equal "descriptions#index", @response.body get "/en/descriptions/1" assert_equal "descriptions#show", @response.body get "/descriptions/1" assert_equal "descriptions#show", @response.body end
test_optional_scoped_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1641 def test_optional_scoped_root draw do scope "(:locale)", locale: /en|pl/ do root to: "projects#index" end end assert_equal "/en", root_path("en") get "/en" assert_equal "projects#index", @response.body end
test_pagemarks()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 368 def test_pagemarks draw do scope "pagemark", controller: "pagemarks", as: :pagemark do get "build", action: "new", as: "new" post "create", as: "" put "update" get "remove", action: :destroy, as: :remove get "", action: :show, as: :show end end get "/pagemark/build" assert_equal "pagemarks#new", @response.body assert_equal "/pagemark/build", pagemark_new_path post "/pagemark/create" assert_equal "pagemarks#create", @response.body assert_equal "/pagemark/create", pagemark_path put "/pagemark/update" assert_equal "pagemarks#update", @response.body assert_equal "/pagemark/update", pagemark_update_path get "/pagemark/remove" assert_equal "pagemarks#destroy", @response.body assert_equal "/pagemark/remove", pagemark_remove_path get "/pagemark" assert_equal "pagemarks#show", @response.body assert_equal "/pagemark", pagemark_show_path end
test_passing_action_parameters_to_url_helpers_is_allowed_if_parameters_are_permitted()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3643 def test_passing_action_parameters_to_url_helpers_is_allowed_if_parameters_are_permitted draw do root to: "projects#index" end params = ActionController::Parameters.new(id: "1") params.permit! assert_equal "/?id=1", root_path(params) end
test_passing_action_parameters_to_url_helpers_raises_error_if_parameters_are_not_permitted()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3632 def test_passing_action_parameters_to_url_helpers_raises_error_if_parameters_are_not_permitted draw do root to: "projects#index" end params = ActionController::Parameters.new(id: "1") assert_raises ActionController::UnfilteredParameters do root_path(params) end end
test_path_names()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 969 def test_path_names draw do scope "pt", as: "pt" do resources :projects, path_names: { edit: "editar", new: "novo" }, path: "projetos" resource :admin, path_names: { new: "novo", activate: "ativar" }, path: "administrador" do put :activate, on: :member end end end get "/pt/projetos" assert_equal "projects#index", @response.body assert_equal "/pt/projetos", pt_projects_path get "/pt/projetos/1/editar" assert_equal "projects#edit", @response.body assert_equal "/pt/projetos/1/editar", edit_pt_project_path(1) get "/pt/administrador" assert_equal "admins#show", @response.body assert_equal "/pt/administrador", pt_admin_path get "/pt/administrador/novo" assert_equal "admins#new", @response.body assert_equal "/pt/administrador/novo", new_pt_admin_path put "/pt/administrador/ativar" assert_equal "admins#activate", @response.body assert_equal "/pt/administrador/ativar", activate_pt_admin_path end
test_path_option_override()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1000 def test_path_option_override draw do scope "pt", as: "pt" do resources :projects, path_names: { new: "novo" }, path: "projetos" do put :close, on: :member, path: "fechar" get :open, on: :new, path: "abrir" end end end get "/pt/projetos/novo/abrir" assert_equal "projects#open", @response.body assert_equal "/pt/projetos/novo/abrir", open_new_pt_project_path put "/pt/projetos/1/fechar" assert_equal "projects#close", @response.body assert_equal "/pt/projetos/1/fechar", close_pt_project_path(1) end
test_path_parameters_is_not_stale()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3020 def test_path_parameters_is_not_stale draw do scope "/countries/:country", constraints: lambda { |params, req| %w(all France).include?(params[:country]) } do get "/", to: "countries#index" get "/cities", to: "countries#cities" end get "/countries/:country/(*other)", to: redirect { |params, req| params[:other] ? "/countries/all/#{params[:other]}" : "/countries/all" } end get "/countries/France" assert_equal "countries#index", @response.body get "/countries/France/cities" assert_equal "countries#cities", @response.body get "/countries/UK" verify_redirect "http://www.example.com/countries/all" get "/countries/UK/cities" verify_redirect "http://www.example.com/countries/all/cities" end
test_path_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1850 def test_path_scope draw do scope path: "api" do resource :me get "/" => "mes#index" end end get "/api/me" assert_equal "mes#show", @response.body assert_equal "/api/me", me_path get "/api" assert_equal "mes#index", @response.body end
test_project_images()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 716 def test_project_images draw do resources :projects do resources :images, as: :funny_images do post :revise, on: :member end end end get "/projects/1/images" assert_equal "images#index", @response.body assert_equal "/projects/1/images", project_funny_images_path(project_id: "1") get "/projects/1/images/new" assert_equal "images#new", @response.body assert_equal "/projects/1/images/new", new_project_funny_image_path(project_id: "1") post "/projects/1/images/1/revise" assert_equal "images#revise", @response.body assert_equal "/projects/1/images/1/revise", revise_project_funny_image_path(project_id: "1", id: "1") end
test_project_manager()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 694 def test_project_manager draw do resources :projects do resource :manager, as: :super_manager do post :fire end end end get "/projects/1/manager" assert_equal "managers#show", @response.body assert_equal "/projects/1/manager", project_super_manager_path(project_id: "1") get "/projects/1/manager/new" assert_equal "managers#new", @response.body assert_equal "/projects/1/manager/new", new_project_super_manager_path(project_id: "1") post "/projects/1/manager/fire" assert_equal "managers#fire", @response.body assert_equal "/projects/1/manager/fire", fire_project_super_manager_path(project_id: "1") end
test_projects()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 528 def test_projects draw do resources :projects, controller: :project end get "/projects" assert_equal "project#index", @response.body assert_equal "/projects", projects_path post "/projects" assert_equal "project#create", @response.body get "/projects.xml" assert_equal "project#index", @response.body assert_equal "/projects.xml", projects_path(format: "xml") get "/projects/new" assert_equal "project#new", @response.body assert_equal "/projects/new", new_project_path get "/projects/new.xml" assert_equal "project#new", @response.body assert_equal "/projects/new.xml", new_project_path(format: "xml") get "/projects/1" assert_equal "project#show", @response.body assert_equal "/projects/1", project_path(id: "1") get "/projects/1.xml" assert_equal "project#show", @response.body assert_equal "/projects/1.xml", project_path(id: "1", format: "xml") get "/projects/1/edit" assert_equal "project#edit", @response.body assert_equal "/projects/1/edit", edit_project_path(id: "1") end
test_projects_attachments()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 641 def test_projects_attachments draw do resources :projects, controller: :project do resources :involvements, :attachments end end get "/projects/1/attachments" assert_equal "attachments#index", @response.body assert_equal "/projects/1/attachments", project_attachments_path(project_id: "1") end
test_projects_companies()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 671 def test_projects_companies draw do resources :projects, controller: :project do resources :companies do resources :people resource :avatar, controller: :avatar end end end get "/projects/1/companies" assert_equal "companies#index", @response.body assert_equal "/projects/1/companies", project_companies_path(project_id: "1") get "/projects/1/companies/1/people" assert_equal "people#index", @response.body assert_equal "/projects/1/companies/1/people", project_company_people_path(project_id: "1", company_id: "1") get "/projects/1/companies/1/avatar" assert_equal "avatar#show", @response.body assert_equal "/projects/1/companies/1/avatar", project_company_avatar_path(project_id: "1", company_id: "1") end
test_projects_for_api_app()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 565 def test_projects_for_api_app config = ActionDispatch::Routing::RouteSet::Config.new config.api_only = true self.class.stub_controllers(config) do |routes| routes.draw do resources :projects, controller: :project end @app = RoutedRackApp.new routes end get "/projects" assert_equal "project#index", @response.body assert_equal "/projects", projects_path post "/projects" assert_equal "project#create", @response.body get "/projects.xml" assert_equal "project#index", @response.body assert_equal "/projects.xml", projects_path(format: "xml") get "/projects/1" assert_equal "project#show", @response.body assert_equal "/projects/1", project_path(id: "1") get "/projects/1.xml" assert_equal "project#show", @response.body assert_equal "/projects/1.xml", project_path(id: "1", format: "xml") get "/projects/1/edit" assert_equal "Not Found", @response.body end
test_projects_involvements()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 611 def test_projects_involvements draw do resources :projects, controller: :project do resources :involvements, :attachments end end get "/projects/1/involvements" assert_equal "involvements#index", @response.body assert_equal "/projects/1/involvements", project_involvements_path(project_id: "1") get "/projects/1/involvements/new" assert_equal "involvements#new", @response.body assert_equal "/projects/1/involvements/new", new_project_involvement_path(project_id: "1") get "/projects/1/involvements/1" assert_equal "involvements#show", @response.body assert_equal "/projects/1/involvements/1", project_involvement_path(project_id: "1", id: "1") put "/projects/1/involvements/1" assert_equal "involvements#update", @response.body delete "/projects/1/involvements/1" assert_equal "involvements#destroy", @response.body get "/projects/1/involvements/1/edit" assert_equal "involvements#edit", @response.body assert_equal "/projects/1/involvements/1/edit", edit_project_involvement_path(project_id: "1", id: "1") end
test_projects_participants()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 653 def test_projects_participants draw do resources :projects, controller: :project do resources :participants do put :update_all, on: :collection end end end get "/projects/1/participants" assert_equal "participants#index", @response.body assert_equal "/projects/1/participants", project_participants_path(project_id: "1") put "/projects/1/participants/update_all" assert_equal "participants#update_all", @response.body assert_equal "/projects/1/participants/update_all", update_all_project_participants_path(project_id: "1") end
test_projects_people()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 738 def test_projects_people draw do resources :projects do resources :people do nested do scope "/:access_token" do resource :avatar end end member do put :accessible_projects post :resend, :generate_new_password end end end end get "/projects/1/people" assert_equal "people#index", @response.body assert_equal "/projects/1/people", project_people_path(project_id: "1") get "/projects/1/people/1" assert_equal "people#show", @response.body assert_equal "/projects/1/people/1", project_person_path(project_id: "1", id: "1") get "/projects/1/people/1/7a2dec8/avatar" assert_equal "avatars#show", @response.body assert_equal "/projects/1/people/1/7a2dec8/avatar", project_person_avatar_path(project_id: "1", person_id: "1", access_token: "7a2dec8") put "/projects/1/people/1/accessible_projects" assert_equal "people#accessible_projects", @response.body assert_equal "/projects/1/people/1/accessible_projects", accessible_projects_project_person_path(project_id: "1", id: "1") post "/projects/1/people/1/resend" assert_equal "people#resend", @response.body assert_equal "/projects/1/people/1/resend", resend_project_person_path(project_id: "1", id: "1") post "/projects/1/people/1/generate_new_password" assert_equal "people#generate_new_password", @response.body assert_equal "/projects/1/people/1/generate_new_password", generate_new_password_project_person_path(project_id: "1", id: "1") end
test_projects_posts()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 795 def test_projects_posts draw do resources :projects do 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 end get "/projects/1/posts" assert_equal "posts#index", @response.body assert_equal "/projects/1/posts", project_posts_path(project_id: "1") get "/projects/1/posts/archive" assert_equal "posts#archive", @response.body assert_equal "/projects/1/posts/archive", archive_project_posts_path(project_id: "1") get "/projects/1/posts/toggle_view" assert_equal "posts#toggle_view", @response.body assert_equal "/projects/1/posts/toggle_view", toggle_view_project_posts_path(project_id: "1") post "/projects/1/posts/1/preview" assert_equal "posts#preview", @response.body assert_equal "/projects/1/posts/1/preview", preview_project_post_path(project_id: "1", id: "1") get "/projects/1/posts/1/subscription" assert_equal "subscriptions#show", @response.body assert_equal "/projects/1/posts/1/subscription", project_post_subscription_path(project_id: "1", post_id: "1") get "/projects/1/posts/1/comments" assert_equal "comments#index", @response.body assert_equal "/projects/1/posts/1/comments", project_post_comments_path(project_id: "1", post_id: "1") post "/projects/1/posts/1/comments/preview" assert_equal "comments#preview", @response.body assert_equal "/projects/1/posts/1/comments/preview", preview_project_post_comments_path(project_id: "1", post_id: "1") end
test_projects_status()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 519 def test_projects_status draw do get "/projects/status(.:format)" end assert_equal "/projects/status", url_for(controller: "projects", action: "status", only_path: true) assert_equal "/projects/status.json", url_for(controller: "projects", action: "status", format: "json", only_path: true) end
test_projects_with_post_action_and_new_path_on_collection()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 599 def test_projects_with_post_action_and_new_path_on_collection draw do resources :projects, controller: :project do post "new", action: "new", on: :collection, as: :new end end post "/projects/new" assert_equal "project#new", @response.body assert_equal "/projects/new", new_projects_path end
test_projects_with_resources_path_names()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 781 def test_projects_with_resources_path_names draw do resources_path_names correlation_indexes: "info_about_correlation_indexes" resources :projects do get :correlation_indexes, on: :collection end end get "/projects/info_about_correlation_indexes" assert_equal "projects#correlation_indexes", @response.body assert_equal "/projects/info_about_correlation_indexes", correlation_indexes_projects_path end
test_redirect_argument_error()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3141 def test_redirect_argument_error routes = Class.new { include ActionDispatch::Routing::Redirection }.new assert_raises(ArgumentError) { routes.redirect Object.new } end
test_redirect_class()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 320 def test_redirect_class draw do get "youtube_favorites/:youtube_id/:name", to: redirect(YoutubeFavoritesRedirector) end get "/youtube_favorites/oHg5SJYRHA0/rick-rolld" verify_redirect "http://www.youtube.com/watch?v=oHg5SJYRHA0" end
test_redirect_hash_path_substitution()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 302 def test_redirect_hash_path_substitution draw do get "stores/:name", to: redirect(subdomain: "stores", path: "/%{name}") end get "/stores/iernest" verify_redirect "http://stores.example.com/iernest" end
test_redirect_hash_path_substitution_with_catch_all()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 311 def test_redirect_hash_path_substitution_with_catch_all draw do get "stores/:name(*rest)", to: redirect(subdomain: "stores", path: "/%{name}%{rest}") end get "/stores/iernest/products" verify_redirect "http://stores.example.com/iernest/products" end
test_redirect_hash_with_domain_and_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 275 def test_redirect_hash_with_domain_and_path draw do get "documentation", to: redirect(domain: "example-documentation.com", path: "") end get "/documentation" verify_redirect "http://www.example-documentation.com" end
test_redirect_hash_with_host()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 293 def test_redirect_hash_with_host draw do get "super_new_documentation", to: redirect(host: "super-docs.com") end get "/super_new_documentation?section=top" verify_redirect "http://super-docs.com/super_new_documentation?section=top" end
test_redirect_hash_with_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 284 def test_redirect_hash_with_path draw do get "new_documentation", to: redirect(path: "/documentation/new") end get "/new_documentation" verify_redirect "http://www.example.com/documentation/new" end
test_redirect_hash_with_subdomain()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 266 def test_redirect_hash_with_subdomain draw do get "mobile", to: redirect(subdomain: "mobile") end get "/mobile" verify_redirect "http://mobile.example.com/mobile" end
test_redirect_https()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3009 def test_redirect_https draw do get "secure", to: redirect("/secure/login") end with_https do get "/secure" verify_redirect "https://www.example.com/secure/login" end end
test_redirect_modulo()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 239 def test_redirect_modulo draw do get "account/modulo/:name", to: redirect("/%{name}s") end get "/account/modulo/name" verify_redirect "http://www.example.com/names" end
test_redirect_proc()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 248 def test_redirect_proc draw do get "account/proc/:name", to: redirect { |params, req| "/#{params[:name].pluralize}" } end get "/account/proc/person" verify_redirect "http://www.example.com/people" end
test_redirect_proc_with_request()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 257 def test_redirect_proc_with_request draw do get "account/proc_req" => redirect { |params, req| "/#{req.method}" } end get "/account/proc_req" verify_redirect "http://www.example.com/GET" end
test_redirect_with_complete_url_and_status()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1594 def test_redirect_with_complete_url_and_status draw do get "account/google" => redirect("http://www.google.com/", status: 302) end get "/account/google" verify_redirect "http://www.google.com/", 302 end
test_redirect_with_failing_constraint()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 99 def test_redirect_with_failing_constraint draw do get "hi", to: redirect("/foo"), constraints: ::TestRoutingMapper::GrumpyRestrictor end get "/hi" assert_equal 404, status end
test_redirect_with_passing_constraint()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 108 def test_redirect_with_passing_constraint draw do get "hi", to: redirect("/foo"), constraints: ->(req) { true } end get "/hi" assert_equal 301, status end
test_redirect_with_port()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1603 def test_redirect_with_port draw do get "account/login", to: redirect("/login") end previous_host, self.host = host, "www.example.com:3000" get "/account/login" verify_redirect "http://www.example.com:3000/login" ensure self.host = previous_host end
test_replies()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 840 def test_replies draw do resources :replies do member do put :answer, action: :mark_as_answer delete :answer, action: :unmark_as_answer end end end put "/replies/1/answer" assert_equal "replies#mark_as_answer", @response.body delete "/replies/1/answer" assert_equal "replies#unmark_as_answer", @response.body end
test_resource_constraints()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1795 def test_resource_constraints draw do resources :products, constraints: { id: /\d{4}/ } do root to: "products#root" get :favorite, on: :collection resources :images end resource :dashboard, constraints: { ip: /192\.168\.1\.\d{1,3}/ } end get "/products/1" assert_equal "pass", @response.headers["X-Cascade"] get "/products" assert_equal "products#root", @response.body get "/products/favorite" assert_equal "products#favorite", @response.body get "/products/0001" assert_equal "products#show", @response.body get "/products/1/images" assert_equal "pass", @response.headers["X-Cascade"] get "/products/0001/images" assert_equal "images#index", @response.body get "/products/0001/images/0001" assert_equal "images#show", @response.body get "/dashboard", headers: { "REMOTE_ADDR" => "10.0.0.100" } assert_equal "pass", @response.headers["X-Cascade"] get "/dashboard", headers: { "REMOTE_ADDR" => "192.168.1.100" } assert_equal "dashboards#show", @response.body end
test_resource_constraints_are_pushed_to_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2968 def test_resource_constraints_are_pushed_to_scope draw do namespace :wiki do resources :articles, id: /[^\/]+/ do resources :comments, only: [:create, :new] end end end get "/wiki/articles/Ruby_on_Quails_3.0" assert_equal "wiki/articles#show", @response.body assert_equal "/wiki/articles/Ruby_on_Quails_3.0", wiki_article_path(id: "Ruby_on_Quails_3.0") get "/wiki/articles/Ruby_on_Quails_3.0/comments/new" assert_equal "wiki/comments#new", @response.body assert_equal "/wiki/articles/Ruby_on_Quails_3.0/comments/new", new_wiki_article_comment_path(article_id: "Ruby_on_Quails_3.0") post "/wiki/articles/Ruby_on_Quails_3.0/comments" assert_equal "wiki/comments#create", @response.body assert_equal "/wiki/articles/Ruby_on_Quails_3.0/comments", wiki_article_comments_path(article_id: "Ruby_on_Quails_3.0") end
test_resource_does_not_modify_passed_options()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 957 def test_resource_does_not_modify_passed_options options = { id: /.+?/, format: /json|xml/ } draw { resource :user, options } assert_equal({ id: /.+?/, format: /json|xml/ }, options) end
test_resource_merges_options_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1978 def test_resource_merges_options_from_scope draw do scope only: :show do resource :account end end assert_raise(NoMethodError) { new_account_path } get "/account/new" assert_equal 404, status end
test_resource_new_actions()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1925 def test_resource_new_actions draw do resources :replies do new do post :preview end end scope "pt", as: "pt" do resources :projects, path_names: { new: "novo" }, path: "projetos" do post :preview, on: :new end resource :admin, path_names: { new: "novo" }, path: "administrador" do post :preview, on: :new end resources :products, path_names: { new: "novo" } do new do post :preview end end end resource :profile do new do post :preview end end end assert_equal "/replies/new/preview", preview_new_reply_path assert_equal "/pt/projetos/novo/preview", preview_new_pt_project_path assert_equal "/pt/administrador/novo/preview", preview_new_pt_admin_path assert_equal "/pt/products/novo/preview", preview_new_pt_product_path assert_equal "/profile/new/preview", preview_new_profile_path post "/replies/new/preview" assert_equal "replies#preview", @response.body post "/pt/projetos/novo/preview" assert_equal "projects#preview", @response.body post "/pt/administrador/novo/preview" assert_equal "admins#preview", @response.body post "/pt/products/novo/preview" assert_equal "products#preview", @response.body post "/profile/new/preview" assert_equal "profiles#preview", @response.body end
test_resource_routes_only_create_update_destroy()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 886 def test_resource_routes_only_create_update_destroy draw do resource :past, only: :destroy resource :present, only: :update resource :future, only: :create end delete "/past" assert_equal "pasts#destroy", @response.body assert_equal "/past", past_path patch "/present" assert_equal "presents#update", @response.body assert_equal "/present", present_path put "/present" assert_equal "presents#update", @response.body assert_equal "/present", present_path post "/future" assert_equal "futures#create", @response.body assert_equal "/future", future_path end
test_resource_routes_with_dashes_in_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3398 def test_resource_routes_with_dashes_in_path draw do resources :photos, only: [:show] do get "user-favorites", on: :collection get "preview-photo", on: :member get "summary-text" end end get "/photos/user-favorites" assert_equal "photos#user_favorites", @response.body assert_equal "/photos/user-favorites", user_favorites_photos_path get "/photos/1/preview-photo" assert_equal "photos#preview_photo", @response.body assert_equal "/photos/1/preview-photo", preview_photo_photo_path("1") get "/photos/1/summary-text" assert_equal "photos#summary_text", @response.body assert_equal "/photos/1/summary-text", photo_summary_text_path("1") get "/photos/1" assert_equal "photos#show", @response.body assert_equal "/photos/1", photo_path("1") end
test_resource_routes_with_only_and_except()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 857 def test_resource_routes_with_only_and_except draw do resources :posts, only: [:index, :show] do resources :comments, except: :destroy end end get "/posts" assert_equal "posts#index", @response.body assert_equal "/posts", posts_path get "/posts/1" 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) post "/posts" assert_equal "pass", @response.headers["X-Cascade"] put "/posts/1" assert_equal "pass", @response.headers["X-Cascade"] delete "/posts/1" assert_equal "pass", @response.headers["X-Cascade"] delete "/posts/1/comments" assert_equal "pass", @response.headers["X-Cascade"] end
test_resource_where_as_is_empty()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3576 def test_resource_where_as_is_empty draw do resource :post, as: "" scope "post", as: "post" do resource :comment, as: "" end end assert_equal "/post/new", new_path assert_equal "/post/comment/new", new_post_path end
test_resource_with_slugs_in_ids()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 933 def test_resource_with_slugs_in_ids draw do resources :posts end get "/posts/quails-rocks" assert_equal "posts#show", @response.body assert_equal "/posts/quails-rocks", post_path(id: "quails-rocks") end
test_resources_are_not_pluralized()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2890 def test_resources_are_not_pluralized draw do namespace :transport do resources :taxis end end get "/transport/taxis" assert_equal "transport/taxis#index", @response.body assert_equal "/transport/taxis", transport_taxis_path get "/transport/taxis/new" assert_equal "transport/taxis#new", @response.body assert_equal "/transport/taxis/new", new_transport_taxi_path post "/transport/taxis" assert_equal "transport/taxis#create", @response.body get "/transport/taxis/1" assert_equal "transport/taxis#show", @response.body assert_equal "/transport/taxis/1", transport_taxi_path(id: "1") get "/transport/taxis/1/edit" assert_equal "transport/taxis#edit", @response.body assert_equal "/transport/taxis/1/edit", edit_transport_taxi_path(id: "1") put "/transport/taxis/1" assert_equal "transport/taxis#update", @response.body delete "/transport/taxis/1" assert_equal "transport/taxis#destroy", @response.body end
test_resources_controller_name_is_not_pluralized()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2456 def test_resources_controller_name_is_not_pluralized draw do resources :content end get "/content" assert_equal "content#index", @response.body end
test_resources_does_not_modify_passed_options()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 963 def test_resources_does_not_modify_passed_options options = { id: /.+?/, format: /json|xml/ } draw { resources :users, options } assert_equal({ id: /.+?/, format: /json|xml/ }, options) end
test_resources_for_uncountable_names()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 943 def test_resources_for_uncountable_names draw do resources :sheep do get "_it", on: :member end end assert_equal "/sheep", sheep_index_path assert_equal "/sheep/1", sheep_path(1) assert_equal "/sheep/new", new_sheep_path assert_equal "/sheep/1/edit", edit_sheep_path(1) assert_equal "/sheep/1/_it", _it_sheep_path(1) end
test_resources_merges_options_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1991 def test_resources_merges_options_from_scope draw do scope only: [:index, :show] do resources :products do resources :images end end end assert_raise(NoMethodError) { edit_product_path("1") } get "/products/1/edit" assert_equal 404, status assert_raise(NoMethodError) { edit_product_image_path("1", "2") } post "/products/1/images/2/edit" assert_equal 404, status end
test_resources_path_can_be_a_symbol()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2990 def test_resources_path_can_be_a_symbol draw do resources :wiki_pages, path: :pages resource :wiki_account, path: :my_account end get "/pages" assert_equal "wiki_pages#index", @response.body assert_equal "/pages", wiki_pages_path get "/pages/Ruby_on_Quails" assert_equal "wiki_pages#show", @response.body assert_equal "/pages/Ruby_on_Quails", wiki_page_path(id: "Ruby_on_Quails") get "/my_account" assert_equal "wiki_accounts#show", @response.body assert_equal "/my_account", wiki_account_path end
test_resources_routes_only_create_update_destroy()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 910 def test_resources_routes_only_create_update_destroy draw do resources :relationships, only: [:create, :destroy] resources :friendships, only: [:update] end post "/relationships" assert_equal "relationships#create", @response.body assert_equal "/relationships", relationships_path delete "/relationships/1" assert_equal "relationships#destroy", @response.body assert_equal "/relationships/1", relationship_path(1) patch "/friendships/1" assert_equal "friendships#update", @response.body assert_equal "/friendships/1", friendship_path(1) put "/friendships/1" assert_equal "friendships#update", @response.body assert_equal "/friendships/1", friendship_path(1) end
test_resources_where_as_is_empty()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3589 def test_resources_where_as_is_empty draw do resources :posts, as: "" scope "posts", as: "posts" do resources :comments, as: "" end end assert_equal "/posts/new", new_path assert_equal "/posts/comments/new", new_posts_path end
test_resources_with_format_false_from_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1391 def test_resources_with_format_false_from_scope draw do scope format: false do resources :posts resource :user end end get "/posts" assert_response :success assert_equal "posts#index", @response.body assert_equal "/posts", posts_path get "/posts.html" assert_response :not_found assert_equal "Not Found", @response.body assert_equal "/posts?format=html", posts_path(format: "html") get "/user" assert_response :success assert_equal "users#show", @response.body assert_equal "/user", user_path get "/user.html" assert_response :not_found assert_equal "Not Found", @response.body assert_equal "/user?format=html", user_path(format: "html") end
test_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1334 def test_root draw do root to: "projects#index" end assert_equal "/", root_path get "/" assert_equal "projects#index", @response.body end
test_root_in_deeply_nested_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3243 def test_root_in_deeply_nested_scope draw do resources :posts, only: [:index, :show] do namespace :admin do root to: "index#index" end end end get "/posts/1/admin" assert_equal "admin/index#index", @response.body assert_equal "/posts/1/admin", post_admin_root_path(post_id: "1") end
test_root_works_in_the_resources_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1828 def test_root_works_in_the_resources_scope draw do resources :products do root to: "products#root" end end get "/products" assert_equal "products#root", @response.body assert_equal "/products", products_root_path end
test_route_defined_in_resources_scope_level()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3095 def test_route_defined_in_resources_scope_level draw do resources :customers do get "export" end end get "/customers/1/export" assert_equal "customers#export", @response.body assert_equal "/customers/1/export", customer_export_path(customer_id: "1") end
test_route_with_dashes_in_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3378 def test_route_with_dashes_in_path draw do get "/contact-us", to: "pages#contact_us" end get "/contact-us" assert_equal "pages#contact_us", @response.body assert_equal "/contact-us", contact_us_path end
test_router_removes_invalid_conditions()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2547 def test_router_removes_invalid_conditions draw do scope constraints: { id: /\d+/ } do get "/tickets", to: "tickets#index", as: :tickets end end get "/tickets" assert_equal "tickets#index", @response.body assert_equal "/tickets", tickets_path end
test_scope_as_is_copied_to_shallow_prefix()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3540 def test_scope_as_is_copied_to_shallow_prefix draw do scope as: "foo" do resources :posts do resources :comments, shallow: true end end end assert_equal "/comments/1", foo_comment_path("1") end
test_scope_path_is_copied_to_shallow_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3528 def test_scope_path_is_copied_to_shallow_path draw do scope path: "foo" do resources :posts do resources :comments, shallow: true end end end assert_equal "/foo/comments/1", comment_path("1") end
test_scope_shallow_path_is_not_overwritten_by_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3564 def test_scope_shallow_path_is_not_overwritten_by_path draw do scope path: "foo", shallow_path: "bar" do resources :posts do resources :comments, shallow: true end end end assert_equal "/bar/comments/1", comment_path("1") end
test_scope_shallow_prefix_is_not_overwritten_by_as()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3552 def test_scope_shallow_prefix_is_not_overwritten_by_as draw do scope as: "foo", shallow_prefix: "bar" do resources :posts do resources :comments, shallow: true end end end assert_equal "/comments/1", bar_comment_path("1") end
test_scope_where_as_is_empty()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3602 def test_scope_where_as_is_empty draw do scope "post", as: "" do resource :user resources :comments end end assert_equal "/post/user/new", new_user_path assert_equal "/post/comments/new", new_comment_path end
test_scope_with_format_option()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1369 def test_scope_with_format_option draw do get "direct/index", as: :no_format_direct, format: false scope format: false do get "scoped/index", as: :no_format_scoped end end assert_equal "/direct/index", no_format_direct_path assert_equal "/direct/index?format=html", no_format_direct_path(format: "html") assert_equal "/scoped/index", no_format_scoped_path assert_equal "/scoped/index?format=html", no_format_scoped_path(format: "html") get "/scoped/index" assert_equal "scoped#index", @response.body get "/scoped/index.html" assert_equal "Not Found", @response.body end
test_scoped_controller_with_namespace_and_action()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1557 def test_scoped_controller_with_namespace_and_action draw do namespace :account do ActiveSupport::Deprecation.silence do get ":action/callback", action: /twitter|github/, controller: "callbacks", as: :callback end end end assert_equal "/account/twitter/callback", account_callback_path("twitter") get "/account/twitter/callback" assert_equal "account/callbacks#twitter", @response.body get "/account/whatever/callback" assert_equal "Not Found", @response.body end
test_scoped_root()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1344 def test_scoped_root draw do scope "(:locale)", locale: /en|pl/ do root to: "projects#index" end end assert_equal "/en", root_path(locale: "en") get "/en" assert_equal "projects#index", @response.body end
test_scoped_root_as_name()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1356 def test_scoped_root_as_name draw do scope "(:locale)", locale: /en|pl/ do root to: "projects#index", as: "projects" end end assert_equal "/en", projects_path(locale: "en") assert_equal "/", projects_path get "/en" assert_equal "projects#index", @response.body end
test_session_info_nested_singleton_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 213 def test_session_info_nested_singleton_resource draw do resource :session do resource :info end end get "/session/info" assert_equal "infos#show", @response.body assert_equal "/session/info", session_info_path end
test_session_singleton_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 141 def test_session_singleton_resource draw do resource :session do get :create post :reset end end get "/session" assert_equal "sessions#create", @response.body assert_equal "/session", session_path post "/session" assert_equal "sessions#create", @response.body put "/session" assert_equal "sessions#update", @response.body delete "/session" assert_equal "sessions#destroy", @response.body get "/session/new" assert_equal "sessions#new", @response.body assert_equal "/session/new", new_session_path get "/session/edit" assert_equal "sessions#edit", @response.body assert_equal "/session/edit", edit_session_path post "/session/reset" assert_equal "sessions#reset", @response.body assert_equal "/session/reset", reset_session_path end
test_session_singleton_resource_for_api_app()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 175 def test_session_singleton_resource_for_api_app config = ActionDispatch::Routing::RouteSet::Config.new config.api_only = true self.class.stub_controllers(config) do |routes| routes.draw do resource :session do get :create post :reset end end @app = RoutedRackApp.new routes end get "/session" assert_equal "sessions#create", @response.body assert_equal "/session", session_path post "/session" assert_equal "sessions#create", @response.body put "/session" assert_equal "sessions#update", @response.body delete "/session" assert_equal "sessions#destroy", @response.body post "/session/reset" assert_equal "sessions#reset", @response.body assert_equal "/session/reset", reset_session_path get "/session/new" assert_equal "Not Found", @response.body get "/session/edit" assert_equal "Not Found", @response.body end
test_shallow_custom_param()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3295 def test_shallow_custom_param draw do resources :orders do constraints download: /[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}/ do resources :downloads, param: :download, shallow: true end end end get "/downloads/0c0c0b68-d24b-11e1-a861-001ff3fffe6f.zip" assert_equal "downloads#show", @response.body assert_equal "0c0c0b68-d24b-11e1-a861-001ff3fffe6f", @request.params[:download] end
test_shallow_deeply_nested_resources()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2171 def test_shallow_deeply_nested_resources draw do resources :blogs do resources :posts do resources :comments, shallow: true end end end get "/comments/1" assert_equal "comments#show", @response.body assert_equal "/comments/1", comment_path("1") assert_equal "/blogs/new", new_blog_path assert_equal "/blogs/1/posts/new", new_blog_post_path(blog_id: 1) assert_equal "/blogs/1/posts/2/comments/new", new_blog_post_comment_path(blog_id: 1, post_id: 2) end
test_shallow_nested_resources()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2011 def test_shallow_nested_resources draw do shallow do namespace :api do resources :teams do resources :players resource :captain end end end resources :threads, shallow: true do resource :owner resources :messages do resources :comments do member do post :preview end end end end end get "/api/teams" assert_equal "api/teams#index", @response.body assert_equal "/api/teams", api_teams_path get "/api/teams/new" assert_equal "api/teams#new", @response.body assert_equal "/api/teams/new", new_api_team_path get "/api/teams/1" assert_equal "api/teams#show", @response.body assert_equal "/api/teams/1", api_team_path(id: "1") get "/api/teams/1/edit" assert_equal "api/teams#edit", @response.body assert_equal "/api/teams/1/edit", edit_api_team_path(id: "1") get "/api/teams/1/players" assert_equal "api/players#index", @response.body assert_equal "/api/teams/1/players", api_team_players_path(team_id: "1") get "/api/teams/1/players/new" assert_equal "api/players#new", @response.body assert_equal "/api/teams/1/players/new", new_api_team_player_path(team_id: "1") get "/api/players/2" assert_equal "api/players#show", @response.body assert_equal "/api/players/2", api_player_path(id: "2") get "/api/players/2/edit" assert_equal "api/players#edit", @response.body assert_equal "/api/players/2/edit", edit_api_player_path(id: "2") get "/api/teams/1/captain" assert_equal "api/captains#show", @response.body assert_equal "/api/teams/1/captain", api_team_captain_path(team_id: "1") get "/api/teams/1/captain/new" assert_equal "api/captains#new", @response.body assert_equal "/api/teams/1/captain/new", new_api_team_captain_path(team_id: "1") get "/api/teams/1/captain/edit" assert_equal "api/captains#edit", @response.body assert_equal "/api/teams/1/captain/edit", edit_api_team_captain_path(team_id: "1") get "/threads" assert_equal "threads#index", @response.body assert_equal "/threads", threads_path get "/threads/new" assert_equal "threads#new", @response.body assert_equal "/threads/new", new_thread_path get "/threads/1" assert_equal "threads#show", @response.body assert_equal "/threads/1", thread_path(id: "1") get "/threads/1/edit" assert_equal "threads#edit", @response.body assert_equal "/threads/1/edit", edit_thread_path(id: "1") get "/threads/1/owner" assert_equal "owners#show", @response.body assert_equal "/threads/1/owner", thread_owner_path(thread_id: "1") get "/threads/1/messages" assert_equal "messages#index", @response.body assert_equal "/threads/1/messages", thread_messages_path(thread_id: "1") get "/threads/1/messages/new" assert_equal "messages#new", @response.body assert_equal "/threads/1/messages/new", new_thread_message_path(thread_id: "1") get "/messages/2" assert_equal "messages#show", @response.body assert_equal "/messages/2", message_path(id: "2") get "/messages/2/edit" assert_equal "messages#edit", @response.body assert_equal "/messages/2/edit", edit_message_path(id: "2") get "/messages/2/comments" assert_equal "comments#index", @response.body assert_equal "/messages/2/comments", message_comments_path(message_id: "2") get "/messages/2/comments/new" assert_equal "comments#new", @response.body assert_equal "/messages/2/comments/new", new_message_comment_path(message_id: "2") get "/comments/3" assert_equal "comments#show", @response.body assert_equal "/comments/3", comment_path(id: "3") get "/comments/3/edit" assert_equal "comments#edit", @response.body assert_equal "/comments/3/edit", edit_comment_path(id: "3") post "/comments/3/preview" assert_equal "comments#preview", @response.body assert_equal "/comments/3/preview", preview_comment_path(id: "3") end
test_shallow_nested_resources_inside_resource()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2135 def test_shallow_nested_resources_inside_resource draw do resource :membership, shallow: true do resources :cards end end get "/membership/cards" assert_equal "cards#index", @response.body assert_equal "/membership/cards", membership_cards_path get "/membership/cards/new" assert_equal "cards#new", @response.body assert_equal "/membership/cards/new", new_membership_card_path post "/membership/cards" assert_equal "cards#create", @response.body get "/cards/1" assert_equal "cards#show", @response.body assert_equal "/cards/1", card_path("1") get "/cards/1/edit" assert_equal "cards#edit", @response.body assert_equal "/cards/1/edit", edit_card_path("1") put "/cards/1" assert_equal "cards#update", @response.body patch "/cards/1" assert_equal "cards#update", @response.body delete "/cards/1" assert_equal "cards#destroy", @response.body end
test_shallow_nested_resources_within_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2211 def test_shallow_nested_resources_within_scope draw do scope "/hello" do shallow do resources :notes do resources :trackbacks end end end end get "/hello/notes/1/trackbacks" assert_equal "trackbacks#index", @response.body assert_equal "/hello/notes/1/trackbacks", note_trackbacks_path(note_id: 1) get "/hello/notes/1/edit" assert_equal "notes#edit", @response.body assert_equal "/hello/notes/1/edit", edit_note_path(id: "1") get "/hello/notes/1/trackbacks/new" assert_equal "trackbacks#new", @response.body assert_equal "/hello/notes/1/trackbacks/new", new_note_trackback_path(note_id: 1) get "/hello/trackbacks/1" assert_equal "trackbacks#show", @response.body assert_equal "/hello/trackbacks/1", trackback_path(id: "1") get "/hello/trackbacks/1/edit" assert_equal "trackbacks#edit", @response.body assert_equal "/hello/trackbacks/1/edit", edit_trackback_path(id: "1") put "/hello/trackbacks/1" assert_equal "trackbacks#update", @response.body post "/hello/notes/1/trackbacks" assert_equal "trackbacks#create", @response.body delete "/hello/trackbacks/1" assert_equal "trackbacks#destroy", @response.body get "/hello/notes" assert_equal "notes#index", @response.body post "/hello/notes" assert_equal "notes#create", @response.body get "/hello/notes/new" assert_equal "notes#new", @response.body assert_equal "/hello/notes/new", new_note_path get "/hello/notes/1" assert_equal "notes#show", @response.body assert_equal "/hello/notes/1", note_path(id: 1) put "/hello/notes/1" assert_equal "notes#update", @response.body delete "/hello/notes/1" assert_equal "notes#destroy", @response.body end
test_shallow_nested_routes_ignore_module()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2383 def test_shallow_nested_routes_ignore_module draw do scope module: :api do resources :errors, shallow: true do resources :notices end end end get "/errors/1/notices" assert_equal "api/notices#index", @response.body assert_equal "/errors/1/notices", error_notices_path(error_id: "1") get "/notices/1" assert_equal "api/notices#show", @response.body assert_equal "/notices/1", notice_path(id: "1") end
test_shallow_option_nested_resources_within_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2272 def test_shallow_option_nested_resources_within_scope draw do scope "/hello" do resources :notes, shallow: true do resources :trackbacks end end end get "/hello/notes/1/trackbacks" assert_equal "trackbacks#index", @response.body assert_equal "/hello/notes/1/trackbacks", note_trackbacks_path(note_id: 1) get "/hello/notes/1/edit" assert_equal "notes#edit", @response.body assert_equal "/hello/notes/1/edit", edit_note_path(id: "1") get "/hello/notes/1/trackbacks/new" assert_equal "trackbacks#new", @response.body assert_equal "/hello/notes/1/trackbacks/new", new_note_trackback_path(note_id: 1) get "/hello/trackbacks/1" assert_equal "trackbacks#show", @response.body assert_equal "/hello/trackbacks/1", trackback_path(id: "1") get "/hello/trackbacks/1/edit" assert_equal "trackbacks#edit", @response.body assert_equal "/hello/trackbacks/1/edit", edit_trackback_path(id: "1") put "/hello/trackbacks/1" assert_equal "trackbacks#update", @response.body post "/hello/notes/1/trackbacks" assert_equal "trackbacks#create", @response.body delete "/hello/trackbacks/1" assert_equal "trackbacks#destroy", @response.body get "/hello/notes" assert_equal "notes#index", @response.body post "/hello/notes" assert_equal "notes#create", @response.body get "/hello/notes/new" assert_equal "notes#new", @response.body assert_equal "/hello/notes/new", new_note_path get "/hello/notes/1" assert_equal "notes#show", @response.body assert_equal "/hello/notes/1", note_path(id: 1) put "/hello/notes/1" assert_equal "notes#update", @response.body delete "/hello/notes/1" assert_equal "notes#destroy", @response.body end
test_shallow_path_and_prefix_are_not_added_to_non_shallow_routes()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3468 def test_shallow_path_and_prefix_are_not_added_to_non_shallow_routes draw do scope shallow_path: "projects", shallow_prefix: "project" do resources :projects do resources :files, controller: "project_files", shallow: true end end end get "/projects" assert_equal "projects#index", @response.body assert_equal "/projects", projects_path get "/projects/new" assert_equal "projects#new", @response.body assert_equal "/projects/new", new_project_path post "/projects" assert_equal "projects#create", @response.body get "/projects/1" assert_equal "projects#show", @response.body assert_equal "/projects/1", project_path("1") get "/projects/1/edit" assert_equal "projects#edit", @response.body assert_equal "/projects/1/edit", edit_project_path("1") patch "/projects/1" assert_equal "projects#update", @response.body delete "/projects/1" assert_equal "projects#destroy", @response.body get "/projects/1/files" assert_equal "project_files#index", @response.body assert_equal "/projects/1/files", project_files_path("1") get "/projects/1/files/new" assert_equal "project_files#new", @response.body assert_equal "/projects/1/files/new", new_project_file_path("1") post "/projects/1/files" assert_equal "project_files#create", @response.body get "/projects/files/2" assert_equal "project_files#show", @response.body assert_equal "/projects/files/2", project_file_path("2") get "/projects/files/2/edit" assert_equal "project_files#edit", @response.body assert_equal "/projects/files/2/edit", edit_project_file_path("2") patch "/projects/files/2" assert_equal "project_files#update", @response.body delete "/projects/files/2" assert_equal "project_files#destroy", @response.body end
test_shallow_path_inside_namespace_is_not_added_twice()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3424 def test_shallow_path_inside_namespace_is_not_added_twice draw do namespace :admin do shallow do resources :posts do resources :comments end end end end get "/admin/posts/1/comments" assert_equal "admin/comments#index", @response.body assert_equal "/admin/posts/1/comments", admin_post_comments_path("1") end
test_shorthand_route_with_dashes_in_path()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3388 def test_shorthand_route_with_dashes_in_path draw do get "/about-us/index" end get "/about-us/index" assert_equal "about_us#index", @response.body assert_equal "/about-us/index", about_us_index_path end
test_singleton_resources_are_not_singularized()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2923 def test_singleton_resources_are_not_singularized draw do namespace :medical do resource :taxis end end get "/medical/taxis/new" assert_equal "medical/taxis#new", @response.body assert_equal "/medical/taxis/new", new_medical_taxis_path post "/medical/taxis" assert_equal "medical/taxis#create", @response.body get "/medical/taxis" assert_equal "medical/taxis#show", @response.body assert_equal "/medical/taxis", medical_taxis_path get "/medical/taxis/edit" assert_equal "medical/taxis#edit", @response.body assert_equal "/medical/taxis/edit", edit_medical_taxis_path put "/medical/taxis" assert_equal "medical/taxis#update", @response.body delete "/medical/taxis" assert_equal "medical/taxis#destroy", @response.body end
test_sprockets()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1019 def test_sprockets draw do get "sprockets.js" => ::TestRoutingMapper::SprocketsApp end get "/sprockets.js" assert_equal "javascripts", @response.body end
test_symbol_scope()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1866 def test_symbol_scope draw do scope path: "api" do scope :v2 do resource :me, as: "v2_me" get "/" => "mes#index" end scope :v3, :admin do resource :me, as: "v3_me" end end end get "/api/v2/me" assert_equal "mes#show", @response.body assert_equal "/api/v2/me", v2_me_path get "/api/v2" assert_equal "mes#index", @response.body get "/api/v3/admin/me" assert_equal "mes#show", @response.body end
test_trailing_slash()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3360 def test_trailing_slash draw do resources :streams end get "/streams" assert @response.ok?, "route without trailing slash should work" get "/streams/" assert @response.ok?, "route with trailing slash should work" get "/streams?foobar" assert @response.ok?, "route without trailing slash and with QUERY_STRING should work" get "/streams/?foobar" assert @response.ok?, "route with trailing slash and with QUERY_STRING should work" end
test_update_person_route()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1028 def test_update_person_route draw do get "people/:id/update", to: "people#update", as: :update_person end get "/people/1/update" assert_equal "people#update", @response.body assert_equal "/people/1/update", update_person_path(id: 1) end
test_update_project_person()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1039 def test_update_project_person draw do get "/projects/:project_id/people/:id/update", to: "people#update", as: :update_project_person end get "/projects/1/people/2/update" assert_equal "people#update", @response.body assert_equal "/projects/1/people/2/update", update_project_person_path(project_id: 1, id: 2) end
test_url_for_does_not_modify_controller()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 489 def test_url_for_does_not_modify_controller draw do get "/projects/status(.:format)" end controller = "/projects" options = { controller: controller, action: "status", only_path: true } url = url_for(options) assert_equal "/projects/status", url assert_equal "/projects", controller end
test_url_for_with_no_side_effects()
click to toggle source
tests the use of dup in url_for
# File actionpack/test/dispatch/routing_test.rb, line 474 def test_url_for_with_no_side_effects draw do get "/projects/status(.:format)" end # without dup, additional (and possibly unwanted) values will be present in the options (eg. :host) original_options = { controller: "projects", action: "status" } options = original_options.dup url_for options # verify that the options passed in have not changed from the original ones assert_equal original_options, options end
test_url_generator_for_generic_route()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1891 def test_url_generator_for_generic_route draw do ActiveSupport::Deprecation.silence do get "whatever/:controller(/:action(/:id))" end end get "/whatever/foo/bar" assert_equal "foo#bar", @response.body assert_equal "http://www.example.com/whatever/foo/bar/1", url_for(controller: "foo", action: "bar", id: 1) end
test_url_generator_for_namespaced_generic_route()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1905 def test_url_generator_for_namespaced_generic_route draw do ActiveSupport::Deprecation.silence do get "whatever/:controller(/:action(/:id))", id: /\d+/ end end get "/whatever/foo/bar/show" assert_equal "foo/bar#show", @response.body get "/whatever/foo/bar/show/1" assert_equal "foo/bar#show", @response.body assert_equal "http://www.example.com/whatever/foo/bar/show", url_for(controller: "foo/bar", action: "show") assert_equal "http://www.example.com/whatever/foo/bar/show/1", url_for(controller: "foo/bar", action: "show", id: "1") end
test_url_generator_for_optional_prefix_dynamic_segment()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2465 def test_url_generator_for_optional_prefix_dynamic_segment draw do get "(/:username)/followers" => "followers#index" end get "/bob/followers" assert_equal "followers#index", @response.body assert_equal "http://www.example.com/bob/followers", url_for(controller: "followers", action: "index", username: "bob") get "/followers" assert_equal "followers#index", @response.body assert_equal "http://www.example.com/followers", url_for(controller: "followers", action: "index", username: nil) end
test_url_generator_for_optional_prefix_static_and_dynamic_segment()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2497 def test_url_generator_for_optional_prefix_static_and_dynamic_segment draw do get "(/user/:username)/photos" => "photos#index" end get "/user/bob/photos" assert_equal "photos#index", @response.body assert_equal "http://www.example.com/user/bob/photos", url_for(controller: "photos", action: "index", username: "bob") get "/photos" assert_equal "photos#index", @response.body assert_equal "http://www.example.com/photos", url_for(controller: "photos", action: "index", username: nil) end
test_url_generator_for_optional_suffix_static_and_dynamic_segment()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2481 def test_url_generator_for_optional_suffix_static_and_dynamic_segment draw do get "/groups(/user/:username)" => "groups#index" end get "/groups/user/bob" assert_equal "groups#index", @response.body assert_equal "http://www.example.com/groups/user/bob", url_for(controller: "groups", action: "index", username: "bob") get "/groups" assert_equal "groups#index", @response.body assert_equal "http://www.example.com/groups", url_for(controller: "groups", action: "index", username: nil) end
test_url_recognition_for_optional_static_segments()
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2513 def test_url_recognition_for_optional_static_segments draw do scope "(groups)" do scope "(discussions)" do resources :messages end end end get "/groups/discussions/messages" assert_equal "messages#index", @response.body get "/groups/discussions/messages/1" assert_equal "messages#show", @response.body get "/groups/messages" assert_equal "messages#index", @response.body get "/groups/messages/1" assert_equal "messages#show", @response.body get "/discussions/messages" assert_equal "messages#index", @response.body get "/discussions/messages/1" assert_equal "messages#show", @response.body get "/messages" assert_equal "messages#index", @response.body get "/messages/1" assert_equal "messages#show", @response.body end
Private Instance Methods
draw(&block)
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3731 def draw(&block) self.class.stub_controllers do |routes| routes.default_url_options = { host: "www.example.com" } routes.draw(&block) @app = RoutedRackApp.new routes end end
expected_redirect_body(url)
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3765 def expected_redirect_body(url) %(<html><body>You are being <a href="#{ERB::Util.h(url)}">redirected</a>.</body></html>) end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File actionpack/test/dispatch/routing_test.rb, line 3743 def method_missing(method, *args, &block) if method.to_s =~ /_(path|url)$/ @app.routes.url_helpers.send(method, *args, &block) else super end end
url_for(options = {})
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3739 def url_for(options = {}) @app.routes.url_helpers.url_for(options) end
verify_redirect(url, status = 301)
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3759 def verify_redirect(url, status = 301) assert_equal status, @response.status assert_equal url, @response.headers["Location"] assert_equal expected_redirect_body(url), @response.body end
with_https() { || ... }
click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3751 def with_https old_https = https? https! yield ensure https!(old_https) end