Trashing Driver::Base#response in favor of #response_headers. Not supported by all browsers(e.g. Selenium)

This commit is contained in:
Lenny Marks 2009-12-18 12:50:55 -05:00
parent 481e912c5b
commit 5c22edb7cd
8 changed files with 49 additions and 17 deletions

View File

@ -19,7 +19,11 @@ class Capybara::Driver::Base
false
end
def response
def response_headers
raise Capybara::NotSupportedByDriverError
end
def body
raise "Not implemented"
end

View File

@ -59,10 +59,14 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
browser.url
end
def response
Rack::MockResponse.new(browser.status_code, browser.response_headers, browser.html)
def body
browser.html
end
def response_headers
browser.response_headers
end
def find(selector)
browser.elements_by_xpath(selector).map { |node| Node.new(self, node) }
end

View File

@ -139,6 +139,10 @@ class Capybara::Driver::RackTest < Capybara::Driver::Base
def current_url
request.url
end
def response_headers
response.headers
end
def submit(path, attributes)
post(path, attributes)

View File

@ -72,12 +72,8 @@ class Capybara::Driver::Selenium < Capybara::Driver::Base
driver.navigate.to(url(path))
end
def response
#Can I get a response code and headers from Selenium?
#Maybe we should just plug in the location here
#and leave more header involved stuff for another driver
#(e.g. celerity)
Rack::MockResponse.new(-1, {}, driver.page_source)
def body
driver.page_source
end
def current_url

View File

@ -1,10 +1,15 @@
require File.expand_path('../spec_helper', File.dirname(__FILE__))
describe Capybara::Driver::Celerity do
before do
@driver = Capybara::Driver::Celerity.new(TestApp)
if RUBY_PLATFORM =~ /java/
describe Capybara::Driver::Celerity do
before do
@driver = Capybara::Driver::Celerity.new(TestApp)
end
it_should_behave_like "driver"
it_should_behave_like "driver with javascript support"
it_should_behave_like "driver with header support"
end
it_should_behave_like "driver"
it_should_behave_like "driver with javascript support"
end
else
puts "#{File.basename(__FILE__)} requires JRuby; skipping.."
end

View File

@ -0,0 +1,11 @@
require File.expand_path('../spec_helper', File.dirname(__FILE__))
describe Capybara::Driver::Culerity do
before do
@driver = Capybara::Driver::Culerity.new(TestApp)
end
it_should_behave_like "driver"
it_should_behave_like "driver with javascript support"
it_should_behave_like "driver with header support"
end

View File

@ -6,4 +6,5 @@ describe Capybara::Driver::RackTest do
end
it_should_behave_like "driver"
it_should_behave_like "driver with header support"
end

View File

@ -92,3 +92,10 @@ shared_examples_for "driver with javascript support" do
end
end
shared_examples_for "driver with header support" do
it "should make headers available through response_headers" do
@driver.visit('/with_simple_html')
@driver.response_headers['Content-Type'].should == 'text/html'
end
end