From ef0176f1879ff14b9a8bfb7b481a6e7ff2f4f37f Mon Sep 17 00:00:00 2001 From: Rob Kaufman Date: Wed, 22 Oct 2008 10:29:32 -0700 Subject: [PATCH 1/2] Added code improvements to request handling for merb --- Manifest.txt | 20 +++++++++++++++++--- lib/webrat/merb.rb | 21 ++++++++++++++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Manifest.txt b/Manifest.txt index 4e749b6..403dc61 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -20,15 +20,27 @@ lib/webrat/core/select_option.rb lib/webrat/core/session.rb lib/webrat/mechanize.rb lib/webrat/mechanize/mechanize_session.rb +lib/webrat/merb.rb +lib/webrat/merb/indifferent_access.rb +lib/webrat/merb/param_parser.rb +lib/webrat/merb/support.rb +lib/webrat/merb/url_encoded_pair_parser.rb +lib/webrat/rack/rack_session.rb lib/webrat/rails.rb lib/webrat/rails/rails_session.rb lib/webrat/rails/redirect_actions.rb lib/webrat/rails/session.rb lib/webrat/selenium.rb lib/webrat/selenium/selenium_session.rb -mechanize_spike.rb -selenium_spike.rb +lib/webrat/selenium/location_strategy_javascript/button.js +lib/webrat/selenium/location_strategy_javascript/label.js +lib/webrat/selenium/location_strategy_javascript/webrat.js +lib/webrat/selenium/location_strategy_javascript/webratlink.js +lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +lib/webrat/sinatra/sinatra_session.rb spec/api/attaches_file_spec.rb +spec/api/basic_auth_spec.rb spec/api/checks_spec.rb spec/api/chooses_spec.rb spec/api/clicks_button_spec.rb @@ -49,4 +61,6 @@ spec/spec_helper.rb spec/webrat/core/logging_spec.rb spec/webrat/core/session_spec.rb spec/webrat/rails/rails_session_spec.rb -webrat.gemspec +spec/webrat/merb/helper.rb +spec/webrat/rails/helper.rb +webrat.gemspec \ No newline at end of file diff --git a/lib/webrat/merb.rb b/lib/webrat/merb.rb index 992c0ba..c0823f9 100644 --- a/lib/webrat/merb.rb +++ b/lib/webrat/merb.rb @@ -1,5 +1,5 @@ module Webrat - class Session + class MerbSession < Session include Merb::Test::RequestHelper attr_reader :response @@ -25,13 +25,24 @@ module Webrat end def response_code - @response.status + @response.code end protected def do_request(url, data, headers, method) - @response = request(url, :params => data, :headers => headers, :method => method) - self.get(@response.headers['Location'], nil, @response.headers) if @response.status == 302 + all = (headers || {}) + all[:method] = method unless all[:method] || all["REQUEST_METHOD"] + + unless data.empty? + if verb == "post" + all[:body_params] = data + elsif verb == "get" + all[:params] = data + end + end + + @response = request(url, all) + @response = self.get(@response.headers['Location'], nil, @response.headers) if @response.status == 302 end end @@ -39,7 +50,7 @@ end class Merb::Test::RspecStory def browser - @browser ||= Webrat::Session.new + @browser ||= Webrat::MerbSession.new end end From 190fe0b73fb13318101a62837af7ada27c2ec51d Mon Sep 17 00:00:00 2001 From: Rob Kaufman Date: Wed, 22 Oct 2008 10:30:39 -0700 Subject: [PATCH 2/2] Added code improvements to request handling for merb, thanks to David Leal --- Manifest.txt | 20 +++----------------- lib/webrat/merb.rb | 21 +++++---------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/Manifest.txt b/Manifest.txt index 403dc61..4e749b6 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -20,27 +20,15 @@ lib/webrat/core/select_option.rb lib/webrat/core/session.rb lib/webrat/mechanize.rb lib/webrat/mechanize/mechanize_session.rb -lib/webrat/merb.rb -lib/webrat/merb/indifferent_access.rb -lib/webrat/merb/param_parser.rb -lib/webrat/merb/support.rb -lib/webrat/merb/url_encoded_pair_parser.rb -lib/webrat/rack/rack_session.rb lib/webrat/rails.rb lib/webrat/rails/rails_session.rb lib/webrat/rails/redirect_actions.rb lib/webrat/rails/session.rb lib/webrat/selenium.rb lib/webrat/selenium/selenium_session.rb -lib/webrat/selenium/location_strategy_javascript/button.js -lib/webrat/selenium/location_strategy_javascript/label.js -lib/webrat/selenium/location_strategy_javascript/webrat.js -lib/webrat/selenium/location_strategy_javascript/webratlink.js -lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js -lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js -lib/webrat/sinatra/sinatra_session.rb +mechanize_spike.rb +selenium_spike.rb spec/api/attaches_file_spec.rb -spec/api/basic_auth_spec.rb spec/api/checks_spec.rb spec/api/chooses_spec.rb spec/api/clicks_button_spec.rb @@ -61,6 +49,4 @@ spec/spec_helper.rb spec/webrat/core/logging_spec.rb spec/webrat/core/session_spec.rb spec/webrat/rails/rails_session_spec.rb -spec/webrat/merb/helper.rb -spec/webrat/rails/helper.rb -webrat.gemspec \ No newline at end of file +webrat.gemspec diff --git a/lib/webrat/merb.rb b/lib/webrat/merb.rb index c0823f9..992c0ba 100644 --- a/lib/webrat/merb.rb +++ b/lib/webrat/merb.rb @@ -1,5 +1,5 @@ module Webrat - class MerbSession < Session + class Session include Merb::Test::RequestHelper attr_reader :response @@ -25,24 +25,13 @@ module Webrat end def response_code - @response.code + @response.status end protected def do_request(url, data, headers, method) - all = (headers || {}) - all[:method] = method unless all[:method] || all["REQUEST_METHOD"] - - unless data.empty? - if verb == "post" - all[:body_params] = data - elsif verb == "get" - all[:params] = data - end - end - - @response = request(url, all) - @response = self.get(@response.headers['Location'], nil, @response.headers) if @response.status == 302 + @response = request(url, :params => data, :headers => headers, :method => method) + self.get(@response.headers['Location'], nil, @response.headers) if @response.status == 302 end end @@ -50,7 +39,7 @@ end class Merb::Test::RspecStory def browser - @browser ||= Webrat::MerbSession.new + @browser ||= Webrat::Session.new end end