Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 8 additions & 27 deletions lib/ae_page_objects/core/application_router.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,10 @@ def generate_path(named_route, *args)
class Rails23 < Base
def recognizes?(path, url)
["GET", "PUT", "POST", "DELETE", "PATCH"].map(&:downcase).map(&:to_sym).each do |method|
path_route_result = ActionController::Routing::Routes.named_routes[path].requirements
recognized_result = nil

begin
recognized_result = ActionController::Routing::Routes.recognize_path(url, {:method => method}).select do
|key, _|
key.to_s.match(/(controller|action)/)
end
rescue ActionController::MethodNotAllowed
end
route = ActionController::Routing::Routes.named_routes[path]
route.recognize(url, {:method => method})

# Only the first recognized path returned by Rails is considered,
# which means, we only want highest prioritized route.
if recognized_result && path_route_result == Hash[recognized_result]
return true
else
next
end
return true if route && route.recognize(url, {:method => method})
end

false
Expand All @@ -58,18 +44,14 @@ def recognizes?(path, url)

["GET", "PUT", "POST", "DELETE", "PATCH"].each do |method|
router.recognize(request_for(url, method)) do |route, matches, params|
if route.name.to_s == path.to_s
return true
else
# We break the inner loop here because only the first recognized path returned by Rails is considered,
# which means, we only want highest prioritized route.
break
end
return true if route.name.to_s == path.to_s
end
end

false
end


private

def request_for(url, method)
Expand Down Expand Up @@ -104,7 +86,6 @@ def routes
class Rails32 < Rails3

private

def url_and_router(url)
url = Journey::Router::Utils.normalize_path(url) unless url =~ %r{://}
router = ::Rails.application.routes.router
Expand All @@ -115,8 +96,7 @@ def url_and_router(url)

class Rails4 < Rails32

private

private
def url_and_router(url)
require 'action_dispatch/journey'
url = ActionDispatch::Journey::Router::Utils.normalize_path(url) unless url =~ %r{://}
Expand All @@ -125,6 +105,7 @@ def url_and_router(url)
[url, router]
end
end

end

def path_recognizes_url?(path, url)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,44 +126,6 @@ def test_window_change_to
assert_equal PageObjects::Books::NewPage, books_new_page.class
end

def test_window_change_to__multiple_pages
book = Book.create!(:title => "Brave New World")

visit("/books/#{book.id}")
result_page = AePageObjects.browser.current_window.change_to(PageObjects::Books::NewPage,
PageObjects::Books::ShowPage)
assert_equal true, result_page.is_a?(PageObjects::Books::ShowPage)

result_page = AePageObjects.browser.current_window.change_to(PageObjects::Books::ShowPage,
PageObjects::Books::NewPage)
assert_equal true, result_page.is_a?(PageObjects::Books::ShowPage)

assert_nothing_raised do
AePageObjects.browser.current_window.change_to(PageObjects::Books::ShowPage)
end

assert_raises AePageObjects::DocumentLoadError do
AePageObjects.browser.current_window.change_to(PageObjects::Books::NewPage)
end

visit("/books/new")
result_page = AePageObjects.browser.current_window.change_to(PageObjects::Books::NewPage,
PageObjects::Books::ShowPage)
assert_equal true, result_page.is_a?(PageObjects::Books::NewPage)

result_page = AePageObjects.browser.current_window.change_to(PageObjects::Books::ShowPage,
PageObjects::Books::NewPage)
assert_equal true, result_page.is_a?(PageObjects::Books::NewPage)

assert_nothing_raised do
AePageObjects.browser.current_window.change_to(PageObjects::Books::NewPage)
end

assert_raises AePageObjects::DocumentLoadError do
AePageObjects.browser.current_window.change_to(PageObjects::Books::ShowPage)
end
end

def test_element_proxy
author = PageObjects::Authors::NewPage.visit

Expand Down