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,224 +1,224 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- describe "fill_in" do
4
- it "should work with textareas" do
5
- with_html <<-HTML
6
- <html>
7
- <form method="post" action="/login">
8
- <label for="user_text">User Text</label>
9
- <textarea id="user_text" name="user[text]"></textarea>
10
- <input type="submit" />
11
- </form>
12
- </html>
13
- HTML
14
- webrat_session.should_receive(:post).with("/login", "user" => {"text" => "filling text area"})
15
- fill_in "User Text", :with => "filling text area"
16
- click_button
17
- end
18
-
19
- it "should support multiline values" do
20
- with_html <<-HTML
21
- <html>
22
- <form method="post" action="/login">
23
- <label for="user_text">User Text</label>
24
- <textarea id="user_text" name="user[text]"></textarea>
25
- <input type="submit" />
26
- </form>
27
- </html>
28
- HTML
29
- webrat_session.should_receive(:post).with("/login", "user" => {"text" => "One\nTwo"})
30
- fill_in "User Text", :with => "One\nTwo"
31
- click_button
32
- end
33
-
34
- it "should work with password fields" do
35
- with_html <<-HTML
36
- <html>
37
- <form method="post" action="/login">
38
- <input id="user_text" name="user[text]" type="password" />
39
- <input type="submit" />
40
- </form>
41
- </html>
42
- HTML
43
- webrat_session.should_receive(:post).with("/login", "user" => {"text" => "pass"})
44
- fill_in "user_text", :with => "pass"
45
- click_button
46
- end
47
-
48
- it "should fail if input not found" do
49
- with_html <<-HTML
50
- <html>
51
- <form method="get" action="/login">
52
- </form>
53
- </html>
54
- HTML
55
-
56
- lambda { fill_in "Email", :with => "foo@example.com" }.should raise_error(Webrat::NotFoundError)
57
- end
58
-
59
- it "should fail if input is disabled" do
60
- with_html <<-HTML
61
- <html>
62
- <form method="get" action="/login">
63
- <label for="user_email">Email</label>
64
- <input id="user_email" name="user[email]" type="text" disabled="disabled" />
65
- <input type="submit" />
66
- </form>
67
- </html>
68
- HTML
69
-
70
- lambda { fill_in "Email", :with => "foo@example.com" }.should raise_error(Webrat::DisabledFieldError)
71
- end
72
-
73
- it "should allow overriding default form values" do
74
- with_html <<-HTML
75
- <html>
76
- <form method="post" action="/login">
77
- <label for="user_email">Email</label>
78
- <input id="user_email" name="user[email]" value="test@example.com" type="text" />
79
- <input type="submit" />
80
- </form>
81
- </html>
82
- HTML
83
- webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
84
- fill_in "user[email]", :with => "foo@example.com"
85
- click_button
86
- end
87
-
88
- it "should choose the shortest label match" do
89
- with_html <<-HTML
90
- <html>
91
- <form method="post" action="/login">
92
- <label for="user_mail1">Some other mail</label>
93
- <input id="user_mail1" name="user[mail1]" type="text" />
94
- <label for="user_mail2">Some mail</label>
95
- <input id="user_mail2" name="user[mail2]" type="text" />
96
- <input type="submit" />
97
- </form>
98
- </html>
99
- HTML
100
-
101
- webrat_session.should_receive(:post).with("/login", "user" => {"mail1" => "", "mail2" => "value"})
102
- fill_in "Some", :with => "value"
103
- click_button
104
- end
105
-
106
- it "should choose the first label match if closest is a tie" do
107
- with_html <<-HTML
108
- <html>
109
- <form method="post" action="/login">
110
- <label for="user_mail1">Some mail one</label>
111
- <input id="user_mail1" name="user[mail1]" type="text" />
112
- <label for="user_mail2">Some mail two</label>
113
- <input id="user_mail2" name="user[mail2]" type="text" />
114
- <input type="submit" />
115
- </form>
116
- </html>
117
- HTML
118
-
119
- webrat_session.should_receive(:post).with("/login", "user" => {"mail1" => "value", "mail2" => ""})
120
- fill_in "Some mail", :with => "value"
121
- click_button
122
- end
123
-
124
- it "should anchor label matches to start of label" do
125
- with_html <<-HTML
126
- <html>
127
- <form method="post" action="/login">
128
- <label for="user_email">Some mail</label>
129
- <input id="user_email" name="user[email]" value="test@example.com" type="text" />
130
- </form>
131
- </html>
132
- HTML
133
-
134
- lambda { fill_in "mail", :with => "value" }.should raise_error(Webrat::NotFoundError)
135
- end
136
-
137
- it "should anchor label matches to word boundaries" do
138
- with_html <<-HTML
139
- <html>
140
- <form method="post" action="/login">
141
- <label for="user_email">Emailtastic</label>
142
- <input id="user_email" name="user[email]" value="test@example.com" type="text" />
143
- </form>
144
- </html>
145
- HTML
146
-
147
- lambda { fill_in "Email", :with => "value" }.should raise_error(Webrat::NotFoundError)
148
- end
149
-
150
- it "should work with inputs nested in labels" do
151
- with_html <<-HTML
152
- <html>
153
- <form method="post" action="/login">
154
- <label>
155
- Email
156
- <input id="user_email" name="user[email]" value="test@example.com" type="text" />
157
- </label>
158
- <input type="submit" />
159
- </form>
160
- </html>
161
- HTML
162
- webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
163
- fill_in "Email", :with => "foo@example.com"
164
- click_button
165
- end
166
-
167
- it "should work with full input names" do
168
- with_html <<-HTML
169
- <html>
170
- <form method="post" action="/login">
171
- <input id="user_email" name="user[email]" type="text" />
172
- <input type="submit" />
173
- </form>
174
- </html>
175
- HTML
176
- webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
177
- fill_in "user[email]", :with => "foo@example.com"
178
- click_button
179
- end
180
-
181
- it "should work if the input type is not set" do
182
- with_html <<-HTML
183
- <html>
184
- <form method="post" action="/login">
185
- <input id="user_email" name="user[email]" />
186
- <input type="submit" />
187
- </form>
188
- </html>
189
- HTML
190
- webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
191
- fill_in "user[email]", :with => "foo@example.com"
192
- click_button
193
- end
194
-
195
- it "should work with symbols" do
196
- with_html <<-HTML
197
- <html>
198
- <form method="post" action="/login">
199
- <label for="user_email">Email</label>
200
- <input id="user_email" name="user[email]" type="text" />
201
- <input type="submit" />
202
- </form>
203
- </html>
204
- HTML
205
- webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
206
- fill_in :email, :with => "foo@example.com"
207
- click_button
208
- end
209
-
210
- it "should escape field values" do
211
- with_html <<-HTML
212
- <html>
213
- <form method="post" action="/users">
214
- <label for="user_phone">Phone</label>
215
- <input id="user_phone" name="user[phone]" type="text" />
216
- <input type="submit" />
217
- </form>
218
- </html>
219
- HTML
220
- webrat_session.should_receive(:post).with("/users", "user" => {"phone" => "+1 22 33"})
221
- fill_in 'Phone', :with => "+1 22 33"
222
- click_button
223
- end
224
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "fill_in" do
4
+ it "should work with textareas" do
5
+ with_html <<-HTML
6
+ <html>
7
+ <form method="post" action="/login">
8
+ <label for="user_text">User Text</label>
9
+ <textarea id="user_text" name="user[text]"></textarea>
10
+ <input type="submit" />
11
+ </form>
12
+ </html>
13
+ HTML
14
+ webrat_session.should_receive(:post).with("/login", "user" => {"text" => "filling text area"})
15
+ fill_in "User Text", :with => "filling text area"
16
+ click_button
17
+ end
18
+
19
+ it "should support multiline values" do
20
+ with_html <<-HTML
21
+ <html>
22
+ <form method="post" action="/login">
23
+ <label for="user_text">User Text</label>
24
+ <textarea id="user_text" name="user[text]"></textarea>
25
+ <input type="submit" />
26
+ </form>
27
+ </html>
28
+ HTML
29
+ webrat_session.should_receive(:post).with("/login", "user" => {"text" => "One\nTwo"})
30
+ fill_in "User Text", :with => "One\nTwo"
31
+ click_button
32
+ end
33
+
34
+ it "should work with password fields" do
35
+ with_html <<-HTML
36
+ <html>
37
+ <form method="post" action="/login">
38
+ <input id="user_text" name="user[text]" type="password" />
39
+ <input type="submit" />
40
+ </form>
41
+ </html>
42
+ HTML
43
+ webrat_session.should_receive(:post).with("/login", "user" => {"text" => "pass"})
44
+ fill_in "user_text", :with => "pass"
45
+ click_button
46
+ end
47
+
48
+ it "should fail if input not found" do
49
+ with_html <<-HTML
50
+ <html>
51
+ <form method="get" action="/login">
52
+ </form>
53
+ </html>
54
+ HTML
55
+
56
+ lambda { fill_in "Email", :with => "foo@example.com" }.should raise_error(Webrat::NotFoundError)
57
+ end
58
+
59
+ it "should fail if input is disabled" do
60
+ with_html <<-HTML
61
+ <html>
62
+ <form method="get" action="/login">
63
+ <label for="user_email">Email</label>
64
+ <input id="user_email" name="user[email]" type="text" disabled="disabled" />
65
+ <input type="submit" />
66
+ </form>
67
+ </html>
68
+ HTML
69
+
70
+ lambda { fill_in "Email", :with => "foo@example.com" }.should raise_error(Webrat::DisabledFieldError)
71
+ end
72
+
73
+ it "should allow overriding default form values" do
74
+ with_html <<-HTML
75
+ <html>
76
+ <form method="post" action="/login">
77
+ <label for="user_email">Email</label>
78
+ <input id="user_email" name="user[email]" value="test@example.com" type="text" />
79
+ <input type="submit" />
80
+ </form>
81
+ </html>
82
+ HTML
83
+ webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
84
+ fill_in "user[email]", :with => "foo@example.com"
85
+ click_button
86
+ end
87
+
88
+ it "should choose the shortest label match" do
89
+ with_html <<-HTML
90
+ <html>
91
+ <form method="post" action="/login">
92
+ <label for="user_mail1">Some other mail</label>
93
+ <input id="user_mail1" name="user[mail1]" type="text" />
94
+ <label for="user_mail2">Some mail</label>
95
+ <input id="user_mail2" name="user[mail2]" type="text" />
96
+ <input type="submit" />
97
+ </form>
98
+ </html>
99
+ HTML
100
+
101
+ webrat_session.should_receive(:post).with("/login", "user" => {"mail1" => "", "mail2" => "value"})
102
+ fill_in "Some", :with => "value"
103
+ click_button
104
+ end
105
+
106
+ it "should choose the first label match if closest is a tie" do
107
+ with_html <<-HTML
108
+ <html>
109
+ <form method="post" action="/login">
110
+ <label for="user_mail1">Some mail one</label>
111
+ <input id="user_mail1" name="user[mail1]" type="text" />
112
+ <label for="user_mail2">Some mail two</label>
113
+ <input id="user_mail2" name="user[mail2]" type="text" />
114
+ <input type="submit" />
115
+ </form>
116
+ </html>
117
+ HTML
118
+
119
+ webrat_session.should_receive(:post).with("/login", "user" => {"mail1" => "value", "mail2" => ""})
120
+ fill_in "Some mail", :with => "value"
121
+ click_button
122
+ end
123
+
124
+ it "should anchor label matches to start of label" do
125
+ with_html <<-HTML
126
+ <html>
127
+ <form method="post" action="/login">
128
+ <label for="user_email">Some mail</label>
129
+ <input id="user_email" name="user[email]" value="test@example.com" type="text" />
130
+ </form>
131
+ </html>
132
+ HTML
133
+
134
+ lambda { fill_in "mail", :with => "value" }.should raise_error(Webrat::NotFoundError)
135
+ end
136
+
137
+ it "should anchor label matches to word boundaries" do
138
+ with_html <<-HTML
139
+ <html>
140
+ <form method="post" action="/login">
141
+ <label for="user_email">Emailtastic</label>
142
+ <input id="user_email" name="user[email]" value="test@example.com" type="text" />
143
+ </form>
144
+ </html>
145
+ HTML
146
+
147
+ lambda { fill_in "Email", :with => "value" }.should raise_error(Webrat::NotFoundError)
148
+ end
149
+
150
+ it "should work with inputs nested in labels" do
151
+ with_html <<-HTML
152
+ <html>
153
+ <form method="post" action="/login">
154
+ <label>
155
+ Email
156
+ <input id="user_email" name="user[email]" value="test@example.com" type="text" />
157
+ </label>
158
+ <input type="submit" />
159
+ </form>
160
+ </html>
161
+ HTML
162
+ webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
163
+ fill_in "Email", :with => "foo@example.com"
164
+ click_button
165
+ end
166
+
167
+ it "should work with full input names" do
168
+ with_html <<-HTML
169
+ <html>
170
+ <form method="post" action="/login">
171
+ <input id="user_email" name="user[email]" type="text" />
172
+ <input type="submit" />
173
+ </form>
174
+ </html>
175
+ HTML
176
+ webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
177
+ fill_in "user[email]", :with => "foo@example.com"
178
+ click_button
179
+ end
180
+
181
+ it "should work if the input type is not set" do
182
+ with_html <<-HTML
183
+ <html>
184
+ <form method="post" action="/login">
185
+ <input id="user_email" name="user[email]" />
186
+ <input type="submit" />
187
+ </form>
188
+ </html>
189
+ HTML
190
+ webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
191
+ fill_in "user[email]", :with => "foo@example.com"
192
+ click_button
193
+ end
194
+
195
+ it "should work with symbols" do
196
+ with_html <<-HTML
197
+ <html>
198
+ <form method="post" action="/login">
199
+ <label for="user_email">Email</label>
200
+ <input id="user_email" name="user[email]" type="text" />
201
+ <input type="submit" />
202
+ </form>
203
+ </html>
204
+ HTML
205
+ webrat_session.should_receive(:post).with("/login", "user" => {"email" => "foo@example.com"})
206
+ fill_in :email, :with => "foo@example.com"
207
+ click_button
208
+ end
209
+
210
+ it "should escape field values" do
211
+ with_html <<-HTML
212
+ <html>
213
+ <form method="post" action="/users">
214
+ <label for="user_phone">Phone</label>
215
+ <input id="user_phone" name="user[phone]" type="text" />
216
+ <input type="submit" />
217
+ </form>
218
+ </html>
219
+ HTML
220
+ webrat_session.should_receive(:post).with("/users", "user" => {"phone" => "+1 22 33"})
221
+ fill_in 'Phone', :with => "+1 22 33"
222
+ click_button
223
+ end
224
+ end
@@ -1,19 +1,19 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
-
3
-
4
- describe "field_by_xpath" do
5
- it "should work" do
6
- with_html <<-HTML
7
- <html>
8
- <form>
9
- <label for="element_42">The Label</label>
10
- <input type="text" id="element_42">
11
- </form>
12
- </html>
13
- HTML
14
-
15
- field = field_by_xpath(".//input")
16
- field.should_not be_nil
17
- field.id.should == "element_42"
18
- end
19
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+
4
+ describe "field_by_xpath" do
5
+ it "should work" do
6
+ with_html <<-HTML
7
+ <html>
8
+ <form>
9
+ <label for="element_42">The Label</label>
10
+ <input type="text" id="element_42">
11
+ </form>
12
+ </html>
13
+ HTML
14
+
15
+ field = field_by_xpath(".//input")
16
+ field.should_not be_nil
17
+ field.id.should == "element_42"
18
+ end
19
+ end