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,74 +1,74 @@
1
- require "webrat/core/locators/locator"
2
-
3
- module Webrat
4
- module Locators
5
-
6
- class LinkLocator < Locator # :nodoc:
7
-
8
- def locate
9
- Link.load(@session, link_element)
10
- end
11
-
12
- def link_element
13
- matching_links.min { |a, b| a.inner_text.length <=> b.inner_text.length }
14
- end
15
-
16
- def matching_links
17
- @matching_links ||= link_elements.select do |link_element|
18
- matches_text?(link_element) ||
19
- matches_id?(link_element)
20
- end
21
- end
22
-
23
- def matches_text?(link)
24
- if @value.is_a?(Regexp)
25
- matcher = @value
26
- else
27
- matcher = /#{Regexp.escape(@value.to_s)}/i
28
- end
29
-
30
- replace_nbsp(link.inner_text) =~ matcher ||
31
- replace_nbsp_ref(link.inner_html) =~ matcher ||
32
- link["title"] =~ matcher
33
- end
34
-
35
- def matches_id?(link)
36
- if @value.is_a?(Regexp)
37
- link["id"] =~ @value ? true : false
38
- else
39
- link["id"] == @value ? true : false
40
- end
41
- end
42
-
43
- def link_elements
44
- @dom.xpath(*Link.xpath_search)
45
- end
46
-
47
- def replace_nbsp(str)
48
- if str.respond_to?(:valid_encoding?)
49
- if str.valid_encoding?
50
- str.gsub(/\xc2\xa0/u, ' ')
51
- else
52
- str.force_encoding('UTF-8').gsub(/\xc2\xa0/u, ' ')
53
- end
54
- else
55
- str.gsub(/\xc2\xa0/u, ' ')
56
- end
57
- end
58
-
59
- def replace_nbsp_ref(str)
60
- str.gsub('&#xA0;',' ').gsub('&nbsp;', ' ')
61
- end
62
-
63
- def error_message
64
- "Could not find link with text or title or id #{@value.inspect}"
65
- end
66
-
67
- end
68
-
69
- def find_link(text_or_title_or_id) #:nodoc:
70
- LinkLocator.new(@session, dom, text_or_title_or_id).locate!
71
- end
72
-
73
- end
74
- end
1
+ require "webrat/core/locators/locator"
2
+
3
+ module Webrat
4
+ module Locators
5
+
6
+ class LinkLocator < Locator # :nodoc:
7
+
8
+ def locate
9
+ Link.load(@session, link_element)
10
+ end
11
+
12
+ def link_element
13
+ matching_links.min { |a, b| a.inner_text.length <=> b.inner_text.length }
14
+ end
15
+
16
+ def matching_links
17
+ @matching_links ||= link_elements.select do |link_element|
18
+ matches_text?(link_element) ||
19
+ matches_id?(link_element)
20
+ end
21
+ end
22
+
23
+ def matches_text?(link)
24
+ if @value.is_a?(Regexp)
25
+ matcher = @value
26
+ else
27
+ matcher = /#{Regexp.escape(@value.to_s)}/i
28
+ end
29
+
30
+ replace_nbsp(link.inner_text) =~ matcher ||
31
+ replace_nbsp_ref(link.inner_html) =~ matcher ||
32
+ link["title"] =~ matcher
33
+ end
34
+
35
+ def matches_id?(link)
36
+ if @value.is_a?(Regexp)
37
+ link["id"] =~ @value ? true : false
38
+ else
39
+ link["id"] == @value ? true : false
40
+ end
41
+ end
42
+
43
+ def link_elements
44
+ @dom.xpath(*Link.xpath_search)
45
+ end
46
+
47
+ def replace_nbsp(str)
48
+ if str.respond_to?(:valid_encoding?)
49
+ if str.valid_encoding?
50
+ str.gsub(/\xc2\xa0/u, ' ')
51
+ else
52
+ str.force_encoding('UTF-8').gsub(/\xc2\xa0/u, ' ')
53
+ end
54
+ else
55
+ str.gsub(/\xc2\xa0/u, ' ')
56
+ end
57
+ end
58
+
59
+ def replace_nbsp_ref(str)
60
+ str.gsub('&#xA0;',' ').gsub('&nbsp;', ' ')
61
+ end
62
+
63
+ def error_message
64
+ "Could not find link with text or title or id #{@value.inspect}"
65
+ end
66
+
67
+ end
68
+
69
+ def find_link(text_or_title_or_id) #:nodoc:
70
+ LinkLocator.new(@session, dom, text_or_title_or_id).locate!
71
+ end
72
+
73
+ end
74
+ end
@@ -1,20 +1,20 @@
1
- module Webrat
2
- module Locators
3
-
4
- class Locator # :nodoc:
5
-
6
- def initialize(session, dom, value, *field_types)
7
- @session = session
8
- @dom = dom
9
- @value = value
10
- @field_types = field_types
11
- end
12
-
13
- def locate!
14
- locate || raise(NotFoundError.new(error_message))
15
- end
16
-
17
- end
18
-
19
- end
20
- end
1
+ module Webrat
2
+ module Locators
3
+
4
+ class Locator # :nodoc:
5
+
6
+ def initialize(session, dom, value, *field_types)
7
+ @session = session
8
+ @dom = dom
9
+ @value = value
10
+ @field_types = field_types
11
+ end
12
+
13
+ def locate!
14
+ locate || raise(NotFoundError.new(error_message))
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+ end
@@ -1,59 +1,59 @@
1
- require "webrat/core_extensions/detect_mapped"
2
- require "webrat/core/locators/locator"
3
-
4
- module Webrat
5
- module Locators
6
-
7
- class SelectOptionLocator < Locator # :nodoc:
8
-
9
- def initialize(session, dom, option_text, id_or_name_or_label)
10
- @session = session
11
- @dom = dom
12
- @option_text = option_text
13
- @id_or_name_or_label = id_or_name_or_label
14
- end
15
-
16
- def locate
17
- if @id_or_name_or_label
18
- field = FieldLocator.new(@session, @dom, @id_or_name_or_label, SelectField).locate!
19
-
20
- field.options.detect do |o|
21
- if @option_text.is_a?(Regexp)
22
- o.element.inner_text =~ @option_text
23
- else
24
- o.inner_text == @option_text.to_s
25
- end
26
- end
27
- else
28
- option_element = option_elements.detect do |o|
29
- if @option_text.is_a?(Regexp)
30
- o.inner_text =~ @option_text
31
- else
32
- o.inner_text == @option_text.to_s
33
- end
34
- end
35
-
36
- SelectOption.load(@session, option_element)
37
- end
38
- end
39
-
40
- def option_elements
41
- @dom.xpath(*SelectOption.xpath_search)
42
- end
43
-
44
- def error_message
45
- if @id_or_name_or_label
46
- "The '#{@option_text}' option was not found in the #{@id_or_name_or_label.inspect} select box"
47
- else
48
- "Could not find option #{@option_text.inspect}"
49
- end
50
- end
51
-
52
- end
53
-
54
- def select_option(option_text, id_or_name_or_label = nil) #:nodoc:
55
- SelectOptionLocator.new(@session, dom, option_text, id_or_name_or_label).locate!
56
- end
57
-
58
- end
59
- end
1
+ require "webrat/core_extensions/detect_mapped"
2
+ require "webrat/core/locators/locator"
3
+
4
+ module Webrat
5
+ module Locators
6
+
7
+ class SelectOptionLocator < Locator # :nodoc:
8
+
9
+ def initialize(session, dom, option_text, id_or_name_or_label)
10
+ @session = session
11
+ @dom = dom
12
+ @option_text = option_text
13
+ @id_or_name_or_label = id_or_name_or_label
14
+ end
15
+
16
+ def locate
17
+ if @id_or_name_or_label
18
+ field = FieldLocator.new(@session, @dom, @id_or_name_or_label, SelectField).locate!
19
+
20
+ field.options.detect do |o|
21
+ if @option_text.is_a?(Regexp)
22
+ o.element.inner_text =~ @option_text
23
+ else
24
+ o.inner_text == @option_text.to_s
25
+ end
26
+ end
27
+ else
28
+ option_element = option_elements.detect do |o|
29
+ if @option_text.is_a?(Regexp)
30
+ o.inner_text =~ @option_text
31
+ else
32
+ o.inner_text == @option_text.to_s
33
+ end
34
+ end
35
+
36
+ SelectOption.load(@session, option_element)
37
+ end
38
+ end
39
+
40
+ def option_elements
41
+ @dom.xpath(*SelectOption.xpath_search)
42
+ end
43
+
44
+ def error_message
45
+ if @id_or_name_or_label
46
+ "The '#{@option_text}' option was not found in the #{@id_or_name_or_label.inspect} select box"
47
+ else
48
+ "Could not find option #{@option_text.inspect}"
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ def select_option(option_text, id_or_name_or_label = nil) #:nodoc:
55
+ SelectOptionLocator.new(@session, dom, option_text, id_or_name_or_label).locate!
56
+ end
57
+
58
+ end
59
+ end
@@ -1,20 +1,20 @@
1
- require "webrat/core/locators/area_locator"
2
- require "webrat/core/locators/button_locator"
3
- require "webrat/core/locators/field_labeled_locator"
4
- require "webrat/core/locators/label_locator"
5
- require "webrat/core/locators/field_named_locator"
6
- require "webrat/core/locators/field_by_id_locator"
7
- require "webrat/core/locators/select_option_locator"
8
- require "webrat/core/locators/link_locator"
9
- require "webrat/core/locators/field_locator"
10
- require "webrat/core/locators/form_locator"
11
-
12
- module Webrat
13
- module Locators
14
-
15
- def field_by_xpath(xpath)
16
- Field.load(@session, dom.xpath(xpath).first)
17
- end
18
-
19
- end
20
- end
1
+ require "webrat/core/locators/area_locator"
2
+ require "webrat/core/locators/button_locator"
3
+ require "webrat/core/locators/field_labeled_locator"
4
+ require "webrat/core/locators/label_locator"
5
+ require "webrat/core/locators/field_named_locator"
6
+ require "webrat/core/locators/field_by_id_locator"
7
+ require "webrat/core/locators/select_option_locator"
8
+ require "webrat/core/locators/link_locator"
9
+ require "webrat/core/locators/field_locator"
10
+ require "webrat/core/locators/form_locator"
11
+
12
+ module Webrat
13
+ module Locators
14
+
15
+ def field_by_xpath(xpath)
16
+ Field.load(@session, dom.xpath(xpath).first)
17
+ end
18
+
19
+ end
20
+ end
@@ -1,23 +1,23 @@
1
- require "logger"
2
-
3
- module Webrat
4
- module Logging #:nodoc:
5
-
6
- def debug_log(message) # :nodoc:
7
- return unless logger
8
- logger.debug message
9
- end
10
-
11
- def logger # :nodoc:
12
- case Webrat.configuration.mode
13
- when :rails
14
- defined?(RAILS_DEFAULT_LOGGER) ? RAILS_DEFAULT_LOGGER : nil
15
- when :merb
16
- ::Merb.logger
17
- else
18
- @logger ||= ::Logger.new("webrat.log")
19
- end
20
- end
21
-
22
- end
23
- end
1
+ require "logger"
2
+
3
+ module Webrat
4
+ module Logging #:nodoc:
5
+
6
+ def debug_log(message) # :nodoc:
7
+ return unless logger
8
+ logger.debug message
9
+ end
10
+
11
+ def logger # :nodoc:
12
+ case Webrat.configuration.mode
13
+ when :rails
14
+ defined?(RAILS_DEFAULT_LOGGER) ? RAILS_DEFAULT_LOGGER : nil
15
+ when :merb
16
+ ::Merb.logger
17
+ else
18
+ @logger ||= ::Logger.new("webrat.log")
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -1,68 +1,68 @@
1
- module Webrat
2
- module Matchers
3
-
4
- class HasContent #:nodoc:
5
- def initialize(content)
6
- @content = content
7
- end
8
-
9
- def matches?(stringlike)
10
- @document = Webrat::XML.document(stringlike)
11
- @element = @document.inner_text
12
-
13
- case @content
14
- when String
15
- @element.include?(@content)
16
- when Regexp
17
- @element.match(@content)
18
- end
19
- end
20
-
21
- # ==== Returns
22
- # String:: The failure message.
23
- def failure_message
24
- "expected the following element's content to #{content_message}:\n#{squeeze_space(@element)}"
25
- end
26
-
27
- # ==== Returns
28
- # String:: The failure message to be displayed in negative matches.
29
- def negative_failure_message
30
- "expected the following element's content to not #{content_message}:\n#{squeeze_space(@element)}"
31
- end
32
-
33
- def squeeze_space(inner_text)
34
- inner_text.gsub(/^\s*$/, "").squeeze("\n")
35
- end
36
-
37
- def content_message
38
- case @content
39
- when String
40
- "include \"#{@content}\""
41
- when Regexp
42
- "match #{@content.inspect}"
43
- end
44
- end
45
- end
46
-
47
- # Matches the contents of an HTML document with
48
- # whatever string is supplied
49
- def contain(content)
50
- HasContent.new(content)
51
- end
52
-
53
- # Asserts that the body of the response contain
54
- # the supplied string or regexp
55
- def assert_contain(content)
56
- hc = HasContent.new(content)
57
- assert hc.matches?(response_body), hc.failure_message
58
- end
59
-
60
- # Asserts that the body of the response
61
- # does not contain the supplied string or regepx
62
- def assert_not_contain(content)
63
- hc = HasContent.new(content)
64
- assert !hc.matches?(response_body), hc.negative_failure_message
65
- end
66
-
67
- end
68
- end
1
+ module Webrat
2
+ module Matchers
3
+
4
+ class HasContent #:nodoc:
5
+ def initialize(content)
6
+ @content = content
7
+ end
8
+
9
+ def matches?(stringlike)
10
+ @document = Webrat::XML.document(stringlike)
11
+ @element = @document.inner_text
12
+
13
+ case @content
14
+ when String
15
+ @element.include?(@content)
16
+ when Regexp
17
+ @element.match(@content)
18
+ end
19
+ end
20
+
21
+ # ==== Returns
22
+ # String:: The failure message.
23
+ def failure_message
24
+ "expected the following element's content to #{content_message}:\n#{squeeze_space(@element)}"
25
+ end
26
+
27
+ # ==== Returns
28
+ # String:: The failure message to be displayed in negative matches.
29
+ def negative_failure_message
30
+ "expected the following element's content to not #{content_message}:\n#{squeeze_space(@element)}"
31
+ end
32
+
33
+ def squeeze_space(inner_text)
34
+ inner_text.gsub(/^\s*$/, "").squeeze("\n")
35
+ end
36
+
37
+ def content_message
38
+ case @content
39
+ when String
40
+ "include \"#{@content}\""
41
+ when Regexp
42
+ "match #{@content.inspect}"
43
+ end
44
+ end
45
+ end
46
+
47
+ # Matches the contents of an HTML document with
48
+ # whatever string is supplied
49
+ def contain(content)
50
+ HasContent.new(content)
51
+ end
52
+
53
+ # Asserts that the body of the response contain
54
+ # the supplied string or regexp
55
+ def assert_contain(content)
56
+ hc = HasContent.new(content)
57
+ assert hc.matches?(response_body), hc.failure_message
58
+ end
59
+
60
+ # Asserts that the body of the response
61
+ # does not contain the supplied string or regepx
62
+ def assert_not_contain(content)
63
+ hc = HasContent.new(content)
64
+ assert !hc.matches?(response_body), hc.negative_failure_message
65
+ end
66
+
67
+ end
68
+ end