Fix visiting relative URLs when no server started, closes #861

This commit is contained in:
Jonas Nicklas 2012-11-14 14:29:12 +01:00
parent d21d6ddd8a
commit 7da8833df2
4 changed files with 24 additions and 5 deletions

View File

@ -170,10 +170,12 @@ module Capybara
def visit(url)
@touched = true
if url !~ /^http/ and Capybara.app_host
url = Capybara.app_host + url.to_s
end
if @server
unless url =~ /^http/
url = (Capybara.app_host || "http://#{@server.host}:#{@server.port}") + url.to_s
end
url = "http://#{@server.host}:#{@server.port}" + url.to_s unless url =~ /^http/
if Capybara.always_include_port
uri = URI.parse(url)

View File

@ -43,6 +43,21 @@ Capybara::SpecHelper.spec '#visit' do
end
end
context "without a server", :requires => [:server] do
it "should respect `app_host`" do
serverless_session = Capybara::Session.new(@session.mode, nil)
Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}"
serverless_session.visit("/foo")
serverless_session.should have_content("Another World")
end
it "should visit a fully qualified URL" do
serverless_session = Capybara::Session.new(@session.mode, nil)
serverless_session.visit("http://#{@session.server.host}:#{@session.server.port}/foo")
serverless_session.should have_content("Another World")
end
end
it "should send no referer when visiting a page" do
@session.visit '/get_referer'
@session.should have_content 'No referer'

View File

@ -9,7 +9,8 @@ Capybara::SpecHelper.run_specs TestClass.new, "DSL", :skip => [
:js,
:screenshot,
:frames,
:windows
:windows,
:server
]
describe Capybara::DSL do

View File

@ -8,7 +8,8 @@ Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :skip => [
:js,
:screenshot,
:frames,
:windows
:windows,
:server
]
describe Capybara::Session do