webrat 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +11 -0
- data/Rakefile +18 -2
- data/VERSION +1 -1
- data/lib/webrat.rb +1 -0
- data/lib/webrat/core/configuration.rb +1 -1
- data/lib/webrat/core/elements/field.rb +2 -0
- data/lib/webrat/core/methods.rb +5 -5
- data/lib/webrat/core/mime.rb +11 -22
- data/lib/webrat/core/session.rb +19 -13
- data/lib/webrat/mechanize.rb +5 -1
- data/lib/webrat/{merb_session.rb → merb_adapter.rb} +2 -2
- data/lib/webrat/rack.rb +1 -1
- data/lib/webrat/rails.rb +1 -1
- data/lib/webrat/sinatra.rb +1 -1
- data/spec/fakes/{test_session.rb → test_adapter.rb} +6 -3
- data/spec/integration/mechanize/Rakefile +7 -0
- data/spec/integration/mechanize/config.ru +2 -0
- data/spec/integration/mechanize/sample_app.rb +20 -0
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -0
- data/spec/integration/mechanize/spec/spec_helper.rb +27 -0
- data/spec/integration/merb/spec/spec_helper.rb +2 -0
- data/spec/integration/rack/app.rb +16 -0
- data/spec/integration/rack/test/helper.rb +2 -1
- data/spec/integration/rack/test/webrat_rack_test.rb +12 -1
- data/spec/integration/rails/test/test_helper.rb +2 -1
- data/spec/integration/sinatra/test/test_helper.rb +2 -1
- data/spec/private/core/configuration_spec.rb +2 -2
- data/spec/private/core/link_spec.rb +1 -1
- data/spec/private/core/session_spec.rb +5 -0
- data/spec/private/mechanize/{mechanize_session_spec.rb → mechanize_adapter_spec.rb} +4 -10
- data/spec/private/merb/{merb_session_spec.rb → merb_adapter_spec.rb} +5 -5
- data/spec/private/rails/{rails_session_spec.rb → rails_adapter_spec.rb} +14 -14
- data/spec/spec_helper.rb +1 -1
- data/webrat.gemspec +28 -11
- metadata +36 -12
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== 0.5.1 / 2009-08-18
|
2
|
+
|
3
|
+
* Minor enhancements
|
4
|
+
|
5
|
+
* Base Webrat::MIME on Rack::Mime (Simon Rozet)
|
6
|
+
* Support file uploads in Rack mode (Simon Rozet)
|
7
|
+
|
8
|
+
* Bug fixes
|
9
|
+
|
10
|
+
* Fix bug in Webrat::Methods preventing Selenium mode from working [#277]
|
11
|
+
|
1
12
|
== 0.5.0 / 2009-08-12
|
2
13
|
|
3
14
|
* Major enhancements
|
data/Rakefile
CHANGED
@@ -7,13 +7,21 @@ begin
|
|
7
7
|
s.email = "bryan" + "@" + "brynary.com"
|
8
8
|
s.homepage = "http://github.com/brynary/webrat"
|
9
9
|
s.summary = "Ruby Acceptance Testing for Web applications"
|
10
|
-
|
10
|
+
s.description = <<-EOS.strip
|
11
|
+
Webrat lets you quickly write expressive and robust acceptance tests
|
12
|
+
for a Ruby web application. It supports simulating a browser inside
|
13
|
+
a Ruby process to avoid the performance hit and browser dependency of
|
14
|
+
Selenium or Watir, but the same API can also be used to drive real
|
15
|
+
Selenium tests when necessary (eg. for testing AJAX interactions).
|
16
|
+
Most Ruby web frameworks and testing frameworks are supported.
|
17
|
+
EOS
|
11
18
|
|
12
19
|
s.rubyforge_project = "webrat"
|
13
20
|
s.extra_rdoc_files = %w[README.rdoc MIT-LICENSE.txt History.txt]
|
14
21
|
|
15
22
|
# Dependencies
|
16
23
|
s.add_dependency "nokogiri", ">= 1.2.0"
|
24
|
+
s.add_dependency "rack", ">= 1.0"
|
17
25
|
|
18
26
|
# TODO: Add development dependencies
|
19
27
|
end
|
@@ -105,7 +113,7 @@ end
|
|
105
113
|
|
106
114
|
namespace :spec do
|
107
115
|
desc "Run the integration specs"
|
108
|
-
task :integration => ["integration:rails", "integration:merb", "integration:sinatra", "integration:rack"]
|
116
|
+
task :integration => ["integration:rails", "integration:merb", "integration:sinatra", "integration:rack", "integration:mechanize"]
|
109
117
|
|
110
118
|
namespace :integration do
|
111
119
|
desc "Run the Rails integration specs"
|
@@ -150,6 +158,14 @@ namespace :spec do
|
|
150
158
|
raise "Rack integration tests failed" unless result
|
151
159
|
end
|
152
160
|
end
|
161
|
+
|
162
|
+
desc "Run the Mechanize integration specs"
|
163
|
+
task :mechanize do
|
164
|
+
Dir.chdir "spec/integration/mechanize" do
|
165
|
+
result = system "rake spec"
|
166
|
+
raise "Mechanize integration tests failed" unless result
|
167
|
+
end
|
168
|
+
end
|
153
169
|
end
|
154
170
|
end
|
155
171
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/webrat.rb
CHANGED
data/lib/webrat/core/methods.rb
CHANGED
@@ -16,11 +16,11 @@ module Webrat
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def webrat_session
|
19
|
-
@_webrat_session ||=
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
@_webrat_session ||= begin
|
20
|
+
session = Webrat.session_class.new
|
21
|
+
session.adapter = Webrat.adapter_class.new(self) if session.respond_to?(:adapter=)
|
22
|
+
session
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
26
|
# all of these methods delegate to the @session, which should
|
data/lib/webrat/core/mime.rb
CHANGED
@@ -1,29 +1,18 @@
|
|
1
1
|
module Webrat #:nodoc:
|
2
2
|
module MIME #:nodoc:
|
3
|
+
MIME_TYPES = Rack::Mime::MIME_TYPES.dup.merge(
|
4
|
+
".multipart_form" => "multipart/form-data",
|
5
|
+
".url_encoded_form" => "application/x-www-form-urlencoded"
|
6
|
+
).freeze
|
3
7
|
|
4
|
-
def
|
5
|
-
if
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
when :html then "text/html"
|
11
|
-
when :js then "text/javascript"
|
12
|
-
when :css then "text/css"
|
13
|
-
when :ics then "text/calendar"
|
14
|
-
when :csv then "text/csv"
|
15
|
-
when :xml then "application/xml"
|
16
|
-
when :rss then "application/rss+xml"
|
17
|
-
when :atom then "application/atom+xml"
|
18
|
-
when :yaml then "application/x-yaml"
|
19
|
-
when :multipart_form then "multipart/form-data"
|
20
|
-
when :url_encoded_form then "application/x-www-form-urlencoded"
|
21
|
-
when :json then "application/json"
|
22
|
-
else
|
23
|
-
raise ArgumentError.new("Invalid Mime type: #{string_or_symbol.inspect}")
|
24
|
-
end
|
25
|
-
end
|
8
|
+
def mime_type(type)
|
9
|
+
return type if type.nil? || type.to_s.include?("/")
|
10
|
+
type = ".#{type}" unless type.to_s[0] == ?.
|
11
|
+
MIME_TYPES.fetch(type) { |type|
|
12
|
+
raise ArgumentError.new("Invalid Mime type: #{type}")
|
13
|
+
}
|
26
14
|
end
|
27
15
|
|
16
|
+
module_function :mime_type
|
28
17
|
end
|
29
18
|
end
|
data/lib/webrat/core/session.rb
CHANGED
@@ -13,26 +13,30 @@ module Webrat
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.session_class
|
16
|
+
if Webrat.configuration.mode == :selenium
|
17
|
+
SeleniumSession
|
18
|
+
else
|
19
|
+
Session
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.adapter_class
|
16
24
|
case Webrat.configuration.mode
|
17
25
|
when :rails
|
18
|
-
|
26
|
+
RailsAdapter
|
19
27
|
when :merb
|
20
|
-
|
28
|
+
MerbAdapter
|
21
29
|
when :rack
|
22
|
-
|
30
|
+
RackAdapter
|
23
31
|
when :rack_test
|
24
32
|
warn("The :rack_test mode is deprecated. Please use :rack instead")
|
25
33
|
require "webrat/rack"
|
26
|
-
|
34
|
+
RackAdapter
|
27
35
|
when :sinatra
|
28
36
|
warn("The :sinatra mode is deprecated. Please use :rack instead")
|
29
|
-
|
30
|
-
when :selenium
|
31
|
-
SeleniumSession
|
32
|
-
when :sinatra
|
33
|
-
SinatraSession
|
37
|
+
SinatraAdapter
|
34
38
|
when :mechanize
|
35
|
-
|
39
|
+
MechanizeAdapter
|
36
40
|
else
|
37
41
|
raise WebratError.new(<<-STR)
|
38
42
|
Unknown Webrat mode: #{Webrat.configuration.mode.inspect}
|
@@ -55,6 +59,9 @@ For example:
|
|
55
59
|
extend Forwardable
|
56
60
|
include Logging
|
57
61
|
include SaveAndOpenPage
|
62
|
+
|
63
|
+
attr_accessor :adapter
|
64
|
+
|
58
65
|
attr_reader :current_url
|
59
66
|
attr_reader :elements
|
60
67
|
|
@@ -62,13 +69,12 @@ For example:
|
|
62
69
|
:response_body=, :response_code=,
|
63
70
|
:get, :post, :put, :delete
|
64
71
|
|
65
|
-
def initialize(adapter=nil)
|
72
|
+
def initialize(adapter = nil)
|
73
|
+
@adapter = adapter
|
66
74
|
@http_method = :get
|
67
75
|
@data = {}
|
68
76
|
@default_headers = {}
|
69
77
|
@custom_headers = {}
|
70
|
-
@adapter = adapter
|
71
|
-
|
72
78
|
reset
|
73
79
|
end
|
74
80
|
|
data/lib/webrat/mechanize.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
require "mechanize"
|
2
2
|
|
3
3
|
module Webrat #:nodoc:
|
4
|
-
class
|
4
|
+
class MechanizeAdapter #:nodoc:
|
5
|
+
extend Forwardable
|
5
6
|
|
6
7
|
attr_accessor :response
|
7
8
|
alias :page :response
|
8
9
|
|
10
|
+
def initialize(*args)
|
11
|
+
end
|
12
|
+
|
9
13
|
def request_page(url, http_method, data) #:nodoc:
|
10
14
|
super(absolute_url(url), http_method, data)
|
11
15
|
end
|
@@ -3,7 +3,7 @@ require "merb-core"
|
|
3
3
|
require "webrat/merb_multipart_support"
|
4
4
|
|
5
5
|
module Webrat
|
6
|
-
class
|
6
|
+
class MerbAdapter #:nodoc:
|
7
7
|
include Merb::Test::MakeRequest
|
8
8
|
|
9
9
|
# Include Webrat's own version of multipart_post/put because the officially
|
@@ -74,7 +74,7 @@ module Merb #:nodoc:
|
|
74
74
|
module Test #:nodoc:
|
75
75
|
module RequestHelper #:nodoc:
|
76
76
|
def request(uri, env = {})
|
77
|
-
@_webrat_session ||= Webrat::
|
77
|
+
@_webrat_session ||= Webrat::MerbAdapter.new
|
78
78
|
@_webrat_session.response = @_webrat_session.request(uri, env)
|
79
79
|
end
|
80
80
|
end
|
data/lib/webrat/rack.rb
CHANGED
data/lib/webrat/rails.rb
CHANGED
data/lib/webrat/sinatra.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
module Webrat #:nodoc:
|
2
|
-
def self.
|
3
|
-
|
2
|
+
def self.adapter_class #:nodoc:
|
3
|
+
TestAdapter
|
4
4
|
end
|
5
5
|
|
6
|
-
class
|
6
|
+
class TestAdapter #:nodoc:
|
7
7
|
attr_accessor :response_body
|
8
8
|
attr_writer :response_code
|
9
9
|
|
10
|
+
def initialize(*args)
|
11
|
+
end
|
12
|
+
|
10
13
|
def doc_root
|
11
14
|
File.expand_path(File.join(".", "public"))
|
12
15
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "sinatra/base"
|
3
|
+
|
4
|
+
class SampleApp < Sinatra::Default
|
5
|
+
get "/" do
|
6
|
+
"Hello World"
|
7
|
+
end
|
8
|
+
|
9
|
+
get "/internal_redirect" do
|
10
|
+
redirect URI.join(request.url, "redirected").to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
get "/external_redirect" do
|
14
|
+
redirect "http://example.tst/"
|
15
|
+
end
|
16
|
+
|
17
|
+
get "/redirected" do
|
18
|
+
"Redirected"
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe "Webrat's Mechanize mode" do
|
4
|
+
it "should work" do
|
5
|
+
response = visit("http://localhost:9292/")
|
6
|
+
response.should contain("Hello World")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should follow redirects" do
|
10
|
+
response = visit("http://localhost:9292/internal_redirect")
|
11
|
+
response.should contain("Redirected")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should follow links"
|
15
|
+
it "should submit forms"
|
16
|
+
it "should not follow external redirects" do
|
17
|
+
pending do
|
18
|
+
response = visit("http://localhost:9292/external_redirect")
|
19
|
+
response.should contain("Foo")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "spec"
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
5
|
+
require "webrat"
|
6
|
+
|
7
|
+
Webrat.configure do |config|
|
8
|
+
config.mode = :mechanize
|
9
|
+
end
|
10
|
+
|
11
|
+
Spec::Runner.configure do |config|
|
12
|
+
config.include Webrat::Methods
|
13
|
+
config.include Webrat::Matchers
|
14
|
+
|
15
|
+
config.before :suite do
|
16
|
+
if File.exists?("rack.pid")
|
17
|
+
Process.kill("TERM", File.read("rack.pid").to_i)
|
18
|
+
end
|
19
|
+
|
20
|
+
system "rackup --daemonize --pid rack.pid config.ru"
|
21
|
+
end
|
22
|
+
|
23
|
+
config.after :suite do
|
24
|
+
Process.kill("TERM", File.read("rack.pid").to_i)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
|
3
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
4
|
+
|
3
5
|
# Add the local gems dir if found within the app root; any dependencies loaded
|
4
6
|
# hereafter will try to load from the local gems before loading system gems.
|
5
7
|
if (local_gem_dir = File.join(File.dirname(__FILE__), '..', 'gems')) && $BUNDLE.nil?
|
@@ -33,6 +33,14 @@ class RackApp < Sinatra::Base
|
|
33
33
|
@email = params[:email]
|
34
34
|
erb :hello
|
35
35
|
end
|
36
|
+
|
37
|
+
get "/upload" do
|
38
|
+
erb :uploader
|
39
|
+
end
|
40
|
+
|
41
|
+
post "/upload" do
|
42
|
+
params[:uploaded_file].to_yaml
|
43
|
+
end
|
36
44
|
end
|
37
45
|
|
38
46
|
__END__
|
@@ -71,3 +79,11 @@ __END__
|
|
71
79
|
@@ hello
|
72
80
|
<p>Hello, <%= @user %></p>
|
73
81
|
<p>Your email is: <%= @email %></p>
|
82
|
+
|
83
|
+
@@ uploader
|
84
|
+
<form action="/upload" method="post">
|
85
|
+
<label>
|
86
|
+
File <input type="file" name="uploaded_file" />
|
87
|
+
</label>
|
88
|
+
<input type="submit" value="Upload">
|
89
|
+
</form>
|
@@ -3,7 +3,8 @@ require "test/unit"
|
|
3
3
|
require "rack/test"
|
4
4
|
# require "redgreen"
|
5
5
|
|
6
|
-
|
6
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
7
|
+
require "webrat"
|
7
8
|
require File.dirname(__FILE__) + "/../app"
|
8
9
|
|
9
10
|
Webrat.configure do |config|
|
@@ -46,12 +46,23 @@ class WebratRackTest < Test::Unit::TestCase
|
|
46
46
|
visit "/absolute_redirect"
|
47
47
|
assert_contain "spam"
|
48
48
|
end
|
49
|
+
|
50
|
+
def test_upload_file
|
51
|
+
visit "/upload"
|
52
|
+
attach_file "File", __FILE__, "text/ruby"
|
53
|
+
click_button "Upload"
|
54
|
+
|
55
|
+
upload = YAML.load(response_body)
|
56
|
+
assert_equal "text/ruby", upload[:type]
|
57
|
+
assert_equal "webrat_rack_test.rb", upload[:filename]
|
58
|
+
assert upload[:tempfile].respond_to?(:read)
|
59
|
+
end
|
49
60
|
end
|
50
61
|
|
51
62
|
class WebratRackSetupTest < Test::Unit::TestCase
|
52
63
|
def test_usable_without_mixin
|
53
64
|
rack_test_session = Rack::Test::Session.new(Rack::MockSession.new(app))
|
54
|
-
adapter = Webrat::
|
65
|
+
adapter = Webrat::RackAdapter.new(rack_test_session)
|
55
66
|
session = Webrat::Session.new(adapter)
|
56
67
|
|
57
68
|
session.visit "/foo"
|
@@ -7,7 +7,8 @@ require 'test_help'
|
|
7
7
|
# rescue MissingSourceFile
|
8
8
|
# end
|
9
9
|
|
10
|
-
|
10
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
11
|
+
require "webrat"
|
11
12
|
|
12
13
|
Webrat.configure do |config|
|
13
14
|
config.mode = ENV['WEBRAT_INTEGRATION_MODE'].to_sym
|
@@ -2,7 +2,8 @@ require "rubygems"
|
|
2
2
|
require "test/unit"
|
3
3
|
# require "redgreen"
|
4
4
|
|
5
|
-
|
5
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
6
|
+
require "webrat"
|
6
7
|
|
7
8
|
Webrat.configure do |config|
|
8
9
|
config.mode = :sinatra
|
@@ -68,9 +68,9 @@ describe Webrat::Configuration do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
it "should require
|
71
|
+
it "should require merb_adapter when in merb mode" do
|
72
72
|
config = Webrat::Configuration.new
|
73
|
-
config.should_receive(:require).with("webrat/
|
73
|
+
config.should_receive(:require).with("webrat/merb_adapter")
|
74
74
|
config.mode = :merb
|
75
75
|
end
|
76
76
|
|
@@ -62,6 +62,11 @@ describe Webrat::Session do
|
|
62
62
|
it "should raise an error if a symbol Mime type is passed that does not exist" do
|
63
63
|
lambda { webrat_session.http_accept(:oogabooga) }.should raise_error(ArgumentError)
|
64
64
|
end
|
65
|
+
|
66
|
+
it "should recognize a couple of webrat-specific formats" do
|
67
|
+
webrat_session.http_accept(:multipart_form).should == "multipart/form-data"
|
68
|
+
webrat_session.http_accept(:url_encoded_form).should == "application/x-www-form-urlencoded"
|
69
|
+
end
|
65
70
|
end
|
66
71
|
|
67
72
|
describe "#request_page" do
|
@@ -2,19 +2,13 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
2
|
|
3
3
|
require "webrat/mechanize"
|
4
4
|
|
5
|
-
describe Webrat::
|
5
|
+
describe Webrat::MechanizeAdapter do
|
6
6
|
before :each do
|
7
7
|
Webrat.configuration.mode = :mechanize
|
8
8
|
end
|
9
9
|
|
10
10
|
before(:each) do
|
11
|
-
@mech = Webrat::
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "headers method" do
|
15
|
-
it "should return empty headers for a newly initialized session" do
|
16
|
-
@mech.headers.should == {}
|
17
|
-
end
|
11
|
+
@mech = Webrat::MechanizeAdapter.new
|
18
12
|
end
|
19
13
|
|
20
14
|
describe "post" do
|
@@ -34,13 +28,13 @@ describe Webrat::MechanizeSession do
|
|
34
28
|
mechanize = mock(:mechanize)
|
35
29
|
WWW::Mechanize.stub!(:new => mechanize)
|
36
30
|
mechanize.should_receive(:post).with(url, flattened_data)
|
37
|
-
Webrat::
|
31
|
+
Webrat::MechanizeAdapter.new.post(url, data)
|
38
32
|
end
|
39
33
|
end
|
40
34
|
|
41
35
|
describe "#absolute_url" do
|
42
36
|
before(:each) do
|
43
|
-
@session = Webrat::
|
37
|
+
@session = Webrat::MechanizeAdapter.new
|
44
38
|
@session.stub!(:current_url).and_return(absolute_url)
|
45
39
|
end
|
46
40
|
|
@@ -2,9 +2,9 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
2
2
|
|
3
3
|
require "webrat/merb"
|
4
4
|
|
5
|
-
describe Webrat::
|
5
|
+
describe Webrat::MerbAdapter do
|
6
6
|
it "should not pass empty params if data is and empty hash" do
|
7
|
-
session = Webrat::
|
7
|
+
session = Webrat::MerbAdapter.new
|
8
8
|
response = OpenStruct.new
|
9
9
|
response.status = 200
|
10
10
|
session.should_receive(:request).with('url', {:params=> nil, :method=>"GET", :headers=>nil}).and_return(response)
|
@@ -13,7 +13,7 @@ describe Webrat::MerbSession do
|
|
13
13
|
|
14
14
|
%w{post put delete}.each do |request_method|
|
15
15
|
it "should call do request with method #{request_method.upcase} for a #{request_method} call" do
|
16
|
-
session = Webrat::
|
16
|
+
session = Webrat::MerbAdapter.new
|
17
17
|
response = OpenStruct.new
|
18
18
|
response.status = 200
|
19
19
|
|
@@ -24,7 +24,7 @@ describe Webrat::MerbSession do
|
|
24
24
|
|
25
25
|
%w{post put}.each do |request_method|
|
26
26
|
it "should call do request with method #{request_method.upcase} with a file attachment" do
|
27
|
-
session = Webrat::
|
27
|
+
session = Webrat::MerbAdapter.new
|
28
28
|
response = OpenStruct.new
|
29
29
|
response.status = 200
|
30
30
|
|
@@ -43,7 +43,7 @@ describe Webrat::MerbSession do
|
|
43
43
|
|
44
44
|
context "a session with a response" do
|
45
45
|
before do
|
46
|
-
@session = Webrat::
|
46
|
+
@session = Webrat::MerbAdapter.new
|
47
47
|
@response = OpenStruct.new
|
48
48
|
@response.status = 200
|
49
49
|
@response.body = 'test response'
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
2
|
|
3
3
|
require "webrat/rails"
|
4
4
|
|
5
|
-
describe Webrat::
|
5
|
+
describe Webrat::RailsAdapter do
|
6
6
|
before :each do
|
7
7
|
Webrat.configuration.mode = :rails
|
8
8
|
@integration_session = mock("integration_session")
|
@@ -10,35 +10,35 @@ describe Webrat::RailsSession do
|
|
10
10
|
|
11
11
|
it "should delegate response_body to the session response body" do
|
12
12
|
@integration_session.stub!(:response => mock("response", :body => "<html>"))
|
13
|
-
Webrat::
|
13
|
+
Webrat::RailsAdapter.new(@integration_session).response_body.should == "<html>"
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should delegate response_code to the session response code" do
|
17
17
|
@integration_session.stub!(:response => mock("response", :code => "42"))
|
18
|
-
Webrat::
|
18
|
+
Webrat::RailsAdapter.new(@integration_session).response_code.should == 42
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should delegate get to the integration session" do
|
22
22
|
@integration_session.should_receive(:get).with("url", "data", "headers")
|
23
|
-
rails_session = Webrat::
|
23
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
24
24
|
rails_session.get("url", "data", "headers")
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should delegate post to the integration session" do
|
28
28
|
@integration_session.should_receive(:post).with("url", "data", "headers")
|
29
|
-
rails_session = Webrat::
|
29
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
30
30
|
rails_session.post("url", "data", "headers")
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should delegate put to the integration session" do
|
34
34
|
@integration_session.should_receive(:put).with("url", "data", "headers")
|
35
|
-
rails_session = Webrat::
|
35
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
36
36
|
rails_session.put("url", "data", "headers")
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should delegate delete to the integration session" do
|
40
40
|
@integration_session.should_receive(:delete).with("url", "data", "headers")
|
41
|
-
rails_session = Webrat::
|
41
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
42
42
|
rails_session.delete("url", "data", "headers")
|
43
43
|
end
|
44
44
|
|
@@ -46,7 +46,7 @@ describe Webrat::RailsSession do
|
|
46
46
|
it "should pass the full url" do
|
47
47
|
@integration_session.stub!(:https!)
|
48
48
|
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
49
|
-
rails_session = Webrat::
|
49
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
50
50
|
rails_session.get("http://www.example.com/url", "data", "headers")
|
51
51
|
end
|
52
52
|
end
|
@@ -55,7 +55,7 @@ describe Webrat::RailsSession do
|
|
55
55
|
it "should call #https! with true before the request before passing along the full url" do
|
56
56
|
@integration_session.should_receive(:https!).with(true)
|
57
57
|
@integration_session.should_receive(:get).with("https://www.example.com/url", "data", "headers")
|
58
|
-
rails_session = Webrat::
|
58
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
59
59
|
rails_session.get("https://www.example.com/url", "data", "headers")
|
60
60
|
end
|
61
61
|
end
|
@@ -64,7 +64,7 @@ describe Webrat::RailsSession do
|
|
64
64
|
it "should call #https! with true before the request" do
|
65
65
|
@integration_session.stub!(:get)
|
66
66
|
@integration_session.should_receive(:https!).with(false)
|
67
|
-
rails_session = Webrat::
|
67
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
68
68
|
rails_session.get("http://www.example.com/url", "data", "headers")
|
69
69
|
end
|
70
70
|
end
|
@@ -73,17 +73,17 @@ describe Webrat::RailsSession do
|
|
73
73
|
it "should strip out the anchor" do
|
74
74
|
@integration_session.should_receive(:https!).with(false)
|
75
75
|
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
76
|
-
rails_session = Webrat::
|
76
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
77
77
|
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should provide a saved_page_dir" do
|
82
|
-
Webrat::
|
82
|
+
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:saved_page_dir)
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should provide a doc_root" do
|
86
|
-
Webrat::
|
86
|
+
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:doc_root)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should accept an ActiveRecord argument to #within and translate to a selector using dom_id" do
|
@@ -100,7 +100,7 @@ describe Webrat::RailsSession do
|
|
100
100
|
@integration_session.stub!(:response => response)
|
101
101
|
@integration_session.should_receive(:get).with("/page2", {}, nil)
|
102
102
|
|
103
|
-
rails_session = Webrat::
|
103
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
104
104
|
|
105
105
|
object = Object.new
|
106
106
|
object.stub!(:id => nil)
|
data/spec/spec_helper.rb
CHANGED
@@ -11,7 +11,7 @@ $LOAD_PATH.unshift(webrat_path) unless $LOAD_PATH.include?(webrat_path)
|
|
11
11
|
AssertionFailedError = Test::Unit::AssertionFailedError rescue MiniTest::Assertion # ruby1.9 compat
|
12
12
|
|
13
13
|
require "webrat"
|
14
|
-
require File.expand_path(File.dirname(__FILE__) + "/fakes/
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + "/fakes/test_adapter")
|
15
15
|
|
16
16
|
module Webrat
|
17
17
|
@@previous_config = nil
|
data/webrat.gemspec
CHANGED
@@ -5,11 +5,17 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{webrat}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bryan Helmkamp"]
|
12
|
-
s.date = %q{2009-08-
|
12
|
+
s.date = %q{2009-08-18}
|
13
|
+
s.description = %q{Webrat lets you quickly write expressive and robust acceptance tests
|
14
|
+
for a Ruby web application. It supports simulating a browser inside
|
15
|
+
a Ruby process to avoid the performance hit and browser dependency of
|
16
|
+
Selenium or Watir, but the same API can also be used to drive real
|
17
|
+
Selenium tests when necessary (eg. for testing AJAX interactions).
|
18
|
+
Most Ruby web frameworks and testing frameworks are supported.}
|
13
19
|
s.email = %q{bryan@brynary.com}
|
14
20
|
s.extra_rdoc_files = [
|
15
21
|
"History.txt",
|
@@ -70,8 +76,8 @@ Gem::Specification.new do |s|
|
|
70
76
|
"lib/webrat/core_extensions/tcp_socket.rb",
|
71
77
|
"lib/webrat/mechanize.rb",
|
72
78
|
"lib/webrat/merb.rb",
|
79
|
+
"lib/webrat/merb_adapter.rb",
|
73
80
|
"lib/webrat/merb_multipart_support.rb",
|
74
|
-
"lib/webrat/merb_session.rb",
|
75
81
|
"lib/webrat/rack.rb",
|
76
82
|
"lib/webrat/rails.rb",
|
77
83
|
"lib/webrat/rspec-rails.rb",
|
@@ -99,7 +105,12 @@ Gem::Specification.new do |s|
|
|
99
105
|
"lib/webrat/selenium/selenium_session.rb",
|
100
106
|
"lib/webrat/selenium/silence_stream.rb",
|
101
107
|
"lib/webrat/sinatra.rb",
|
102
|
-
"spec/fakes/
|
108
|
+
"spec/fakes/test_adapter.rb",
|
109
|
+
"spec/integration/mechanize/Rakefile",
|
110
|
+
"spec/integration/mechanize/config.ru",
|
111
|
+
"spec/integration/mechanize/sample_app.rb",
|
112
|
+
"spec/integration/mechanize/spec/mechanize_spec.rb",
|
113
|
+
"spec/integration/mechanize/spec/spec_helper.rb",
|
103
114
|
"spec/integration/merb/.gitignore",
|
104
115
|
"spec/integration/merb/Rakefile",
|
105
116
|
"spec/integration/merb/app/controllers/application.rb",
|
@@ -188,12 +199,12 @@ Gem::Specification.new do |s|
|
|
188
199
|
"spec/private/core/link_spec.rb",
|
189
200
|
"spec/private/core/logging_spec.rb",
|
190
201
|
"spec/private/core/session_spec.rb",
|
191
|
-
"spec/private/mechanize/
|
202
|
+
"spec/private/mechanize/mechanize_adapter_spec.rb",
|
192
203
|
"spec/private/merb/attaches_file_spec.rb",
|
193
|
-
"spec/private/merb/
|
204
|
+
"spec/private/merb/merb_adapter_spec.rb",
|
194
205
|
"spec/private/nokogiri_spec.rb",
|
195
206
|
"spec/private/rails/attaches_file_spec.rb",
|
196
|
-
"spec/private/rails/
|
207
|
+
"spec/private/rails/rails_adapter_spec.rb",
|
197
208
|
"spec/private/selenium/application_servers/rails_spec.rb",
|
198
209
|
"spec/public/basic_auth_spec.rb",
|
199
210
|
"spec/public/check_spec.rb",
|
@@ -235,7 +246,10 @@ Gem::Specification.new do |s|
|
|
235
246
|
s.rubygems_version = %q{1.3.4}
|
236
247
|
s.summary = %q{Ruby Acceptance Testing for Web applications}
|
237
248
|
s.test_files = [
|
238
|
-
"spec/fakes/
|
249
|
+
"spec/fakes/test_adapter.rb",
|
250
|
+
"spec/integration/mechanize/sample_app.rb",
|
251
|
+
"spec/integration/mechanize/spec/mechanize_spec.rb",
|
252
|
+
"spec/integration/mechanize/spec/spec_helper.rb",
|
239
253
|
"spec/integration/merb/app/controllers/application.rb",
|
240
254
|
"spec/integration/merb/app/controllers/exceptions.rb",
|
241
255
|
"spec/integration/merb/app/controllers/testing.rb",
|
@@ -287,12 +301,12 @@ Gem::Specification.new do |s|
|
|
287
301
|
"spec/private/core/link_spec.rb",
|
288
302
|
"spec/private/core/logging_spec.rb",
|
289
303
|
"spec/private/core/session_spec.rb",
|
290
|
-
"spec/private/mechanize/
|
304
|
+
"spec/private/mechanize/mechanize_adapter_spec.rb",
|
291
305
|
"spec/private/merb/attaches_file_spec.rb",
|
292
|
-
"spec/private/merb/
|
306
|
+
"spec/private/merb/merb_adapter_spec.rb",
|
293
307
|
"spec/private/nokogiri_spec.rb",
|
294
308
|
"spec/private/rails/attaches_file_spec.rb",
|
295
|
-
"spec/private/rails/
|
309
|
+
"spec/private/rails/rails_adapter_spec.rb",
|
296
310
|
"spec/private/selenium/application_servers/rails_spec.rb",
|
297
311
|
"spec/public/basic_auth_spec.rb",
|
298
312
|
"spec/public/check_spec.rb",
|
@@ -330,10 +344,13 @@ Gem::Specification.new do |s|
|
|
330
344
|
|
331
345
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
332
346
|
s.add_runtime_dependency(%q<nokogiri>, [">= 1.2.0"])
|
347
|
+
s.add_runtime_dependency(%q<rack>, [">= 1.0"])
|
333
348
|
else
|
334
349
|
s.add_dependency(%q<nokogiri>, [">= 1.2.0"])
|
350
|
+
s.add_dependency(%q<rack>, [">= 1.0"])
|
335
351
|
end
|
336
352
|
else
|
337
353
|
s.add_dependency(%q<nokogiri>, [">= 1.2.0"])
|
354
|
+
s.add_dependency(%q<rack>, [">= 1.0"])
|
338
355
|
end
|
339
356
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webrat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Helmkamp
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-18 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,23 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 1.2.0
|
24
24
|
version:
|
25
|
-
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "1.0"
|
34
|
+
version:
|
35
|
+
description: |-
|
36
|
+
Webrat lets you quickly write expressive and robust acceptance tests
|
37
|
+
for a Ruby web application. It supports simulating a browser inside
|
38
|
+
a Ruby process to avoid the performance hit and browser dependency of
|
39
|
+
Selenium or Watir, but the same API can also be used to drive real
|
40
|
+
Selenium tests when necessary (eg. for testing AJAX interactions).
|
41
|
+
Most Ruby web frameworks and testing frameworks are supported.
|
26
42
|
email: bryan@brynary.com
|
27
43
|
executables: []
|
28
44
|
|
@@ -86,8 +102,8 @@ files:
|
|
86
102
|
- lib/webrat/core_extensions/tcp_socket.rb
|
87
103
|
- lib/webrat/mechanize.rb
|
88
104
|
- lib/webrat/merb.rb
|
105
|
+
- lib/webrat/merb_adapter.rb
|
89
106
|
- lib/webrat/merb_multipart_support.rb
|
90
|
-
- lib/webrat/merb_session.rb
|
91
107
|
- lib/webrat/rack.rb
|
92
108
|
- lib/webrat/rails.rb
|
93
109
|
- lib/webrat/rspec-rails.rb
|
@@ -115,7 +131,12 @@ files:
|
|
115
131
|
- lib/webrat/selenium/selenium_session.rb
|
116
132
|
- lib/webrat/selenium/silence_stream.rb
|
117
133
|
- lib/webrat/sinatra.rb
|
118
|
-
- spec/fakes/
|
134
|
+
- spec/fakes/test_adapter.rb
|
135
|
+
- spec/integration/mechanize/Rakefile
|
136
|
+
- spec/integration/mechanize/config.ru
|
137
|
+
- spec/integration/mechanize/sample_app.rb
|
138
|
+
- spec/integration/mechanize/spec/mechanize_spec.rb
|
139
|
+
- spec/integration/mechanize/spec/spec_helper.rb
|
119
140
|
- spec/integration/merb/.gitignore
|
120
141
|
- spec/integration/merb/Rakefile
|
121
142
|
- spec/integration/merb/app/controllers/application.rb
|
@@ -204,12 +225,12 @@ files:
|
|
204
225
|
- spec/private/core/link_spec.rb
|
205
226
|
- spec/private/core/logging_spec.rb
|
206
227
|
- spec/private/core/session_spec.rb
|
207
|
-
- spec/private/mechanize/
|
228
|
+
- spec/private/mechanize/mechanize_adapter_spec.rb
|
208
229
|
- spec/private/merb/attaches_file_spec.rb
|
209
|
-
- spec/private/merb/
|
230
|
+
- spec/private/merb/merb_adapter_spec.rb
|
210
231
|
- spec/private/nokogiri_spec.rb
|
211
232
|
- spec/private/rails/attaches_file_spec.rb
|
212
|
-
- spec/private/rails/
|
233
|
+
- spec/private/rails/rails_adapter_spec.rb
|
213
234
|
- spec/private/selenium/application_servers/rails_spec.rb
|
214
235
|
- spec/public/basic_auth_spec.rb
|
215
236
|
- spec/public/check_spec.rb
|
@@ -272,7 +293,10 @@ signing_key:
|
|
272
293
|
specification_version: 3
|
273
294
|
summary: Ruby Acceptance Testing for Web applications
|
274
295
|
test_files:
|
275
|
-
- spec/fakes/
|
296
|
+
- spec/fakes/test_adapter.rb
|
297
|
+
- spec/integration/mechanize/sample_app.rb
|
298
|
+
- spec/integration/mechanize/spec/mechanize_spec.rb
|
299
|
+
- spec/integration/mechanize/spec/spec_helper.rb
|
276
300
|
- spec/integration/merb/app/controllers/application.rb
|
277
301
|
- spec/integration/merb/app/controllers/exceptions.rb
|
278
302
|
- spec/integration/merb/app/controllers/testing.rb
|
@@ -324,12 +348,12 @@ test_files:
|
|
324
348
|
- spec/private/core/link_spec.rb
|
325
349
|
- spec/private/core/logging_spec.rb
|
326
350
|
- spec/private/core/session_spec.rb
|
327
|
-
- spec/private/mechanize/
|
351
|
+
- spec/private/mechanize/mechanize_adapter_spec.rb
|
328
352
|
- spec/private/merb/attaches_file_spec.rb
|
329
|
-
- spec/private/merb/
|
353
|
+
- spec/private/merb/merb_adapter_spec.rb
|
330
354
|
- spec/private/nokogiri_spec.rb
|
331
355
|
- spec/private/rails/attaches_file_spec.rb
|
332
|
-
- spec/private/rails/
|
356
|
+
- spec/private/rails/rails_adapter_spec.rb
|
333
357
|
- spec/private/selenium/application_servers/rails_spec.rb
|
334
358
|
- spec/public/basic_auth_spec.rb
|
335
359
|
- spec/public/check_spec.rb
|