mkuklis-webrat 0.5.1 → 0.6.rc1
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/.document +3 -3
- data/.gitignore +14 -14
- data/History.txt +413 -413
- data/MIT-LICENSE.txt +19 -19
- data/README.rdoc +84 -84
- data/Rakefile +187 -187
- data/VERSION +1 -1
- data/install.rb +1 -1
- data/lib/webrat/adapters/mechanize.rb +78 -78
- data/lib/webrat/adapters/merb.rb +11 -11
- data/lib/webrat/adapters/rack.rb +25 -25
- data/lib/webrat/adapters/rails.rb +81 -81
- data/lib/webrat/adapters/sinatra.rb +9 -9
- data/lib/webrat/core/configuration.rb +92 -92
- data/lib/webrat/core/elements/area.rb +31 -31
- data/lib/webrat/core/elements/element.rb +33 -33
- data/lib/webrat/core/elements/field.rb +487 -487
- data/lib/webrat/core/elements/form.rb +103 -103
- data/lib/webrat/core/elements/label.rb +31 -31
- data/lib/webrat/core/elements/link.rb +93 -93
- data/lib/webrat/core/elements/select_option.rb +48 -48
- data/lib/webrat/core/locators/area_locator.rb +38 -38
- data/lib/webrat/core/locators/button_locator.rb +54 -54
- data/lib/webrat/core/locators/field_by_id_locator.rb +37 -37
- data/lib/webrat/core/locators/field_labeled_locator.rb +56 -56
- data/lib/webrat/core/locators/field_locator.rb +25 -25
- data/lib/webrat/core/locators/field_named_locator.rb +41 -41
- data/lib/webrat/core/locators/form_locator.rb +19 -19
- data/lib/webrat/core/locators/label_locator.rb +34 -34
- data/lib/webrat/core/locators/link_locator.rb +74 -74
- data/lib/webrat/core/locators/locator.rb +20 -20
- data/lib/webrat/core/locators/select_option_locator.rb +59 -59
- data/lib/webrat/core/locators.rb +20 -20
- data/lib/webrat/core/logging.rb +23 -23
- data/lib/webrat/core/matchers/have_content.rb +68 -68
- data/lib/webrat/core/matchers/have_selector.rb +74 -74
- data/lib/webrat/core/matchers/have_tag.rb +21 -21
- data/lib/webrat/core/matchers/have_xpath.rb +122 -122
- data/lib/webrat/core/matchers.rb +4 -4
- data/lib/webrat/core/methods.rb +64 -64
- data/lib/webrat/core/mime.rb +18 -18
- data/lib/webrat/core/save_and_open_page.rb +48 -48
- data/lib/webrat/core/scope.rb +365 -365
- data/lib/webrat/core/session.rb +306 -306
- data/lib/webrat/core/xml.rb +72 -72
- data/lib/webrat/core.rb +13 -13
- data/lib/webrat/core_extensions/blank.rb +58 -58
- data/lib/webrat/core_extensions/deprecate.rb +8 -8
- data/lib/webrat/core_extensions/detect_mapped.rb +12 -12
- data/lib/webrat/core_extensions/meta_class.rb +6 -6
- data/lib/webrat/core_extensions/nil_to_param.rb +5 -5
- data/lib/webrat/core_extensions/tcp_socket.rb +27 -27
- data/lib/webrat/integrations/merb.rb +10 -10
- data/lib/webrat/integrations/rails.rb +25 -25
- data/lib/webrat/integrations/rspec-rails.rb +10 -10
- data/lib/webrat/integrations/selenium.rb +11 -11
- data/lib/webrat/merb.rb +9 -9
- data/lib/webrat/rspec-rails.rb +2 -2
- data/lib/webrat/selenium/application_server_factory.rb +40 -40
- data/lib/webrat/selenium/application_servers/external.rb +26 -26
- data/lib/webrat/selenium/application_servers/merb.rb +50 -50
- data/lib/webrat/selenium/application_servers/rails.rb +3 -6
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -37
- data/lib/webrat/selenium/application_servers.rb +5 -5
- data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -19
- data/lib/webrat/selenium/location_strategy_javascript/label.js +42 -42
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +6 -6
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +32 -32
- data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -15
- data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -5
- data/lib/webrat/selenium/matchers/have_content.rb +66 -66
- data/lib/webrat/selenium/matchers/have_selector.rb +49 -49
- data/lib/webrat/selenium/matchers/have_tag.rb +72 -72
- data/lib/webrat/selenium/matchers/have_xpath.rb +45 -45
- data/lib/webrat/selenium/matchers.rb +4 -4
- data/lib/webrat/selenium/selenium_extensions.js +5 -5
- data/lib/webrat/selenium/selenium_rc_server.rb +86 -86
- data/lib/webrat/selenium/selenium_session.rb +267 -272
- data/lib/webrat/selenium/silence_stream.rb +18 -18
- data/lib/webrat/selenium.rb +70 -70
- data/lib/webrat.rb +18 -18
- data/spec/fakes/test_adapter.rb +37 -37
- data/spec/integration/mechanize/Rakefile +6 -6
- data/spec/integration/mechanize/config.ru +1 -1
- data/spec/integration/mechanize/sample_app.rb +20 -20
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -22
- data/spec/integration/mechanize/spec/spec_helper.rb +27 -27
- data/spec/integration/merb/.gitignore +20 -20
- data/spec/integration/merb/Rakefile +35 -35
- data/spec/integration/merb/app/controllers/application.rb +2 -2
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -13
- data/spec/integration/merb/app/controllers/testing.rb +27 -27
- data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -63
- data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -47
- data/spec/integration/merb/app/views/layout/application.html.erb +11 -11
- data/spec/integration/merb/app/views/testing/show_form.html.erb +26 -26
- data/spec/integration/merb/app/views/testing/upload.html.erb +8 -8
- data/spec/integration/merb/config/environments/development.rb +15 -15
- data/spec/integration/merb/config/environments/rake.rb +11 -11
- data/spec/integration/merb/config/environments/test.rb +14 -14
- data/spec/integration/merb/config/init.rb +25 -25
- data/spec/integration/merb/config/rack.rb +11 -11
- data/spec/integration/merb/config/router.rb +34 -34
- data/spec/integration/merb/spec/spec.opts +1 -1
- data/spec/integration/merb/spec/spec_helper.rb +26 -26
- data/spec/integration/merb/spec/webrat_spec.rb +39 -39
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -31
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -64
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -124
- data/spec/integration/merb/tasks/merb.thor/main.thor +149 -149
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -93
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -40
- data/spec/integration/rack/Rakefile +5 -5
- data/spec/integration/rack/app.rb +89 -89
- data/spec/integration/rack/test/helper.rb +21 -21
- data/spec/integration/rack/test/webrat_rack_test.rb +73 -73
- data/spec/integration/rails/.gitignore +3 -3
- data/spec/integration/rails/Rakefile +30 -30
- data/spec/integration/rails/app/controllers/application.rb +15 -15
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -7
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -4
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -7
- data/spec/integration/rails/app/controllers/webrat_controller.rb +46 -46
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -2
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -2
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -2
- data/spec/integration/rails/app/views/buttons/show.html.erb +10 -10
- data/spec/integration/rails/app/views/fields/show.html.erb +8 -8
- data/spec/integration/rails/app/views/links/show.html.erb +5 -5
- data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +3 -3
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +10 -10
- data/spec/integration/rails/app/views/webrat/form.html.erb +27 -27
- data/spec/integration/rails/app/views/webrat/within.html.erb +2 -2
- data/spec/integration/rails/config/boot.rb +109 -109
- data/spec/integration/rails/config/environment.rb +12 -12
- data/spec/integration/rails/config/environments/development.rb +17 -17
- data/spec/integration/rails/config/environments/selenium.rb +22 -22
- data/spec/integration/rails/config/environments/test.rb +22 -22
- data/spec/integration/rails/config/initializers/inflections.rb +10 -10
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -5
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -17
- data/spec/integration/rails/config/locales/en.yml +4 -4
- data/spec/integration/rails/config/routes.rb +19 -19
- data/spec/integration/rails/public/404.html +29 -29
- data/spec/integration/rails/public/422.html +29 -29
- data/spec/integration/rails/public/500.html +33 -33
- data/spec/integration/rails/script/about +3 -3
- data/spec/integration/rails/script/console +3 -3
- data/spec/integration/rails/script/dbconsole +3 -3
- data/spec/integration/rails/script/destroy +3 -3
- data/spec/integration/rails/script/generate +3 -3
- data/spec/integration/rails/script/performance/benchmarker +3 -3
- data/spec/integration/rails/script/performance/profiler +3 -3
- data/spec/integration/rails/script/performance/request +3 -3
- data/spec/integration/rails/script/plugin +3 -3
- data/spec/integration/rails/script/process/inspector +3 -3
- data/spec/integration/rails/script/process/reaper +3 -3
- data/spec/integration/rails/script/process/spawner +3 -3
- data/spec/integration/rails/script/runner +3 -3
- data/spec/integration/rails/script/server +3 -3
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -80
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -24
- data/spec/integration/rails/test/integration/link_click_test.rb +27 -27
- data/spec/integration/rails/test/integration/webrat_test.rb +122 -122
- data/spec/integration/rails/test/test_helper.rb +26 -26
- data/spec/integration/sinatra/Rakefile +5 -5
- data/spec/integration/sinatra/classic_app.rb +64 -64
- data/spec/integration/sinatra/modular_app.rb +16 -16
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -37
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -18
- data/spec/integration/sinatra/test/test_helper.rb +17 -17
- data/spec/private/core/configuration_spec.rb +87 -87
- data/spec/private/core/field_spec.rb +85 -85
- data/spec/private/core/link_spec.rb +24 -24
- data/spec/private/core/session_spec.rb +200 -200
- data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -73
- data/spec/private/nokogiri_spec.rb +77 -77
- data/spec/private/rails/attaches_file_spec.rb +81 -81
- data/spec/private/rails/rails_adapter_spec.rb +86 -86
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -26
- data/spec/public/basic_auth_spec.rb +24 -24
- data/spec/public/check_spec.rb +191 -191
- data/spec/public/choose_spec.rb +118 -118
- data/spec/public/click_area_spec.rb +106 -106
- data/spec/public/click_button_spec.rb +494 -494
- data/spec/public/click_link_spec.rb +511 -511
- data/spec/public/fill_in_spec.rb +224 -224
- data/spec/public/locators/field_by_xpath_spec.rb +19 -19
- data/spec/public/locators/field_labeled_spec.rb +172 -172
- data/spec/public/locators/field_with_id_spec.rb +16 -16
- data/spec/public/matchers/contain_spec.rb +114 -114
- data/spec/public/matchers/have_selector_spec.rb +146 -146
- data/spec/public/matchers/have_tag_spec.rb +39 -39
- data/spec/public/matchers/have_xpath_spec.rb +136 -136
- data/spec/public/reload_spec.rb +10 -10
- data/spec/public/save_and_open_spec.rb +70 -70
- data/spec/public/select_date_spec.rb +112 -112
- data/spec/public/select_datetime_spec.rb +137 -137
- data/spec/public/select_spec.rb +455 -455
- data/spec/public/select_time_spec.rb +100 -100
- data/spec/public/selenium/application_server_factory_spec.rb +49 -49
- data/spec/public/selenium/application_servers/external_spec.rb +12 -12
- data/spec/public/selenium/selenium_session_spec.rb +37 -37
- data/spec/public/set_hidden_field_spec.rb +5 -5
- data/spec/public/submit_form_spec.rb +5 -5
- data/spec/public/visit_spec.rb +58 -58
- data/spec/public/within_spec.rb +177 -177
- data/spec/spec.opts +1 -1
- data/spec/spec_helper.rb +54 -54
- data/webrat.gemspec +360 -0
- metadata +6 -5
@@ -1,78 +1,78 @@
|
|
1
|
-
require "mechanize"
|
2
|
-
|
3
|
-
module Webrat #:nodoc:
|
4
|
-
class MechanizeAdapter #:nodoc:
|
5
|
-
extend Forwardable
|
6
|
-
|
7
|
-
attr_accessor :response
|
8
|
-
alias :page :response
|
9
|
-
|
10
|
-
def initialize(*args)
|
11
|
-
end
|
12
|
-
|
13
|
-
def request_page(url, http_method, data) #:nodoc:
|
14
|
-
super(absolute_url(url), http_method, data)
|
15
|
-
end
|
16
|
-
|
17
|
-
def get(url, data, headers_argument_not_used = nil)
|
18
|
-
@response = mechanize.get(url, data)
|
19
|
-
end
|
20
|
-
|
21
|
-
def post(url, data, headers_argument_not_used = nil)
|
22
|
-
post_data = data.inject({}) do |memo, param|
|
23
|
-
case param.last
|
24
|
-
when Hash
|
25
|
-
param.last.each {|attribute, value| memo["#{param.first}[#{attribute}]"] = value }
|
26
|
-
else
|
27
|
-
memo[param.first] = param.last
|
28
|
-
end
|
29
|
-
memo
|
30
|
-
end
|
31
|
-
@response = mechanize.post(url, post_data)
|
32
|
-
end
|
33
|
-
|
34
|
-
def response_body
|
35
|
-
@response.content
|
36
|
-
end
|
37
|
-
|
38
|
-
def response_code
|
39
|
-
@response.code.to_i
|
40
|
-
end
|
41
|
-
|
42
|
-
def mechanize
|
43
|
-
@mechanize ||= WWW::Mechanize.new
|
44
|
-
end
|
45
|
-
|
46
|
-
def_delegators :mechanize, :basic_auth
|
47
|
-
|
48
|
-
def absolute_url(url) #:nodoc:
|
49
|
-
current_host, current_path = split_current_url
|
50
|
-
if url =~ Regexp.new('^https?://')
|
51
|
-
url
|
52
|
-
elsif url =~ Regexp.new('^/')
|
53
|
-
current_host + url
|
54
|
-
elsif url =~ Regexp.new('^\.')
|
55
|
-
current_host + absolute_path(current_path, url)
|
56
|
-
else
|
57
|
-
url
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
def split_current_url
|
63
|
-
current_url =~ Regexp.new('^(https?://[^/]+)(/.*)?')
|
64
|
-
[Regexp.last_match(1), Regexp.last_match(2)]
|
65
|
-
end
|
66
|
-
|
67
|
-
def absolute_path(current_path, url)
|
68
|
-
levels_up = url.split('/').find_all { |x| x == '..' }.size
|
69
|
-
ancestor = if current_path.nil?
|
70
|
-
""
|
71
|
-
else
|
72
|
-
current_path.split("/")[0..(-1 - levels_up)].join("/")
|
73
|
-
end
|
74
|
-
descendent = url.split("/")[levels_up..-1].join
|
75
|
-
"#{ancestor}/#{descendent}"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
1
|
+
require "mechanize"
|
2
|
+
|
3
|
+
module Webrat #:nodoc:
|
4
|
+
class MechanizeAdapter #:nodoc:
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
attr_accessor :response
|
8
|
+
alias :page :response
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def request_page(url, http_method, data) #:nodoc:
|
14
|
+
super(absolute_url(url), http_method, data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get(url, data, headers_argument_not_used = nil)
|
18
|
+
@response = mechanize.get(url, data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def post(url, data, headers_argument_not_used = nil)
|
22
|
+
post_data = data.inject({}) do |memo, param|
|
23
|
+
case param.last
|
24
|
+
when Hash
|
25
|
+
param.last.each {|attribute, value| memo["#{param.first}[#{attribute}]"] = value }
|
26
|
+
else
|
27
|
+
memo[param.first] = param.last
|
28
|
+
end
|
29
|
+
memo
|
30
|
+
end
|
31
|
+
@response = mechanize.post(url, post_data)
|
32
|
+
end
|
33
|
+
|
34
|
+
def response_body
|
35
|
+
@response.content
|
36
|
+
end
|
37
|
+
|
38
|
+
def response_code
|
39
|
+
@response.code.to_i
|
40
|
+
end
|
41
|
+
|
42
|
+
def mechanize
|
43
|
+
@mechanize ||= WWW::Mechanize.new
|
44
|
+
end
|
45
|
+
|
46
|
+
def_delegators :mechanize, :basic_auth
|
47
|
+
|
48
|
+
def absolute_url(url) #:nodoc:
|
49
|
+
current_host, current_path = split_current_url
|
50
|
+
if url =~ Regexp.new('^https?://')
|
51
|
+
url
|
52
|
+
elsif url =~ Regexp.new('^/')
|
53
|
+
current_host + url
|
54
|
+
elsif url =~ Regexp.new('^\.')
|
55
|
+
current_host + absolute_path(current_path, url)
|
56
|
+
else
|
57
|
+
url
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
def split_current_url
|
63
|
+
current_url =~ Regexp.new('^(https?://[^/]+)(/.*)?')
|
64
|
+
[Regexp.last_match(1), Regexp.last_match(2)]
|
65
|
+
end
|
66
|
+
|
67
|
+
def absolute_path(current_path, url)
|
68
|
+
levels_up = url.split('/').find_all { |x| x == '..' }.size
|
69
|
+
ancestor = if current_path.nil?
|
70
|
+
""
|
71
|
+
else
|
72
|
+
current_path.split("/")[0..(-1 - levels_up)].join("/")
|
73
|
+
end
|
74
|
+
descendent = url.split("/")[levels_up..-1].join
|
75
|
+
"#{ancestor}/#{descendent}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/lib/webrat/adapters/merb.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
require "webrat/integrations/merb"
|
2
|
-
|
3
|
-
module Webrat
|
4
|
-
class MerbAdapter < RackAdapter #:nodoc:
|
5
|
-
def initialize(context=nil)
|
6
|
-
app = context.respond_to?(:app) ?
|
7
|
-
context.app : Merb::Rack::Application.new
|
8
|
-
super(Rack::Test::Session.new(Rack::MockSession.new(app, "www.example.com")))
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
require "webrat/integrations/merb"
|
2
|
+
|
3
|
+
module Webrat
|
4
|
+
class MerbAdapter < RackAdapter #:nodoc:
|
5
|
+
def initialize(context=nil)
|
6
|
+
app = context.respond_to?(:app) ?
|
7
|
+
context.app : Merb::Rack::Application.new
|
8
|
+
super(Rack::Test::Session.new(Rack::MockSession.new(app, "www.example.com")))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/webrat/adapters/rack.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
require "rack/test"
|
2
|
-
|
3
|
-
module Webrat
|
4
|
-
class RackAdapter
|
5
|
-
extend Forwardable
|
6
|
-
|
7
|
-
def_delegators :@session, :get, :post, :put, :delete
|
8
|
-
|
9
|
-
def initialize(session) #:nodoc:
|
10
|
-
@session = session
|
11
|
-
end
|
12
|
-
|
13
|
-
def response_body
|
14
|
-
response.body
|
15
|
-
end
|
16
|
-
|
17
|
-
def response_code
|
18
|
-
response.status
|
19
|
-
end
|
20
|
-
|
21
|
-
def response
|
22
|
-
@session.last_response
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
1
|
+
require "rack/test"
|
2
|
+
|
3
|
+
module Webrat
|
4
|
+
class RackAdapter
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
def_delegators :@session, :get, :post, :put, :delete
|
8
|
+
|
9
|
+
def initialize(session) #:nodoc:
|
10
|
+
@session = session
|
11
|
+
end
|
12
|
+
|
13
|
+
def response_body
|
14
|
+
response.body
|
15
|
+
end
|
16
|
+
|
17
|
+
def response_code
|
18
|
+
response.status
|
19
|
+
end
|
20
|
+
|
21
|
+
def response
|
22
|
+
@session.last_response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,81 +1,81 @@
|
|
1
|
-
require "webrat/integrations/rails"
|
2
|
-
require "action_controller/record_identifier"
|
3
|
-
|
4
|
-
module Webrat
|
5
|
-
class RailsAdapter #:nodoc:
|
6
|
-
include ActionController::RecordIdentifier
|
7
|
-
|
8
|
-
attr_reader :integration_session
|
9
|
-
|
10
|
-
def initialize(session)
|
11
|
-
@integration_session = session
|
12
|
-
end
|
13
|
-
|
14
|
-
def doc_root
|
15
|
-
File.expand_path(File.join(RAILS_ROOT, 'public'))
|
16
|
-
end
|
17
|
-
|
18
|
-
def saved_page_dir
|
19
|
-
File.expand_path(File.join(RAILS_ROOT, "tmp"))
|
20
|
-
end
|
21
|
-
|
22
|
-
def get(url, data, headers = nil)
|
23
|
-
do_request(:get, url, data, headers)
|
24
|
-
end
|
25
|
-
|
26
|
-
def post(url, data, headers = nil)
|
27
|
-
do_request(:post, url, data, headers)
|
28
|
-
end
|
29
|
-
|
30
|
-
def put(url, data, headers = nil)
|
31
|
-
do_request(:put, url, data, headers)
|
32
|
-
end
|
33
|
-
|
34
|
-
def delete(url, data, headers = nil)
|
35
|
-
do_request(:delete, url, data, headers)
|
36
|
-
end
|
37
|
-
|
38
|
-
def response_body
|
39
|
-
response.body
|
40
|
-
end
|
41
|
-
|
42
|
-
def response_code
|
43
|
-
response.code.to_i
|
44
|
-
end
|
45
|
-
|
46
|
-
def xml_content_type?
|
47
|
-
response.headers["Content-Type"].to_s =~ /xml/
|
48
|
-
end
|
49
|
-
|
50
|
-
protected
|
51
|
-
|
52
|
-
def do_request(http_method, url, data, headers) #:nodoc:
|
53
|
-
update_protocol(url)
|
54
|
-
integration_session.send(http_method, normalize_url(url), data, headers)
|
55
|
-
end
|
56
|
-
|
57
|
-
# remove protocol, host and anchor
|
58
|
-
def normalize_url(href) #:nodoc:
|
59
|
-
uri = URI.parse(href)
|
60
|
-
normalized_url = []
|
61
|
-
normalized_url << "#{uri.scheme}://" if uri.scheme
|
62
|
-
normalized_url << uri.host if uri.host
|
63
|
-
normalized_url << ":#{uri.port}" if uri.port && ![80,443].include?(uri.port)
|
64
|
-
normalized_url << uri.path if uri.path
|
65
|
-
normalized_url << "?#{uri.query}" if uri.query
|
66
|
-
normalized_url.join
|
67
|
-
end
|
68
|
-
|
69
|
-
def update_protocol(href) #:nodoc:
|
70
|
-
if href =~ /^https:/
|
71
|
-
integration_session.https!(true)
|
72
|
-
elsif href =~ /^http:/
|
73
|
-
integration_session.https!(false)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def response #:nodoc:
|
78
|
-
integration_session.response
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
1
|
+
require "webrat/integrations/rails"
|
2
|
+
require "action_controller/record_identifier"
|
3
|
+
|
4
|
+
module Webrat
|
5
|
+
class RailsAdapter #:nodoc:
|
6
|
+
include ActionController::RecordIdentifier
|
7
|
+
|
8
|
+
attr_reader :integration_session
|
9
|
+
|
10
|
+
def initialize(session)
|
11
|
+
@integration_session = session
|
12
|
+
end
|
13
|
+
|
14
|
+
def doc_root
|
15
|
+
File.expand_path(File.join(RAILS_ROOT, 'public'))
|
16
|
+
end
|
17
|
+
|
18
|
+
def saved_page_dir
|
19
|
+
File.expand_path(File.join(RAILS_ROOT, "tmp"))
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(url, data, headers = nil)
|
23
|
+
do_request(:get, url, data, headers)
|
24
|
+
end
|
25
|
+
|
26
|
+
def post(url, data, headers = nil)
|
27
|
+
do_request(:post, url, data, headers)
|
28
|
+
end
|
29
|
+
|
30
|
+
def put(url, data, headers = nil)
|
31
|
+
do_request(:put, url, data, headers)
|
32
|
+
end
|
33
|
+
|
34
|
+
def delete(url, data, headers = nil)
|
35
|
+
do_request(:delete, url, data, headers)
|
36
|
+
end
|
37
|
+
|
38
|
+
def response_body
|
39
|
+
response.body
|
40
|
+
end
|
41
|
+
|
42
|
+
def response_code
|
43
|
+
response.code.to_i
|
44
|
+
end
|
45
|
+
|
46
|
+
def xml_content_type?
|
47
|
+
response.headers["Content-Type"].to_s =~ /xml/
|
48
|
+
end
|
49
|
+
|
50
|
+
protected
|
51
|
+
|
52
|
+
def do_request(http_method, url, data, headers) #:nodoc:
|
53
|
+
update_protocol(url)
|
54
|
+
integration_session.send(http_method, normalize_url(url), data, headers)
|
55
|
+
end
|
56
|
+
|
57
|
+
# remove protocol, host and anchor
|
58
|
+
def normalize_url(href) #:nodoc:
|
59
|
+
uri = URI.parse(href)
|
60
|
+
normalized_url = []
|
61
|
+
normalized_url << "#{uri.scheme}://" if uri.scheme
|
62
|
+
normalized_url << uri.host if uri.host
|
63
|
+
normalized_url << ":#{uri.port}" if uri.port && ![80,443].include?(uri.port)
|
64
|
+
normalized_url << uri.path if uri.path
|
65
|
+
normalized_url << "?#{uri.query}" if uri.query
|
66
|
+
normalized_url.join
|
67
|
+
end
|
68
|
+
|
69
|
+
def update_protocol(href) #:nodoc:
|
70
|
+
if href =~ /^https:/
|
71
|
+
integration_session.https!(true)
|
72
|
+
elsif href =~ /^http:/
|
73
|
+
integration_session.https!(false)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def response #:nodoc:
|
78
|
+
integration_session.response
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module Webrat
|
2
|
-
class SinatraAdapter < RackAdapter
|
3
|
-
def initialize(context)
|
4
|
-
app = context.respond_to?(:app) ? context.app : Sinatra::Application
|
5
|
-
|
6
|
-
super(Rack::Test::Session.new(Rack::MockSession.new(app, "www.example.com")))
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module Webrat
|
2
|
+
class SinatraAdapter < RackAdapter
|
3
|
+
def initialize(context)
|
4
|
+
app = context.respond_to?(:app) ? context.app : Sinatra::Application
|
5
|
+
|
6
|
+
super(Rack::Test::Session.new(Rack::MockSession.new(app, "www.example.com")))
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -1,92 +1,92 @@
|
|
1
|
-
require "webrat/core_extensions/deprecate"
|
2
|
-
|
3
|
-
module Webrat
|
4
|
-
|
5
|
-
# Configures Webrat. If this is not done, Webrat will be created
|
6
|
-
# with all of the default settings.
|
7
|
-
def self.configure(configuration = Webrat.configuration)
|
8
|
-
yield configuration if block_given?
|
9
|
-
@@configuration = configuration
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.configuration # :nodoc:
|
13
|
-
@@configuration ||= Webrat::Configuration.new
|
14
|
-
end
|
15
|
-
|
16
|
-
# Webrat can be configured using the Webrat.configure method. For example:
|
17
|
-
#
|
18
|
-
# Webrat.configure do |config|
|
19
|
-
# config.mode = :sinatra
|
20
|
-
# end
|
21
|
-
class Configuration
|
22
|
-
|
23
|
-
# Webrat's mode, set automatically when requiring webrat/rails, webrat/merb, etc.
|
24
|
-
attr_reader :mode # :nodoc:
|
25
|
-
|
26
|
-
# Save and open pages with error status codes (500-599) in a browser? Defualts to true.
|
27
|
-
attr_writer :open_error_files
|
28
|
-
|
29
|
-
# Which rails environment should the selenium tests be run in? Defaults to selenium.
|
30
|
-
attr_accessor :application_environment
|
31
|
-
webrat_deprecate :selenium_environment, :application_environment
|
32
|
-
webrat_deprecate :selenium_environment=, :application_environment=
|
33
|
-
|
34
|
-
# Which port is the application running on for selenium testing? Defaults to 3001.
|
35
|
-
attr_accessor :application_port
|
36
|
-
webrat_deprecate :selenium_port, :application_port
|
37
|
-
webrat_deprecate :selenium_port=, :application_port=
|
38
|
-
|
39
|
-
# Which underlying app framework we're testing with selenium
|
40
|
-
attr_accessor :application_framework
|
41
|
-
|
42
|
-
# Which server the application is running on for selenium testing? Defaults to localhost
|
43
|
-
attr_accessor :application_address
|
44
|
-
|
45
|
-
# Which server Selenium server is running on. Defaults to nil(server starts in webrat process and runs locally)
|
46
|
-
attr_accessor :selenium_server_address
|
47
|
-
|
48
|
-
# Which server Selenium port is running on. Defaults to 4444
|
49
|
-
attr_accessor :selenium_server_port
|
50
|
-
|
51
|
-
# Set the key that Selenium uses to determine the browser running. Default *firefox
|
52
|
-
attr_accessor :selenium_browser_key
|
53
|
-
|
54
|
-
# Set the timeout for waiting for the browser process to start
|
55
|
-
attr_accessor :selenium_browser_startup_timeout
|
56
|
-
|
57
|
-
# How many redirects to the same URL should be halted as an infinite redirect
|
58
|
-
# loop? Defaults to 10
|
59
|
-
attr_accessor :infinite_redirect_limit
|
60
|
-
|
61
|
-
def initialize # :nodoc:
|
62
|
-
self.open_error_files = true
|
63
|
-
self.application_environment = :test
|
64
|
-
self.application_port = 3001
|
65
|
-
self.application_address = 'localhost'
|
66
|
-
self.application_framework = :rails
|
67
|
-
self.selenium_server_port = 4444
|
68
|
-
self.infinite_redirect_limit = 10
|
69
|
-
self.selenium_browser_key = '*firefox'
|
70
|
-
self.selenium_browser_startup_timeout = 5
|
71
|
-
end
|
72
|
-
|
73
|
-
def open_error_files? #:nodoc:
|
74
|
-
@open_error_files ? true : false
|
75
|
-
end
|
76
|
-
|
77
|
-
# Allows setting of webrat's mode, valid modes are:
|
78
|
-
# :rails, :selenium, :rack, :sinatra, :mechanize, :merb
|
79
|
-
def mode=(mode)
|
80
|
-
@mode = mode.to_sym
|
81
|
-
|
82
|
-
begin
|
83
|
-
require("webrat/integrations/#{mode}")
|
84
|
-
rescue LoadError
|
85
|
-
# Only some modes have integration code that needs to
|
86
|
-
# be loaded, so this is OK
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
1
|
+
require "webrat/core_extensions/deprecate"
|
2
|
+
|
3
|
+
module Webrat
|
4
|
+
|
5
|
+
# Configures Webrat. If this is not done, Webrat will be created
|
6
|
+
# with all of the default settings.
|
7
|
+
def self.configure(configuration = Webrat.configuration)
|
8
|
+
yield configuration if block_given?
|
9
|
+
@@configuration = configuration
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.configuration # :nodoc:
|
13
|
+
@@configuration ||= Webrat::Configuration.new
|
14
|
+
end
|
15
|
+
|
16
|
+
# Webrat can be configured using the Webrat.configure method. For example:
|
17
|
+
#
|
18
|
+
# Webrat.configure do |config|
|
19
|
+
# config.mode = :sinatra
|
20
|
+
# end
|
21
|
+
class Configuration
|
22
|
+
|
23
|
+
# Webrat's mode, set automatically when requiring webrat/rails, webrat/merb, etc.
|
24
|
+
attr_reader :mode # :nodoc:
|
25
|
+
|
26
|
+
# Save and open pages with error status codes (500-599) in a browser? Defualts to true.
|
27
|
+
attr_writer :open_error_files
|
28
|
+
|
29
|
+
# Which rails environment should the selenium tests be run in? Defaults to selenium.
|
30
|
+
attr_accessor :application_environment
|
31
|
+
webrat_deprecate :selenium_environment, :application_environment
|
32
|
+
webrat_deprecate :selenium_environment=, :application_environment=
|
33
|
+
|
34
|
+
# Which port is the application running on for selenium testing? Defaults to 3001.
|
35
|
+
attr_accessor :application_port
|
36
|
+
webrat_deprecate :selenium_port, :application_port
|
37
|
+
webrat_deprecate :selenium_port=, :application_port=
|
38
|
+
|
39
|
+
# Which underlying app framework we're testing with selenium
|
40
|
+
attr_accessor :application_framework
|
41
|
+
|
42
|
+
# Which server the application is running on for selenium testing? Defaults to localhost
|
43
|
+
attr_accessor :application_address
|
44
|
+
|
45
|
+
# Which server Selenium server is running on. Defaults to nil(server starts in webrat process and runs locally)
|
46
|
+
attr_accessor :selenium_server_address
|
47
|
+
|
48
|
+
# Which server Selenium port is running on. Defaults to 4444
|
49
|
+
attr_accessor :selenium_server_port
|
50
|
+
|
51
|
+
# Set the key that Selenium uses to determine the browser running. Default *firefox
|
52
|
+
attr_accessor :selenium_browser_key
|
53
|
+
|
54
|
+
# Set the timeout for waiting for the browser process to start
|
55
|
+
attr_accessor :selenium_browser_startup_timeout
|
56
|
+
|
57
|
+
# How many redirects to the same URL should be halted as an infinite redirect
|
58
|
+
# loop? Defaults to 10
|
59
|
+
attr_accessor :infinite_redirect_limit
|
60
|
+
|
61
|
+
def initialize # :nodoc:
|
62
|
+
self.open_error_files = true
|
63
|
+
self.application_environment = :test
|
64
|
+
self.application_port = 3001
|
65
|
+
self.application_address = 'localhost'
|
66
|
+
self.application_framework = :rails
|
67
|
+
self.selenium_server_port = 4444
|
68
|
+
self.infinite_redirect_limit = 10
|
69
|
+
self.selenium_browser_key = '*firefox'
|
70
|
+
self.selenium_browser_startup_timeout = 5
|
71
|
+
end
|
72
|
+
|
73
|
+
def open_error_files? #:nodoc:
|
74
|
+
@open_error_files ? true : false
|
75
|
+
end
|
76
|
+
|
77
|
+
# Allows setting of webrat's mode, valid modes are:
|
78
|
+
# :rails, :selenium, :rack, :sinatra, :mechanize, :merb
|
79
|
+
def mode=(mode)
|
80
|
+
@mode = mode.to_sym
|
81
|
+
|
82
|
+
begin
|
83
|
+
require("webrat/integrations/#{mode}")
|
84
|
+
rescue LoadError
|
85
|
+
# Only some modes have integration code that needs to
|
86
|
+
# be loaded, so this is OK
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
@@ -1,31 +1,31 @@
|
|
1
|
-
require "webrat/core/elements/element"
|
2
|
-
|
3
|
-
module Webrat
|
4
|
-
class Area < Element #:nodoc:
|
5
|
-
|
6
|
-
def self.xpath_search
|
7
|
-
[".//area"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def click(method = nil, options = {})
|
11
|
-
@session.request_page(absolute_href, :get, {})
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
|
-
def href
|
17
|
-
@element["href"]
|
18
|
-
end
|
19
|
-
|
20
|
-
def absolute_href
|
21
|
-
if href =~ /^\?/
|
22
|
-
"#{@session.current_url}#{href}"
|
23
|
-
elsif href !~ %r{^https?://[\w|.]+(/.*)} && (href !~ /^\//)
|
24
|
-
"#{@session.current_url}/#{href}"
|
25
|
-
else
|
26
|
-
href
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
1
|
+
require "webrat/core/elements/element"
|
2
|
+
|
3
|
+
module Webrat
|
4
|
+
class Area < Element #:nodoc:
|
5
|
+
|
6
|
+
def self.xpath_search
|
7
|
+
[".//area"]
|
8
|
+
end
|
9
|
+
|
10
|
+
def click(method = nil, options = {})
|
11
|
+
@session.request_page(absolute_href, :get, {})
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def href
|
17
|
+
@element["href"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def absolute_href
|
21
|
+
if href =~ /^\?/
|
22
|
+
"#{@session.current_url}#{href}"
|
23
|
+
elsif href !~ %r{^https?://[\w|.]+(/.*)} && (href !~ /^\//)
|
24
|
+
"#{@session.current_url}/#{href}"
|
25
|
+
else
|
26
|
+
href
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|