class AePageObjects::ApplicationRouter::Recognizer::Base

Constants

ResolvedRoute

Public Instance Methods

generate_path(named_route, *args) click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 9
def generate_path(named_route, *args)
  if routes.respond_to?("#{named_route}_path")
    routes.send("#{named_route}_path", *args)
  end
end
recognizes?(named_route, url) click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 15
def recognizes?(named_route, url)
  url = normalize_url(url)

  resolved_named_route = resolve_named_route(named_route)

  [:get, :post, :put, :delete, :patch].each do |method|
    resolved_route_from_url = resolve_url(url, method)

    # The first resolved route matching named route is returned as
    # Rails' routes are in priority order.
    if resolved_named_route == resolved_route_from_url
      return true
    end
  end

  false
end

Private Instance Methods

normalize_url(url) click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 39
def normalize_url(url)
  raise NotImplementedError, "You must implement normalize_url"
end
resolve_named_route(named_route) click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 47
def resolve_named_route(named_route)
  requirements = router.named_routes[named_route].requirements
  ResolvedRoute.new(requirements[:controller], requirements[:action])
end
resolve_url(url, method) click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 52
def resolve_url(url, method)
  recognized_path = router.recognize_path(url, {:method => method})
  ResolvedRoute.new(recognized_path[:controller], recognized_path[:action])
rescue ActionController::RoutingError, ActionController::MethodNotAllowed
end
router() click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 43
def router
  raise NotImplementedError, "You must implement router"
end
routes() click to toggle source
# File lib/ae_page_objects/rails/application_router.rb, line 35
def routes
  raise NotImplementedError, "You must implement routes"
end