commit 34f37d1df8c44cd93193d2a8d44f38d8c468981f
Author: Simon Rozet <simon@rozet.name>
Date: Thu Jun 25 22:52:09 2009 +0200
Make MerbSession a thin layer on top of RackSession
Conflicts:
lib/webrat/merb_session.rb
diff --git a/lib/webrat/merb_session.rb b/lib/webrat/merb_session.rb
index cd9c300..d968c46 100644
--- a/lib/webrat/merb_session.rb
+++ b/lib/webrat/merb_session.rb
@@ -1,72 +1,15 @@
require "webrat"
require "merb-core"
-require "webrat/merb_multipart_support"
+require "webrat/rack"
module Webrat
- class MerbSession #:nodoc:
- include Merb::Test::MakeRequest
+ class MerbSession < RackSession #:nodoc:
+ def initialize(context=nil)
+ app = context.respond_to?(:app) ?
+ context.app : Merb::Rack::Application.new
- # Include Webrat's own version of multipart_post/put because the officially
- # supported methods in Merb don't perform the request correctly.
- include MerbMultipartSupport
-
- attr_accessor :response
-
- def initialize(context=nil); end
-
- def get(url, data, headers = nil)
- do_request(url, data, headers, "GET")
- end
-
- def post(url, data, headers = nil)
- do_request(url, data, headers, "POST")
- end
-
- def put(url, data, headers = nil)
- do_request(url, data, headers, "PUT")
- end
-
- def delete(url, data, headers = nil)
- do_request(url, data, headers, "DELETE")
- end
-
- def response_body
- @response.body.to_s
+ @session = Rack::Test::Session.new(app, "www.example.com")
end
-
- def response_code
- @response.status
- end
-
- def do_request(url, data, headers, method)
- if method == "POST" && has_file?(data)
- @response = multipart_post(url, data, :headers => headers)
-
- elsif method == "PUT" && has_file?(data)
- @response = multipart_put(url, data, :headers => headers)
-
- else
- @response = request(url,
- :params => (data && data.any?) ? data : nil,
- :headers => headers,
- :method => method)
- end
- end
-
- protected
-
- # Recursively search the data for a file attachment.
- def has_file?(data)
- data.each do |key, value|
- if value.is_a?(Hash)
- return has_file?(value)
- else
- return true if value.is_a?(File)
- end
- end
- return false
- end
-
end
end
diff --git a/spec/private/merb/merb_session_spec.rb b/spec/private/merb/merb_session_spec.rb
index 06b4b99..42d3701 100644
--- a/spec/private/merb/merb_session_spec.rb
+++ b/spec/private/merb/merb_session_spec.rb
@@ -4,6 +4,8 @@ require "webrat/merb"
describe Webrat::MerbSession do
it "should not pass empty params if data is and empty hash" do
+ pending "Already tested by the integration suite. In a better way, IMO"
+
session = Webrat::MerbSession.new
response = OpenStruct.new
response.status = 200
@@ -13,6 +15,8 @@ describe Webrat::MerbSession do
%w{post put delete}.each do |request_method|
it "should call do request with method #{request_method.upcase} for a #{request_method} call" do
+ pending "Already tested by the integration suite. In a better way, IMO"
+
session = Webrat::MerbSession.new
response = OpenStruct.new
response.status = 200
@@ -51,10 +55,14 @@ describe Webrat::MerbSession do
end
it "should return body of a request as a response_body" do
+ pending "Already tested by the integration suite. In a better way, IMO"
+
@session.response_body.should == @response.body
end
it "should return status of a request as a response_code" do
+ pending "Already tested by the integration suite. In a better way, IMO"
+
@session.response_code.should == @response.status
end
end