Support relative links, including href="?foo=bar"
This commit is contained in:
parent
7ab6dd720f
commit
32dc36592b
|
@ -10,7 +10,7 @@ module Webrat
|
|||
method ||= http_method
|
||||
return if href =~ /^#/ && method == :get
|
||||
|
||||
Page.new(@page.session, href, method, authenticity_token.blank? ? {} : {"authenticity_token" => authenticity_token})
|
||||
Page.new(@page.session, absolute_href, method, authenticity_token.blank? ? {} : {"authenticity_token" => authenticity_token})
|
||||
end
|
||||
|
||||
def matches_text?(link_text)
|
||||
|
@ -26,6 +26,16 @@ module Webrat
|
|||
def href
|
||||
@element["href"]
|
||||
end
|
||||
|
||||
def absolute_href
|
||||
if href =~ /^\?/
|
||||
"#{@page.url}#{href}"
|
||||
elsif href !~ /^\//
|
||||
"#{@page.url}/#{href}"
|
||||
else
|
||||
href
|
||||
end
|
||||
end
|
||||
|
||||
def authenticity_token
|
||||
return unless onclick && onclick.include?("s.setAttribute('name', 'authenticity_token');") &&
|
||||
|
|
|
@ -190,4 +190,22 @@ class ClicksLinkTest < Test::Unit::TestCase
|
|||
@session.expects(:send).with('get_via_redirect', '#section-1', {}).never
|
||||
@session.clicks_link "Jump to Section 1"
|
||||
end
|
||||
|
||||
def test_should_follow_relative_links
|
||||
@session.current_page.stubs(:url).returns("/page")
|
||||
@response.stubs(:body).returns(<<-EOS)
|
||||
<a href="sub">Jump to sub page</a>
|
||||
EOS
|
||||
@session.expects(:get_via_redirect).with("/page/sub", {})
|
||||
@session.clicks_link "Jump to sub page"
|
||||
end
|
||||
|
||||
def test_should_follow_query_parameters
|
||||
@session.current_page.stubs(:url).returns("/page")
|
||||
@response.stubs(:body).returns(<<-EOS)
|
||||
<a href="?foo=bar">Jump to foo bar</a>
|
||||
EOS
|
||||
@session.expects(:get_via_redirect).with("/page?foo=bar", {})
|
||||
@session.clicks_link "Jump to foo bar"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue