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
data/spec/public/fill_in_spec.rb
CHANGED
@@ -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
|