diff --git a/lib/webrat/core/session.rb b/lib/webrat/core/session.rb index 8b1c8a8..2a5ff54 100644 --- a/lib/webrat/core/session.rb +++ b/lib/webrat/core/session.rb @@ -18,14 +18,17 @@ module Webrat RailsSession when :merb MerbSession + when :rack + RackSession + when :sinatra + warn("The :sinatra mode is deprecated. Please use :rack instead") + SinatraSession when :selenium SeleniumSession when :sinatra SinatraSession when :mechanize MechanizeSession - when :rack - RackSession else raise WebratError.new(<<-STR) Unknown Webrat mode: #{Webrat.configuration.mode.inspect} diff --git a/lib/webrat/sinatra.rb b/lib/webrat/sinatra.rb index 32273a4..10cdb02 100644 --- a/lib/webrat/sinatra.rb +++ b/lib/webrat/sinatra.rb @@ -1,41 +1,11 @@ require "webrat/rack" -require "sinatra/test" module Webrat - class SinatraSession - include Sinatra::Test - + class SinatraSession < RackSession def initialize(context) app = context.respond_to?(:app) ? context.app : Sinatra::Application - @browser = Sinatra::TestHarness.new(app) + super(Rack::Test::Session.new(app)) end - - %w(get head post put delete).each do |verb| - class_eval <<-RUBY - def #{verb}(path, data, headers = {}) - params = data.inject({}) do |data, (key,value)| - data[key] = Rack::Utils.unescape(value) - data - end - headers["HTTP_HOST"] = "www.example.com" - @browser.#{verb}(path, params, headers) - end - RUBY - end - - def response_body - @browser.body - end - - def response_code - @browser.response.status - end - - private - - def response - @browser.response - end end end