diff --git a/lib/capybara/rack_test/browser.rb b/lib/capybara/rack_test/browser.rb index d31605e3..34daacd7 100644 --- a/lib/capybara/rack_test/browser.rb +++ b/lib/capybara/rack_test/browser.rb @@ -1,12 +1,19 @@ class Capybara::RackTest::Browser include ::Rack::Test::Methods - attr_reader :app, :options + attr_reader :driver attr_accessor :current_host - def initialize(app, options={}) - @app = app - @options = options + def initialize(driver) + @driver = driver + end + + def app + driver.app + end + + def options + driver.options end def visit(path, attributes = {}) diff --git a/lib/capybara/rack_test/driver.rb b/lib/capybara/rack_test/driver.rb index da1be1b4..e2dcfcd6 100644 --- a/lib/capybara/rack_test/driver.rb +++ b/lib/capybara/rack_test/driver.rb @@ -14,7 +14,7 @@ class Capybara::RackTest::Driver < Capybara::Driver::Base end def browser - @browser ||= Capybara::RackTest::Browser.new(app, options) + @browser ||= Capybara::RackTest::Browser.new(self) end def response diff --git a/lib/capybara/rack_test/node.rb b/lib/capybara/rack_test/node.rb index 3dd3e33a..9f71334a 100644 --- a/lib/capybara/rack_test/node.rb +++ b/lib/capybara/rack_test/node.rb @@ -51,7 +51,8 @@ class Capybara::RackTest::Node < Capybara::Driver::Node def click if tag_name == 'a' - method = self["data-method"] || :get + method = self["data-method"] if driver.options[:respect_data_method] + method ||= :get driver.follow(method, self[:href].to_s) elsif (tag_name == 'input' and %w(submit image).include?(type)) or ((tag_name == 'button') and type.nil? or type == "submit") diff --git a/lib/capybara/spec/test_app.rb b/lib/capybara/spec/test_app.rb index 7a58cb37..3240f280 100644 --- a/lib/capybara/spec/test_app.rb +++ b/lib/capybara/spec/test_app.rb @@ -63,6 +63,10 @@ class TestApp < Sinatra::Base "The requested object was deleted" end + get "/delete" do + "Not deleted" + end + get '/redirect_back' do redirect back end diff --git a/spec/session/rack_test_session_spec.rb b/spec/session/rack_test_session_spec.rb index b1fba8d5..4c1863b0 100644 --- a/spec/session/rack_test_session_spec.rb +++ b/spec/session/rack_test_session_spec.rb @@ -20,10 +20,22 @@ describe Capybara::Session do describe '#click_link' do it "should use data-method if available" do + @session.driver.options[:respect_data_method] = true @session.visit "/with_html" @session.click_link "A link with data-method" @session.body.should include('The requested object was deleted') end + + it "should not use data-method if option is false" do + @session.driver.options[:respect_data_method] = false + @session.visit "/with_html" + @session.click_link "A link with data-method" + @session.body.should include('Not deleted') + end + + after do + @session.driver.options[:respect_data_method] = true + end end describe "#attach_file" do