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.
Files changed (211) hide show
  1. data/.document +3 -3
  2. data/.gitignore +14 -14
  3. data/History.txt +413 -413
  4. data/MIT-LICENSE.txt +19 -19
  5. data/README.rdoc +84 -84
  6. data/Rakefile +187 -187
  7. data/VERSION +1 -1
  8. data/install.rb +1 -1
  9. data/lib/webrat/adapters/mechanize.rb +78 -78
  10. data/lib/webrat/adapters/merb.rb +11 -11
  11. data/lib/webrat/adapters/rack.rb +25 -25
  12. data/lib/webrat/adapters/rails.rb +81 -81
  13. data/lib/webrat/adapters/sinatra.rb +9 -9
  14. data/lib/webrat/core/configuration.rb +92 -92
  15. data/lib/webrat/core/elements/area.rb +31 -31
  16. data/lib/webrat/core/elements/element.rb +33 -33
  17. data/lib/webrat/core/elements/field.rb +487 -487
  18. data/lib/webrat/core/elements/form.rb +103 -103
  19. data/lib/webrat/core/elements/label.rb +31 -31
  20. data/lib/webrat/core/elements/link.rb +93 -93
  21. data/lib/webrat/core/elements/select_option.rb +48 -48
  22. data/lib/webrat/core/locators/area_locator.rb +38 -38
  23. data/lib/webrat/core/locators/button_locator.rb +54 -54
  24. data/lib/webrat/core/locators/field_by_id_locator.rb +37 -37
  25. data/lib/webrat/core/locators/field_labeled_locator.rb +56 -56
  26. data/lib/webrat/core/locators/field_locator.rb +25 -25
  27. data/lib/webrat/core/locators/field_named_locator.rb +41 -41
  28. data/lib/webrat/core/locators/form_locator.rb +19 -19
  29. data/lib/webrat/core/locators/label_locator.rb +34 -34
  30. data/lib/webrat/core/locators/link_locator.rb +74 -74
  31. data/lib/webrat/core/locators/locator.rb +20 -20
  32. data/lib/webrat/core/locators/select_option_locator.rb +59 -59
  33. data/lib/webrat/core/locators.rb +20 -20
  34. data/lib/webrat/core/logging.rb +23 -23
  35. data/lib/webrat/core/matchers/have_content.rb +68 -68
  36. data/lib/webrat/core/matchers/have_selector.rb +74 -74
  37. data/lib/webrat/core/matchers/have_tag.rb +21 -21
  38. data/lib/webrat/core/matchers/have_xpath.rb +122 -122
  39. data/lib/webrat/core/matchers.rb +4 -4
  40. data/lib/webrat/core/methods.rb +64 -64
  41. data/lib/webrat/core/mime.rb +18 -18
  42. data/lib/webrat/core/save_and_open_page.rb +48 -48
  43. data/lib/webrat/core/scope.rb +365 -365
  44. data/lib/webrat/core/session.rb +306 -306
  45. data/lib/webrat/core/xml.rb +72 -72
  46. data/lib/webrat/core.rb +13 -13
  47. data/lib/webrat/core_extensions/blank.rb +58 -58
  48. data/lib/webrat/core_extensions/deprecate.rb +8 -8
  49. data/lib/webrat/core_extensions/detect_mapped.rb +12 -12
  50. data/lib/webrat/core_extensions/meta_class.rb +6 -6
  51. data/lib/webrat/core_extensions/nil_to_param.rb +5 -5
  52. data/lib/webrat/core_extensions/tcp_socket.rb +27 -27
  53. data/lib/webrat/integrations/merb.rb +10 -10
  54. data/lib/webrat/integrations/rails.rb +25 -25
  55. data/lib/webrat/integrations/rspec-rails.rb +10 -10
  56. data/lib/webrat/integrations/selenium.rb +11 -11
  57. data/lib/webrat/merb.rb +9 -9
  58. data/lib/webrat/rspec-rails.rb +2 -2
  59. data/lib/webrat/selenium/application_server_factory.rb +40 -40
  60. data/lib/webrat/selenium/application_servers/external.rb +26 -26
  61. data/lib/webrat/selenium/application_servers/merb.rb +50 -50
  62. data/lib/webrat/selenium/application_servers/rails.rb +3 -6
  63. data/lib/webrat/selenium/application_servers/sinatra.rb +37 -37
  64. data/lib/webrat/selenium/application_servers.rb +5 -5
  65. data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -19
  66. data/lib/webrat/selenium/location_strategy_javascript/label.js +42 -42
  67. data/lib/webrat/selenium/location_strategy_javascript/webrat.js +6 -6
  68. data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +32 -32
  69. data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -15
  70. data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -5
  71. data/lib/webrat/selenium/matchers/have_content.rb +66 -66
  72. data/lib/webrat/selenium/matchers/have_selector.rb +49 -49
  73. data/lib/webrat/selenium/matchers/have_tag.rb +72 -72
  74. data/lib/webrat/selenium/matchers/have_xpath.rb +45 -45
  75. data/lib/webrat/selenium/matchers.rb +4 -4
  76. data/lib/webrat/selenium/selenium_extensions.js +5 -5
  77. data/lib/webrat/selenium/selenium_rc_server.rb +86 -86
  78. data/lib/webrat/selenium/selenium_session.rb +267 -272
  79. data/lib/webrat/selenium/silence_stream.rb +18 -18
  80. data/lib/webrat/selenium.rb +70 -70
  81. data/lib/webrat.rb +18 -18
  82. data/spec/fakes/test_adapter.rb +37 -37
  83. data/spec/integration/mechanize/Rakefile +6 -6
  84. data/spec/integration/mechanize/config.ru +1 -1
  85. data/spec/integration/mechanize/sample_app.rb +20 -20
  86. data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -22
  87. data/spec/integration/mechanize/spec/spec_helper.rb +27 -27
  88. data/spec/integration/merb/.gitignore +20 -20
  89. data/spec/integration/merb/Rakefile +35 -35
  90. data/spec/integration/merb/app/controllers/application.rb +2 -2
  91. data/spec/integration/merb/app/controllers/exceptions.rb +13 -13
  92. data/spec/integration/merb/app/controllers/testing.rb +27 -27
  93. data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -63
  94. data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -47
  95. data/spec/integration/merb/app/views/layout/application.html.erb +11 -11
  96. data/spec/integration/merb/app/views/testing/show_form.html.erb +26 -26
  97. data/spec/integration/merb/app/views/testing/upload.html.erb +8 -8
  98. data/spec/integration/merb/config/environments/development.rb +15 -15
  99. data/spec/integration/merb/config/environments/rake.rb +11 -11
  100. data/spec/integration/merb/config/environments/test.rb +14 -14
  101. data/spec/integration/merb/config/init.rb +25 -25
  102. data/spec/integration/merb/config/rack.rb +11 -11
  103. data/spec/integration/merb/config/router.rb +34 -34
  104. data/spec/integration/merb/spec/spec.opts +1 -1
  105. data/spec/integration/merb/spec/spec_helper.rb +26 -26
  106. data/spec/integration/merb/spec/webrat_spec.rb +39 -39
  107. data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -31
  108. data/spec/integration/merb/tasks/merb.thor/common.rb +64 -64
  109. data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -124
  110. data/spec/integration/merb/tasks/merb.thor/main.thor +149 -149
  111. data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -93
  112. data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -40
  113. data/spec/integration/rack/Rakefile +5 -5
  114. data/spec/integration/rack/app.rb +89 -89
  115. data/spec/integration/rack/test/helper.rb +21 -21
  116. data/spec/integration/rack/test/webrat_rack_test.rb +73 -73
  117. data/spec/integration/rails/.gitignore +3 -3
  118. data/spec/integration/rails/Rakefile +30 -30
  119. data/spec/integration/rails/app/controllers/application.rb +15 -15
  120. data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -7
  121. data/spec/integration/rails/app/controllers/fields_controller.rb +4 -4
  122. data/spec/integration/rails/app/controllers/links_controller.rb +7 -7
  123. data/spec/integration/rails/app/controllers/webrat_controller.rb +46 -46
  124. data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -2
  125. data/spec/integration/rails/app/helpers/fields_helper.rb +2 -2
  126. data/spec/integration/rails/app/helpers/links_helper.rb +2 -2
  127. data/spec/integration/rails/app/views/buttons/show.html.erb +10 -10
  128. data/spec/integration/rails/app/views/fields/show.html.erb +8 -8
  129. data/spec/integration/rails/app/views/links/show.html.erb +5 -5
  130. data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +3 -3
  131. data/spec/integration/rails/app/views/webrat/buttons.html.erb +10 -10
  132. data/spec/integration/rails/app/views/webrat/form.html.erb +27 -27
  133. data/spec/integration/rails/app/views/webrat/within.html.erb +2 -2
  134. data/spec/integration/rails/config/boot.rb +109 -109
  135. data/spec/integration/rails/config/environment.rb +12 -12
  136. data/spec/integration/rails/config/environments/development.rb +17 -17
  137. data/spec/integration/rails/config/environments/selenium.rb +22 -22
  138. data/spec/integration/rails/config/environments/test.rb +22 -22
  139. data/spec/integration/rails/config/initializers/inflections.rb +10 -10
  140. data/spec/integration/rails/config/initializers/mime_types.rb +5 -5
  141. data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -17
  142. data/spec/integration/rails/config/locales/en.yml +4 -4
  143. data/spec/integration/rails/config/routes.rb +19 -19
  144. data/spec/integration/rails/public/404.html +29 -29
  145. data/spec/integration/rails/public/422.html +29 -29
  146. data/spec/integration/rails/public/500.html +33 -33
  147. data/spec/integration/rails/script/about +3 -3
  148. data/spec/integration/rails/script/console +3 -3
  149. data/spec/integration/rails/script/dbconsole +3 -3
  150. data/spec/integration/rails/script/destroy +3 -3
  151. data/spec/integration/rails/script/generate +3 -3
  152. data/spec/integration/rails/script/performance/benchmarker +3 -3
  153. data/spec/integration/rails/script/performance/profiler +3 -3
  154. data/spec/integration/rails/script/performance/request +3 -3
  155. data/spec/integration/rails/script/plugin +3 -3
  156. data/spec/integration/rails/script/process/inspector +3 -3
  157. data/spec/integration/rails/script/process/reaper +3 -3
  158. data/spec/integration/rails/script/process/spawner +3 -3
  159. data/spec/integration/rails/script/runner +3 -3
  160. data/spec/integration/rails/script/server +3 -3
  161. data/spec/integration/rails/test/integration/button_click_test.rb +80 -80
  162. data/spec/integration/rails/test/integration/fill_in_test.rb +24 -24
  163. data/spec/integration/rails/test/integration/link_click_test.rb +27 -27
  164. data/spec/integration/rails/test/integration/webrat_test.rb +122 -122
  165. data/spec/integration/rails/test/test_helper.rb +26 -26
  166. data/spec/integration/sinatra/Rakefile +5 -5
  167. data/spec/integration/sinatra/classic_app.rb +64 -64
  168. data/spec/integration/sinatra/modular_app.rb +16 -16
  169. data/spec/integration/sinatra/test/classic_app_test.rb +37 -37
  170. data/spec/integration/sinatra/test/modular_app_test.rb +18 -18
  171. data/spec/integration/sinatra/test/test_helper.rb +17 -17
  172. data/spec/private/core/configuration_spec.rb +87 -87
  173. data/spec/private/core/field_spec.rb +85 -85
  174. data/spec/private/core/link_spec.rb +24 -24
  175. data/spec/private/core/session_spec.rb +200 -200
  176. data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -73
  177. data/spec/private/nokogiri_spec.rb +77 -77
  178. data/spec/private/rails/attaches_file_spec.rb +81 -81
  179. data/spec/private/rails/rails_adapter_spec.rb +86 -86
  180. data/spec/private/selenium/application_servers/rails_spec.rb +26 -26
  181. data/spec/public/basic_auth_spec.rb +24 -24
  182. data/spec/public/check_spec.rb +191 -191
  183. data/spec/public/choose_spec.rb +118 -118
  184. data/spec/public/click_area_spec.rb +106 -106
  185. data/spec/public/click_button_spec.rb +494 -494
  186. data/spec/public/click_link_spec.rb +511 -511
  187. data/spec/public/fill_in_spec.rb +224 -224
  188. data/spec/public/locators/field_by_xpath_spec.rb +19 -19
  189. data/spec/public/locators/field_labeled_spec.rb +172 -172
  190. data/spec/public/locators/field_with_id_spec.rb +16 -16
  191. data/spec/public/matchers/contain_spec.rb +114 -114
  192. data/spec/public/matchers/have_selector_spec.rb +146 -146
  193. data/spec/public/matchers/have_tag_spec.rb +39 -39
  194. data/spec/public/matchers/have_xpath_spec.rb +136 -136
  195. data/spec/public/reload_spec.rb +10 -10
  196. data/spec/public/save_and_open_spec.rb +70 -70
  197. data/spec/public/select_date_spec.rb +112 -112
  198. data/spec/public/select_datetime_spec.rb +137 -137
  199. data/spec/public/select_spec.rb +455 -455
  200. data/spec/public/select_time_spec.rb +100 -100
  201. data/spec/public/selenium/application_server_factory_spec.rb +49 -49
  202. data/spec/public/selenium/application_servers/external_spec.rb +12 -12
  203. data/spec/public/selenium/selenium_session_spec.rb +37 -37
  204. data/spec/public/set_hidden_field_spec.rb +5 -5
  205. data/spec/public/submit_form_spec.rb +5 -5
  206. data/spec/public/visit_spec.rb +58 -58
  207. data/spec/public/within_spec.rb +177 -177
  208. data/spec/spec.opts +1 -1
  209. data/spec/spec_helper.rb +54 -54
  210. data/webrat.gemspec +360 -0
  211. 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
@@ -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
@@ -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