class RackMountIntegrationTests

Constants

Mapping
Model

Attributes

controller[R]
routes[R]

Public Instance Methods

setup() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 1981
def setup
  @routes = ActionDispatch::Routing::RouteSet.new
  @routes.draw(&Mapping)
end
test_downcased_unicode_path() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 2097
def test_downcased_unicode_path
  assert_equal({ controller: "news", action: "index" }, @routes.recognize_path(URI.parser.escape("こんにちは/世界").downcase, method: :get))
end
test_extras() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 2079
def test_extras
  params = { controller: "people" }
  assert_equal [], @routes.extra_keys(params)
  assert_equal({ controller: "people", action: "index" }, params)

  params = { controller: "people", foo: "bar" }
  assert_equal [:foo], @routes.extra_keys(params)
  assert_equal({ controller: "people", action: "index", foo: "bar" }, params)

  params = { controller: "people", action: "create", person: { name: "Josh" } }
  assert_equal [:person], @routes.extra_keys(params)
  assert_equal({ controller: "people", action: "create", person: { name: "Josh" } }, params)
end
test_generate_extras() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 2061
def test_generate_extras
  assert_equal ["/people", []], @routes.generate_extras(controller: "people")
  assert_equal ["/people", [:foo]], @routes.generate_extras(controller: "people", foo: "bar")
  assert_equal ["/people", []], @routes.generate_extras(controller: "people", action: "index")
  assert_equal ["/people", [:foo]], @routes.generate_extras(controller: "people", action: "index", foo: "bar")
  assert_equal ["/people/new", []], @routes.generate_extras(controller: "people", action: "new")
  assert_equal ["/people/new", [:foo]], @routes.generate_extras(controller: "people", action: "new", foo: "bar")
  assert_equal ["/people/1", []], @routes.generate_extras(controller: "people", action: "show", id: "1")
  assert_equal ["/people/1", [:bar, :foo]], sort_extras!(@routes.generate_extras(controller: "people", action: "show", id: "1", foo: "2", bar: "3"))
  assert_equal ["/people", [:person]], @routes.generate_extras(controller: "people", action: "create", person: { first_name: "Josh", last_name: "Peek" })
  assert_equal ["/people", [:people]], @routes.generate_extras(controller: "people", action: "create", people: ["Josh", "Dave"])

  assert_equal ["/posts/show/1", []], @routes.generate_extras(controller: "posts", action: "show", id: "1")
  assert_equal ["/posts/show/1", [:bar, :foo]], sort_extras!(@routes.generate_extras(controller: "posts", action: "show", id: "1", foo: "2", bar: "3"))
  assert_equal ["/posts", []], @routes.generate_extras(controller: "posts", action: "index")
  assert_equal ["/posts", [:foo]], @routes.generate_extras(controller: "posts", action: "index", foo: "bar")
end
test_recognize_path() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 1986
def test_recognize_path
  assert_equal({ controller: "admin/users", action: "index" }, @routes.recognize_path("/admin/users", method: :get))
  assert_equal({ controller: "admin/users", action: "create" }, @routes.recognize_path("/admin/users", method: :post))
  assert_equal({ controller: "admin/users", action: "new" }, @routes.recognize_path("/admin/users/new", method: :get))
  assert_equal({ controller: "admin/users", action: "show", id: "1" }, @routes.recognize_path("/admin/users/1", method: :get))
  assert_equal({ controller: "admin/users", action: "update", id: "1" }, @routes.recognize_path("/admin/users/1", method: :put))
  assert_equal({ controller: "admin/users", action: "destroy", id: "1" }, @routes.recognize_path("/admin/users/1", method: :delete))
  assert_equal({ controller: "admin/users", action: "edit", id: "1" }, @routes.recognize_path("/admin/users/1/edit", method: :get))

  assert_equal({ controller: "admin/posts", action: "index" }, @routes.recognize_path("/admin/posts", method: :get))
  assert_equal({ controller: "admin/posts", action: "new" }, @routes.recognize_path("/admin/posts/new", method: :get))

  assert_equal({ controller: "api/users", action: "index" }, @routes.recognize_path("/api", method: :get))
  assert_equal({ controller: "api/users", action: "index" }, @routes.recognize_path("/api/", method: :get))

  assert_equal({ controller: "posts", action: "show_date", year: "2009", month: nil, day: nil }, @routes.recognize_path("/blog/2009", method: :get))
  assert_equal({ controller: "posts", action: "show_date", year: "2009", month: "01", day: nil }, @routes.recognize_path("/blog/2009/01", method: :get))
  assert_equal({ controller: "posts", action: "show_date", year: "2009", month: "01", day: "01" }, @routes.recognize_path("/blog/2009/01/01", method: :get))

  assert_equal({ controller: "archive", action: "index", year: "2010" }, @routes.recognize_path("/archive/2010"))
  assert_equal({ controller: "archive", action: "index" }, @routes.recognize_path("/archive"))

  assert_equal({ controller: "people", action: "index" }, @routes.recognize_path("/people", method: :get))
  assert_equal({ controller: "people", action: "index", format: "xml" }, @routes.recognize_path("/people.xml", method: :get))
  assert_equal({ controller: "people", action: "create" }, @routes.recognize_path("/people", method: :post))
  assert_equal({ controller: "people", action: "new" }, @routes.recognize_path("/people/new", method: :get))
  assert_equal({ controller: "people", action: "show", id: "1" }, @routes.recognize_path("/people/1", method: :get))
  assert_equal({ controller: "people", action: "show", id: "1", format: "xml" }, @routes.recognize_path("/people/1.xml", method: :get))
  assert_equal({ controller: "people", action: "update", id: "1" }, @routes.recognize_path("/people/1", method: :put))
  assert_equal({ controller: "people", action: "destroy", id: "1" }, @routes.recognize_path("/people/1", method: :delete))
  assert_equal({ controller: "people", action: "edit", id: "1" }, @routes.recognize_path("/people/1/edit", method: :get))
  assert_equal({ controller: "people", action: "edit", id: "1", format: "xml" }, @routes.recognize_path("/people/1/edit.xml", method: :get))

  assert_equal({ controller: "symbols", action: "show", name: :as_symbol }, @routes.recognize_path("/symbols"))
  assert_equal({ controller: "foo", action: "id_default", id: "1" }, @routes.recognize_path("/id_default/1"))
  assert_equal({ controller: "foo", action: "id_default", id: "2" }, @routes.recognize_path("/id_default/2"))
  assert_equal({ controller: "foo", action: "id_default", id: 1 }, @routes.recognize_path("/id_default"))
  assert_equal({ controller: "foo", action: "get_or_post" }, @routes.recognize_path("/get_or_post", method: :get))
  assert_equal({ controller: "foo", action: "get_or_post" }, @routes.recognize_path("/get_or_post", method: :post))
  assert_raise(ActionController::RoutingError) { @routes.recognize_path("/get_or_post", method: :put) }
  assert_raise(ActionController::RoutingError) { @routes.recognize_path("/get_or_post", method: :delete) }

  assert_equal({ controller: "posts", action: "index", optional: "bar" }, @routes.recognize_path("/optional/bar"))
  assert_raise(ActionController::RoutingError) { @routes.recognize_path("/optional") }

  assert_equal({ controller: "posts", action: "show", id: "1", ws: true }, @routes.recognize_path("/ws/posts/show/1", method: :get))
  assert_equal({ controller: "posts", action: "list", ws: true }, @routes.recognize_path("/ws/posts/list", method: :get))
  assert_equal({ controller: "posts", action: "index", ws: true }, @routes.recognize_path("/ws/posts", method: :get))

  assert_equal({ controller: "account", action: "subscription" }, @routes.recognize_path("/account", method: :get))
  assert_equal({ controller: "account", action: "subscription" }, @routes.recognize_path("/account/subscription", method: :get))
  assert_equal({ controller: "account", action: "billing" }, @routes.recognize_path("/account/billing", method: :get))

  assert_equal({ page_id: "1", controller: "notes", action: "index" }, @routes.recognize_path("/pages/1/notes", method: :get))
  assert_equal({ page_id: "1", controller: "notes", action: "list" }, @routes.recognize_path("/pages/1/notes/list", method: :get))
  assert_equal({ page_id: "1", controller: "notes", action: "show", id: "2" }, @routes.recognize_path("/pages/1/notes/show/2", method: :get))

  assert_equal({ controller: "posts", action: "ping" }, @routes.recognize_path("/posts/ping", method: :get))
  assert_equal({ controller: "posts", action: "index" }, @routes.recognize_path("/posts", method: :get))
  assert_equal({ controller: "posts", action: "index" }, @routes.recognize_path("/posts/index", method: :get))
  assert_equal({ controller: "posts", action: "show" }, @routes.recognize_path("/posts/show", method: :get))
  assert_equal({ controller: "posts", action: "show", id: "1" }, @routes.recognize_path("/posts/show/1", method: :get))
  assert_equal({ controller: "posts", action: "create" }, @routes.recognize_path("/posts/create", method: :post))

  assert_equal({ controller: "geocode", action: "show", postalcode: "hx12-1az" }, @routes.recognize_path("/ignorecase/geocode/hx12-1az"))
  assert_equal({ controller: "geocode", action: "show", postalcode: "hx12-1AZ" }, @routes.recognize_path("/ignorecase/geocode/hx12-1AZ"))
  assert_equal({ controller: "geocode", action: "show", postalcode: "12345-1234" }, @routes.recognize_path("/extended/geocode/12345-1234"))
  assert_equal({ controller: "geocode", action: "show", postalcode: "12345" }, @routes.recognize_path("/extended/geocode/12345"))

  assert_equal({ controller: "news", action: "index" }, @routes.recognize_path("/", method: :get))
  assert_equal({ controller: "news", action: "index", format: "rss" }, @routes.recognize_path("/news.rss", method: :get))

  assert_raise(ActionController::RoutingError) { @routes.recognize_path("/none", method: :get) }
end
test_unicode_path() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 2093
def test_unicode_path
  assert_equal({ controller: "news", action: "index" }, @routes.recognize_path(URI.parser.escape("こんにちは/世界"), method: :get))
end

Private Instance Methods

sort_extras!(extras) click to toggle source
# File actionpack/test/controller/routing_test.rb, line 2102
def sort_extras!(extras)
  if extras.length == 2
    extras[1].sort! { |a, b| a.to_s <=> b.to_s }
  end
  extras
end