davidtrogers-webrat 0.4.4.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -1
- data/Gemfile +19 -0
- data/History.txt +99 -9
- data/Rakefile +141 -207
- data/Thorfile +118 -0
- data/lib/webrat.rb +10 -23
- data/lib/webrat/{mechanize.rb → adapters/mechanize.rb} +6 -2
- data/lib/webrat/adapters/merb.rb +11 -0
- data/lib/webrat/adapters/rack.rb +25 -0
- data/lib/webrat/{rails.rb → adapters/rails.rb} +5 -37
- data/lib/webrat/adapters/sinatra.rb +9 -0
- data/lib/webrat/core.rb +0 -1
- data/lib/webrat/core/configuration.rb +22 -18
- data/lib/webrat/core/elements/area.rb +2 -2
- data/lib/webrat/core/elements/element.rb +3 -3
- data/lib/webrat/core/elements/field.rb +113 -31
- data/lib/webrat/core/elements/form.rb +4 -4
- data/lib/webrat/core/elements/label.rb +4 -4
- data/lib/webrat/core/elements/link.rb +8 -7
- data/lib/webrat/core/elements/select_option.rb +15 -2
- data/lib/webrat/core/locators.rb +1 -1
- data/lib/webrat/core/locators/area_locator.rb +3 -3
- data/lib/webrat/core/locators/button_locator.rb +6 -6
- data/lib/webrat/core/locators/field_by_id_locator.rb +3 -3
- data/lib/webrat/core/locators/field_labeled_locator.rb +2 -2
- data/lib/webrat/core/locators/field_named_locator.rb +3 -3
- data/lib/webrat/core/locators/form_locator.rb +1 -1
- data/lib/webrat/core/locators/label_locator.rb +2 -2
- data/lib/webrat/core/locators/link_locator.rb +16 -8
- data/lib/webrat/core/locators/select_option_locator.rb +5 -5
- data/lib/webrat/core/logging.rb +4 -5
- data/lib/webrat/core/matchers/have_content.rb +3 -8
- data/lib/webrat/core/matchers/have_xpath.rb +3 -28
- data/lib/webrat/core/methods.rb +5 -4
- data/lib/webrat/core/mime.rb +11 -22
- data/lib/webrat/core/save_and_open_page.rb +7 -29
- data/lib/webrat/core/scope.rb +17 -2
- data/lib/webrat/core/session.rb +31 -19
- data/lib/webrat/core/xml.rb +41 -84
- data/lib/webrat/integrations/merb.rb +10 -0
- data/lib/webrat/integrations/rails.rb +25 -0
- data/lib/webrat/integrations/rspec-rails.rb +11 -0
- data/lib/webrat/integrations/selenium.rb +11 -0
- data/lib/webrat/rspec-rails.rb +2 -13
- data/lib/webrat/selenium.rb +0 -11
- data/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/lib/webrat/selenium/application_servers.rb +5 -0
- data/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/lib/webrat/selenium/location_strategy_javascript/label.js +30 -3
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +1 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +24 -4
- data/lib/webrat/selenium/matchers/have_content.rb +22 -10
- data/lib/webrat/selenium/matchers/have_selector.rb +8 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +8 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +8 -6
- data/lib/webrat/selenium/selenium_session.rb +43 -14
- data/lib/webrat/selenium/silence_stream.rb +2 -2
- data/spec/fakes/{test_session.rb → test_adapter.rb} +4 -5
- 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 +29 -0
- data/spec/integration/merb/app/controllers/testing.rb +9 -0
- data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/spec/integration/merb/config/router.rb +1 -0
- data/spec/integration/merb/spec/spec_helper.rb +2 -0
- data/spec/integration/merb/spec/webrat_spec.rb +7 -0
- data/spec/integration/rack/app.rb +89 -0
- data/spec/integration/rack/test/helper.rb +21 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +57 -51
- data/spec/integration/rails/app/controllers/{application.rb → application_controller.rb} +0 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +16 -9
- data/spec/integration/rails/app/views/buttons/show.html.erb +0 -2
- data/spec/integration/rails/app/views/links/show.html.erb +2 -1
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +0 -2
- data/spec/integration/rails/app/views/webrat/within.html.erb +3 -0
- data/spec/integration/rails/config/environment.rb +1 -1
- data/spec/integration/rails/config/routes.rb +2 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +12 -26
- data/spec/integration/rails/test/integration/fill_in_test.rb +1 -1
- data/spec/integration/rails/test/integration/link_click_test.rb +8 -2
- data/spec/integration/rails/test/integration/webrat_test.rb +53 -5
- data/spec/integration/rails/test/test_helper.rb +7 -5
- data/spec/integration/sinatra/test/test_helper.rb +3 -2
- data/spec/private/core/configuration_spec.rb +8 -27
- data/spec/private/core/field_spec.rb +14 -16
- data/spec/private/core/link_spec.rb +1 -1
- data/spec/private/core/session_spec.rb +23 -26
- data/spec/private/mechanize/{mechanize_session_spec.rb → mechanize_adapter_spec.rb} +4 -12
- data/spec/private/nokogiri_spec.rb +2 -2
- data/spec/private/rails/{rails_session_spec.rb → rails_adapter_spec.rb} +11 -42
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/spec/public/basic_auth_spec.rb +13 -2
- data/spec/public/click_button_spec.rb +10 -12
- data/spec/public/click_link_spec.rb +21 -0
- data/spec/public/fill_in_spec.rb +15 -0
- data/spec/public/matchers/contain_spec.rb +12 -19
- data/spec/public/matchers/have_selector_spec.rb +6 -2
- data/spec/public/matchers/have_xpath_spec.rb +3 -3
- data/spec/public/save_and_open_spec.rb +15 -17
- data/spec/public/select_spec.rb +232 -26
- data/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/spec/spec_helper.rb +5 -1
- data/vendor/selenium-server.jar +0 -0
- metadata +119 -69
- data/.dotest/0001 +0 -34
- data/.dotest/0002 +0 -34
- data/.dotest/binary +0 -1
- data/.dotest/final-commit +0 -1
- data/.dotest/head-name +0 -1
- data/.dotest/info +0 -5
- data/.dotest/keep +0 -1
- data/.dotest/last +0 -1
- data/.dotest/msg +0 -0
- data/.dotest/msg-clean +0 -0
- data/.dotest/next +0 -1
- data/.dotest/onto +0 -1
- data/.dotest/orig-head +0 -1
- data/.dotest/patch +0 -29
- data/.dotest/sign +0 -1
- data/.dotest/utf8 +0 -1
- data/.dotest/whitespace +0 -1
- data/VERSION +0 -1
- data/lib/webrat/core/xml/hpricot.rb +0 -19
- data/lib/webrat/core/xml/nokogiri.rb +0 -76
- data/lib/webrat/core/xml/rexml.rb +0 -24
- data/lib/webrat/merb_session.rb +0 -65
- data/lib/webrat/rack.rb +0 -24
- data/lib/webrat/rack_test.rb +0 -32
- data/lib/webrat/selenium/application_server.rb +0 -73
- data/lib/webrat/selenium/merb_application_server.rb +0 -48
- data/lib/webrat/selenium/rails_application_server.rb +0 -42
- data/lib/webrat/selenium/sinatra_application_server.rb +0 -35
- data/lib/webrat/sinatra.rb +0 -44
- data/spec/integration/rack/rack_app.rb +0 -16
- data/spec/integration/rack/test/test_helper.rb +0 -20
- data/spec/private/core/logging_spec.rb +0 -10
- data/spec/private/merb/merb_session_spec.rb +0 -42
@@ -1,42 +0,0 @@
|
|
1
|
-
module Webrat
|
2
|
-
module Selenium
|
3
|
-
|
4
|
-
class RailsApplicationServer < ApplicationServer
|
5
|
-
|
6
|
-
def start
|
7
|
-
system start_command
|
8
|
-
end
|
9
|
-
|
10
|
-
def stop
|
11
|
-
silence_stream(STDOUT) do
|
12
|
-
system stop_command
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def fail
|
17
|
-
$stderr.puts
|
18
|
-
$stderr.puts
|
19
|
-
$stderr.puts "==> Failed to boot the Rails application server... exiting!"
|
20
|
-
$stderr.puts
|
21
|
-
$stderr.puts "Verify you can start a Rails server on port #{Webrat.configuration.application_port} with the following command:"
|
22
|
-
$stderr.puts
|
23
|
-
$stderr.puts " #{start_command}"
|
24
|
-
exit
|
25
|
-
end
|
26
|
-
|
27
|
-
def pid_file
|
28
|
-
prepare_pid_file("#{RAILS_ROOT}/tmp/pids", "mongrel_selenium.pid")
|
29
|
-
end
|
30
|
-
|
31
|
-
def start_command
|
32
|
-
"mongrel_rails start -d --chdir='#{RAILS_ROOT}' --port=#{Webrat.configuration.application_port} --environment=#{Webrat.configuration.application_environment} --pid #{pid_file} &"
|
33
|
-
end
|
34
|
-
|
35
|
-
def stop_command
|
36
|
-
"mongrel_rails stop -c #{RAILS_ROOT} --pid #{pid_file}"
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Webrat
|
2
|
-
module Selenium
|
3
|
-
|
4
|
-
class SinatraApplicationServer < ApplicationServer
|
5
|
-
|
6
|
-
def start
|
7
|
-
fork do
|
8
|
-
File.open('rack.pid', 'w') { |fp| fp.write Process.pid }
|
9
|
-
exec 'rackup', File.expand_path(Dir.pwd + '/config.ru'), '-p', Webrat.configuration.application_port.to_s
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def stop
|
14
|
-
silence_stream(STDOUT) do
|
15
|
-
pid = File.read(pid_file)
|
16
|
-
system("kill -9 #{pid}")
|
17
|
-
FileUtils.rm_f pid_file
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def fail
|
22
|
-
$stderr.puts
|
23
|
-
$stderr.puts
|
24
|
-
$stderr.puts "==> Failed to boot the Sinatra application server... exiting!"
|
25
|
-
exit
|
26
|
-
end
|
27
|
-
|
28
|
-
def pid_file
|
29
|
-
prepare_pid_file(Dir.pwd, 'rack.pid')
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
data/lib/webrat/sinatra.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require "webrat/rack"
|
2
|
-
require "sinatra/test"
|
3
|
-
|
4
|
-
module Webrat
|
5
|
-
class SinatraSession < RackSession
|
6
|
-
include Sinatra::Test
|
7
|
-
|
8
|
-
attr_reader :request, :response
|
9
|
-
|
10
|
-
def initialize(context = nil)
|
11
|
-
super(context)
|
12
|
-
|
13
|
-
app = context.respond_to?(:app) ? context.app : Sinatra::Application
|
14
|
-
@browser = Sinatra::TestHarness.new(app)
|
15
|
-
end
|
16
|
-
|
17
|
-
%w(get head post put delete).each do |verb|
|
18
|
-
class_eval <<-RUBY
|
19
|
-
def #{verb}(path, data, headers = {})
|
20
|
-
params = data.inject({}) do |data, (key,value)|
|
21
|
-
data[key] = Rack::Utils.unescape(value)
|
22
|
-
data
|
23
|
-
end
|
24
|
-
headers["HTTP_HOST"] = "www.example.com"
|
25
|
-
@browser.#{verb}(path, params, headers)
|
26
|
-
end
|
27
|
-
RUBY
|
28
|
-
end
|
29
|
-
|
30
|
-
def response_body
|
31
|
-
@browser.body
|
32
|
-
end
|
33
|
-
|
34
|
-
def response_code
|
35
|
-
@browser.status
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def response
|
41
|
-
@browser.response
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "test/unit"
|
3
|
-
require "rack/test"
|
4
|
-
require "redgreen"
|
5
|
-
|
6
|
-
require File.dirname(__FILE__) + "/../../../../lib/webrat"
|
7
|
-
|
8
|
-
Webrat.configure do |config|
|
9
|
-
config.mode = :rack_test
|
10
|
-
end
|
11
|
-
|
12
|
-
class Test::Unit::TestCase
|
13
|
-
include Rack::Test::Methods
|
14
|
-
include Webrat::Methods
|
15
|
-
include Webrat::Matchers
|
16
|
-
|
17
|
-
def app
|
18
|
-
RackApp.new
|
19
|
-
end
|
20
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
-
|
3
|
-
require "webrat/merb"
|
4
|
-
|
5
|
-
describe Webrat::MerbSession do
|
6
|
-
it "should not pass empty params if data is and empty hash" do
|
7
|
-
session = Webrat::MerbSession.new
|
8
|
-
response = OpenStruct.new
|
9
|
-
response.status = 200
|
10
|
-
session.should_receive(:request).with('url', {:params=> nil, :method=>"GET", :headers=>nil}).and_return(response)
|
11
|
-
session.get('url', {}, nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
%w{post put delete}.each do |request_method|
|
15
|
-
it "should call do request with method #{request_method.upcase} for a #{request_method} call" do
|
16
|
-
session = Webrat::MerbSession.new
|
17
|
-
response = OpenStruct.new
|
18
|
-
response.status = 200
|
19
|
-
|
20
|
-
session.should_receive(:request).with('url', {:params=>nil, :method=>request_method.upcase, :headers=>nil}).and_return(response)
|
21
|
-
session.send(request_method, 'url', {}, nil)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "a session with a response" do
|
26
|
-
before do
|
27
|
-
@session = Webrat::MerbSession.new
|
28
|
-
@response = OpenStruct.new
|
29
|
-
@response.status = 200
|
30
|
-
@response.body = 'test response'
|
31
|
-
@session.instance_variable_set(:@response, @response)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should return body of a request as a response_body" do
|
35
|
-
@session.response_body.should == @response.body
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should return status of a request as a response_code" do
|
39
|
-
@session.response_code.should == @response.status
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|