mkuklis-webrat 0.5.1
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 +4 -0
- data/.gitignore +15 -0
- data/History.txt +413 -0
- data/MIT-LICENSE.txt +19 -0
- data/README.rdoc +85 -0
- data/Rakefile +188 -0
- data/VERSION +1 -0
- data/install.rb +1 -0
- data/lib/webrat/adapters/mechanize.rb +78 -0
- data/lib/webrat/adapters/merb.rb +11 -0
- data/lib/webrat/adapters/rack.rb +25 -0
- data/lib/webrat/adapters/rails.rb +81 -0
- data/lib/webrat/adapters/sinatra.rb +9 -0
- data/lib/webrat/core/configuration.rb +92 -0
- data/lib/webrat/core/elements/area.rb +31 -0
- data/lib/webrat/core/elements/element.rb +33 -0
- data/lib/webrat/core/elements/field.rb +487 -0
- data/lib/webrat/core/elements/form.rb +103 -0
- data/lib/webrat/core/elements/label.rb +31 -0
- data/lib/webrat/core/elements/link.rb +93 -0
- data/lib/webrat/core/elements/select_option.rb +48 -0
- data/lib/webrat/core/locators/area_locator.rb +38 -0
- data/lib/webrat/core/locators/button_locator.rb +54 -0
- data/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
- data/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
- data/lib/webrat/core/locators/field_locator.rb +25 -0
- data/lib/webrat/core/locators/field_named_locator.rb +41 -0
- data/lib/webrat/core/locators/form_locator.rb +19 -0
- data/lib/webrat/core/locators/label_locator.rb +34 -0
- data/lib/webrat/core/locators/link_locator.rb +74 -0
- data/lib/webrat/core/locators/locator.rb +20 -0
- data/lib/webrat/core/locators/select_option_locator.rb +59 -0
- data/lib/webrat/core/locators.rb +20 -0
- data/lib/webrat/core/logging.rb +23 -0
- data/lib/webrat/core/matchers/have_content.rb +68 -0
- data/lib/webrat/core/matchers/have_selector.rb +74 -0
- data/lib/webrat/core/matchers/have_tag.rb +21 -0
- data/lib/webrat/core/matchers/have_xpath.rb +122 -0
- data/lib/webrat/core/matchers.rb +4 -0
- data/lib/webrat/core/methods.rb +64 -0
- data/lib/webrat/core/mime.rb +18 -0
- data/lib/webrat/core/save_and_open_page.rb +48 -0
- data/lib/webrat/core/scope.rb +365 -0
- data/lib/webrat/core/session.rb +306 -0
- data/lib/webrat/core/xml.rb +72 -0
- data/lib/webrat/core.rb +13 -0
- data/lib/webrat/core_extensions/blank.rb +58 -0
- data/lib/webrat/core_extensions/deprecate.rb +8 -0
- data/lib/webrat/core_extensions/detect_mapped.rb +12 -0
- data/lib/webrat/core_extensions/meta_class.rb +6 -0
- data/lib/webrat/core_extensions/nil_to_param.rb +5 -0
- data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
- data/lib/webrat/integrations/merb.rb +10 -0
- data/lib/webrat/integrations/rails.rb +25 -0
- data/lib/webrat/integrations/rspec-rails.rb +10 -0
- data/lib/webrat/integrations/selenium.rb +11 -0
- data/lib/webrat/merb.rb +9 -0
- data/lib/webrat/rspec-rails.rb +2 -0
- data/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/lib/webrat/selenium/application_servers/base.rb +54 -0
- data/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/lib/webrat/selenium/application_servers/rails.rb +67 -0
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/lib/webrat/selenium/application_servers.rb +5 -0
- data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
- data/lib/webrat/selenium/location_strategy_javascript/label.js +42 -0
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +6 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +32 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
- data/lib/webrat/selenium/matchers/have_content.rb +66 -0
- data/lib/webrat/selenium/matchers/have_selector.rb +49 -0
- data/lib/webrat/selenium/matchers/have_tag.rb +72 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
- data/lib/webrat/selenium/matchers.rb +4 -0
- data/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +86 -0
- data/lib/webrat/selenium/selenium_session.rb +272 -0
- data/lib/webrat/selenium/silence_stream.rb +18 -0
- data/lib/webrat/selenium.rb +70 -0
- data/lib/webrat.rb +18 -0
- data/spec/fakes/test_adapter.rb +37 -0
- data/spec/integration/mechanize/Rakefile +7 -0
- data/spec/integration/mechanize/config.ru +2 -0
- data/spec/integration/mechanize/sample_app.rb +20 -0
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -0
- data/spec/integration/mechanize/spec/spec_helper.rb +27 -0
- data/spec/integration/merb/.gitignore +21 -0
- data/spec/integration/merb/Rakefile +35 -0
- data/spec/integration/merb/app/controllers/application.rb +2 -0
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/spec/integration/merb/app/controllers/testing.rb +27 -0
- data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
- data/spec/integration/merb/app/views/layout/application.html.erb +12 -0
- data/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
- data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/spec/integration/merb/config/environments/development.rb +15 -0
- data/spec/integration/merb/config/environments/rake.rb +11 -0
- data/spec/integration/merb/config/environments/test.rb +14 -0
- data/spec/integration/merb/config/init.rb +25 -0
- data/spec/integration/merb/config/rack.rb +11 -0
- data/spec/integration/merb/config/router.rb +34 -0
- data/spec/integration/merb/spec/spec.opts +1 -0
- data/spec/integration/merb/spec/spec_helper.rb +26 -0
- data/spec/integration/merb/spec/webrat_spec.rb +39 -0
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/spec/integration/rack/Rakefile +5 -0
- data/spec/integration/rack/app.rb +89 -0
- data/spec/integration/rack/test/helper.rb +21 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +73 -0
- data/spec/integration/rails/.gitignore +3 -0
- data/spec/integration/rails/Rakefile +30 -0
- data/spec/integration/rails/app/controllers/application.rb +15 -0
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +46 -0
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
- data/spec/integration/rails/app/views/fields/show.html.erb +9 -0
- data/spec/integration/rails/app/views/links/show.html.erb +5 -0
- data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
- data/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
- data/spec/integration/rails/app/views/webrat/within.html.erb +3 -0
- data/spec/integration/rails/config/boot.rb +109 -0
- data/spec/integration/rails/config/environment.rb +12 -0
- data/spec/integration/rails/config/environments/development.rb +17 -0
- data/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/spec/integration/rails/config/environments/test.rb +22 -0
- data/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/spec/integration/rails/config/locales/en.yml +5 -0
- data/spec/integration/rails/config/routes.rb +19 -0
- data/spec/integration/rails/public/404.html +30 -0
- data/spec/integration/rails/public/422.html +30 -0
- data/spec/integration/rails/public/500.html +33 -0
- data/spec/integration/rails/script/about +4 -0
- data/spec/integration/rails/script/console +3 -0
- data/spec/integration/rails/script/dbconsole +3 -0
- data/spec/integration/rails/script/destroy +3 -0
- data/spec/integration/rails/script/generate +3 -0
- data/spec/integration/rails/script/performance/benchmarker +3 -0
- data/spec/integration/rails/script/performance/profiler +3 -0
- data/spec/integration/rails/script/performance/request +3 -0
- data/spec/integration/rails/script/plugin +3 -0
- data/spec/integration/rails/script/process/inspector +3 -0
- data/spec/integration/rails/script/process/reaper +3 -0
- data/spec/integration/rails/script/process/spawner +3 -0
- data/spec/integration/rails/script/runner +3 -0
- data/spec/integration/rails/script/server +3 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -0
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/spec/integration/rails/test/integration/link_click_test.rb +27 -0
- data/spec/integration/rails/test/integration/webrat_test.rb +122 -0
- data/spec/integration/rails/test/test_helper.rb +26 -0
- data/spec/integration/sinatra/Rakefile +5 -0
- data/spec/integration/sinatra/classic_app.rb +64 -0
- data/spec/integration/sinatra/modular_app.rb +16 -0
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/spec/integration/sinatra/test/test_helper.rb +17 -0
- data/spec/private/core/configuration_spec.rb +87 -0
- data/spec/private/core/field_spec.rb +85 -0
- data/spec/private/core/link_spec.rb +24 -0
- data/spec/private/core/session_spec.rb +200 -0
- data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -0
- data/spec/private/nokogiri_spec.rb +77 -0
- data/spec/private/rails/attaches_file_spec.rb +81 -0
- data/spec/private/rails/rails_adapter_spec.rb +86 -0
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/spec/public/basic_auth_spec.rb +24 -0
- data/spec/public/check_spec.rb +191 -0
- data/spec/public/choose_spec.rb +118 -0
- data/spec/public/click_area_spec.rb +106 -0
- data/spec/public/click_button_spec.rb +494 -0
- data/spec/public/click_link_spec.rb +511 -0
- data/spec/public/fill_in_spec.rb +224 -0
- data/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/spec/public/locators/field_labeled_spec.rb +172 -0
- data/spec/public/locators/field_with_id_spec.rb +16 -0
- data/spec/public/matchers/contain_spec.rb +114 -0
- data/spec/public/matchers/have_selector_spec.rb +146 -0
- data/spec/public/matchers/have_tag_spec.rb +39 -0
- data/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/spec/public/reload_spec.rb +10 -0
- data/spec/public/save_and_open_spec.rb +70 -0
- data/spec/public/select_date_spec.rb +112 -0
- data/spec/public/select_datetime_spec.rb +137 -0
- data/spec/public/select_spec.rb +455 -0
- data/spec/public/select_time_spec.rb +100 -0
- data/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/spec/public/set_hidden_field_spec.rb +5 -0
- data/spec/public/submit_form_spec.rb +5 -0
- data/spec/public/visit_spec.rb +58 -0
- data/spec/public/within_spec.rb +177 -0
- data/spec/rcov.opts +1 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +54 -0
- data/vendor/selenium-server.jar +0 -0
- metadata +409 -0
@@ -0,0 +1,494 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe "click_button" do
|
4
|
+
it "should fail if no buttons" do
|
5
|
+
with_html <<-HTML
|
6
|
+
<html>
|
7
|
+
<form method="get" action="/login"></form>
|
8
|
+
</html>
|
9
|
+
HTML
|
10
|
+
|
11
|
+
lambda { click_button }.should raise_error(Webrat::NotFoundError)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should fail if input is not a submit button" do
|
15
|
+
with_html <<-HTML
|
16
|
+
<html>
|
17
|
+
<form method="get" action="/login">
|
18
|
+
<input type="reset" />
|
19
|
+
</form>
|
20
|
+
</html>
|
21
|
+
HTML
|
22
|
+
|
23
|
+
lambda { click_button }.should raise_error(Webrat::NotFoundError)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
it "should fail if button is disabled" do
|
28
|
+
with_html <<-HTML
|
29
|
+
<html>
|
30
|
+
<form method="get" action="/login">
|
31
|
+
<input type="submit" disabled="disabled" />
|
32
|
+
</form>
|
33
|
+
</html>
|
34
|
+
HTML
|
35
|
+
|
36
|
+
lambda { click_button }.should raise_error(Webrat::DisabledFieldError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should default to get method" do
|
40
|
+
with_html <<-HTML
|
41
|
+
<html>
|
42
|
+
<form action="/login">
|
43
|
+
<input type="submit" />
|
44
|
+
</form>
|
45
|
+
</html>
|
46
|
+
HTML
|
47
|
+
webrat_session.should_receive(:get)
|
48
|
+
click_button
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should assert valid response" do
|
52
|
+
with_html <<-HTML
|
53
|
+
<html>
|
54
|
+
<form action="/login">
|
55
|
+
<input type="submit" />
|
56
|
+
</form>
|
57
|
+
</html>
|
58
|
+
HTML
|
59
|
+
webrat_session.response_code = 501
|
60
|
+
lambda { click_button }.should raise_error(Webrat::PageLoadError)
|
61
|
+
end
|
62
|
+
|
63
|
+
[200, 300, 400, 499].each do |status|
|
64
|
+
it "should consider the #{status} status code as success" do
|
65
|
+
with_html <<-HTML
|
66
|
+
<html>
|
67
|
+
<form action="/login">
|
68
|
+
<input type="submit" />
|
69
|
+
</form>
|
70
|
+
</html>
|
71
|
+
HTML
|
72
|
+
webrat_session.stub!(:redirect? => false)
|
73
|
+
webrat_session.response_code = status
|
74
|
+
lambda { click_button }.should_not raise_error
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should submit the first form by default" do
|
79
|
+
with_html <<-HTML
|
80
|
+
<html>
|
81
|
+
<form method="get" action="/form1">
|
82
|
+
<input type="submit" />
|
83
|
+
</form>
|
84
|
+
<form method="get" action="/form2">
|
85
|
+
<input type="submit" />
|
86
|
+
</form>
|
87
|
+
</html>
|
88
|
+
HTML
|
89
|
+
webrat_session.should_receive(:get).with("/form1", {})
|
90
|
+
click_button
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should not explode on file fields" do
|
94
|
+
with_html <<-HTML
|
95
|
+
<html>
|
96
|
+
<form method="get" action="/form1">
|
97
|
+
<input type="file" />
|
98
|
+
<input type="submit" />
|
99
|
+
</form>
|
100
|
+
</html>
|
101
|
+
HTML
|
102
|
+
click_button
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should submit the form with the specified button" do
|
106
|
+
with_html <<-HTML
|
107
|
+
<html>
|
108
|
+
<form method="get" action="/form1">
|
109
|
+
<input type="submit" />
|
110
|
+
</form>
|
111
|
+
<form method="get" action="/form2">
|
112
|
+
<input type="submit" value="Form2" />
|
113
|
+
</form>
|
114
|
+
</html>
|
115
|
+
HTML
|
116
|
+
webrat_session.should_receive(:get).with("/form2", {})
|
117
|
+
click_button "Form2"
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should use action from form" do
|
121
|
+
with_html <<-HTML
|
122
|
+
<html>
|
123
|
+
<form method="get" action="/login">
|
124
|
+
<input type="submit" />
|
125
|
+
</form>
|
126
|
+
</html>
|
127
|
+
HTML
|
128
|
+
webrat_session.should_receive(:get).with("/login", {})
|
129
|
+
click_button
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should use method from form" do
|
133
|
+
with_html <<-HTML
|
134
|
+
<html>
|
135
|
+
<form method="post" action="/login">
|
136
|
+
<input type="submit" />
|
137
|
+
</form>
|
138
|
+
</html>
|
139
|
+
HTML
|
140
|
+
webrat_session.should_receive(:post)
|
141
|
+
click_button
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should send button as param if it has a name" do
|
145
|
+
with_html <<-HTML
|
146
|
+
<html>
|
147
|
+
<form method="post" action="/login">
|
148
|
+
<input type="submit" name="cancel" value="Cancel" />
|
149
|
+
<input type="submit" name="login" value="Login" />
|
150
|
+
</form>
|
151
|
+
</html>
|
152
|
+
HTML
|
153
|
+
webrat_session.should_receive(:post).with("/login", "login" => "Login")
|
154
|
+
click_button("Login")
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should not send button as param if it has no name" do
|
158
|
+
with_html <<-HTML
|
159
|
+
<html>
|
160
|
+
<form method="post" action="/login">
|
161
|
+
<input type="submit" name="cancel" value="Cancel" />
|
162
|
+
<input type="submit" value="Login" />
|
163
|
+
</form>
|
164
|
+
</html>
|
165
|
+
HTML
|
166
|
+
webrat_session.should_receive(:post).with("/login", {})
|
167
|
+
click_button("Login")
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should send default password field values" do
|
171
|
+
with_html <<-HTML
|
172
|
+
<html>
|
173
|
+
<form method="get" action="/login">
|
174
|
+
<input id="user_password" name="user[password]" value="mypass" type="password" />
|
175
|
+
<input type="submit" />
|
176
|
+
</form>
|
177
|
+
</html>
|
178
|
+
HTML
|
179
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"password" => "mypass"})
|
180
|
+
click_button
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should send default hidden field values" do
|
184
|
+
with_html <<-HTML
|
185
|
+
<html>
|
186
|
+
<form method="get" action="/login">
|
187
|
+
<input id="user_email" name="user[email]" value="test@example.com" type="hidden" />
|
188
|
+
<input type="submit" />
|
189
|
+
</form>
|
190
|
+
</html>
|
191
|
+
HTML
|
192
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"email" => "test@example.com"})
|
193
|
+
click_button
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should send default text field values" do
|
197
|
+
with_html <<-HTML
|
198
|
+
<html>
|
199
|
+
<form method="get" action="/login">
|
200
|
+
<input id="user_email" name="user[email]" value="test@example.com" type="text" />
|
201
|
+
<input type="submit" />
|
202
|
+
</form>
|
203
|
+
</html>
|
204
|
+
HTML
|
205
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"email" => "test@example.com"})
|
206
|
+
click_button
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should not send disabled field values" do
|
210
|
+
with_html <<-HTML
|
211
|
+
<html>
|
212
|
+
<form method="get" action="/login">
|
213
|
+
<input disabled="disabled" id="user_email" name="user[email]" value="test@example.com" type="text" />
|
214
|
+
<input disabled="disabled" id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
215
|
+
<label for="user_gender_male">Male</label>
|
216
|
+
<input disabled="disabled" id="user_gender_female" name="user[gender]" type="radio" value="F" checked="checked" />
|
217
|
+
<label for="user_gender_female">Female</label>
|
218
|
+
<input type="submit" />
|
219
|
+
</form>
|
220
|
+
</html>
|
221
|
+
HTML
|
222
|
+
webrat_session.should_receive(:get).with("/login", {})
|
223
|
+
click_button
|
224
|
+
end
|
225
|
+
|
226
|
+
it "should send default checked fields" do
|
227
|
+
with_html <<-HTML
|
228
|
+
<html>
|
229
|
+
<form method="get" action="/login">
|
230
|
+
<input id="user_tos" name="user[tos]" value="1" type="checkbox" checked="checked" />
|
231
|
+
<input type="submit" />
|
232
|
+
</form>
|
233
|
+
</html>
|
234
|
+
HTML
|
235
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "1"})
|
236
|
+
click_button
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should send default radio options" do
|
240
|
+
with_html <<-HTML
|
241
|
+
<html>
|
242
|
+
<form method="get" action="/login">
|
243
|
+
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
244
|
+
<label for="user_gender_male">Male</label>
|
245
|
+
<input id="user_gender_female" name="user[gender]" type="radio" value="F" checked="checked" />
|
246
|
+
<label for="user_gender_female">Female</label>
|
247
|
+
<input type="submit" />
|
248
|
+
</form>
|
249
|
+
</html>
|
250
|
+
HTML
|
251
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "F"})
|
252
|
+
click_button
|
253
|
+
end
|
254
|
+
|
255
|
+
it "should send correct data for rails style unchecked fields" do
|
256
|
+
with_html <<-HTML
|
257
|
+
<html>
|
258
|
+
<form method="get" action="/login">
|
259
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" />
|
260
|
+
<input name="user[tos]" type="hidden" value="0" /> TOS
|
261
|
+
<input type="submit" />
|
262
|
+
</form>
|
263
|
+
</html>
|
264
|
+
HTML
|
265
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
266
|
+
click_button
|
267
|
+
end
|
268
|
+
|
269
|
+
it "should send correct data for rails style checked fields" do
|
270
|
+
with_html <<-HTML
|
271
|
+
<html>
|
272
|
+
<form method="get" action="/login">
|
273
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
274
|
+
<input name="user[tos]" type="hidden" value="0" /> TOS
|
275
|
+
<input type="submit" />
|
276
|
+
</form>
|
277
|
+
</html>
|
278
|
+
HTML
|
279
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "1"})
|
280
|
+
click_button
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should send default collection fields" do
|
284
|
+
with_html <<-HTML
|
285
|
+
<html>
|
286
|
+
<form method="post" action="/login">
|
287
|
+
<input type="checkbox" name="options[]" value="burger" checked="checked" />
|
288
|
+
<input type="radio" name="options[]" value="fries" checked="checked" />
|
289
|
+
<input type="text" name="options[]" value="soda" />
|
290
|
+
<!-- Same value appearing twice -->
|
291
|
+
<input type="text" name="options[]" value="soda" />
|
292
|
+
<input type="hidden" name="options[]" value="dessert" />
|
293
|
+
<input type="hidden" name="response[choices][][selected]" value="one" />
|
294
|
+
<input type="hidden" name="response[choices][][selected]" value="two" />
|
295
|
+
<!-- Same value appearing twice -->
|
296
|
+
<input type="hidden" name="response[choices][][selected]" value="two" />
|
297
|
+
<input type="submit" />
|
298
|
+
</form>
|
299
|
+
</html>
|
300
|
+
HTML
|
301
|
+
webrat_session.should_receive(:post).with("/login",
|
302
|
+
"options" => ["burger", "fries", "soda", "soda", "dessert"],
|
303
|
+
"response" => { "choices" => [{"selected" => "one"}, {"selected" => "two"}, {"selected" => "two"}]})
|
304
|
+
click_button
|
305
|
+
end
|
306
|
+
|
307
|
+
it "should not send default unchecked fields" do
|
308
|
+
with_html <<-HTML
|
309
|
+
<html>
|
310
|
+
<form method="get" action="/login">
|
311
|
+
<input id="user_tos" name="user[tos]" value="1" type="checkbox" />
|
312
|
+
<input type="submit" />
|
313
|
+
</form>
|
314
|
+
</html>
|
315
|
+
HTML
|
316
|
+
webrat_session.should_receive(:get).with("/login", {})
|
317
|
+
click_button
|
318
|
+
end
|
319
|
+
|
320
|
+
it "should send default textarea values" do
|
321
|
+
with_html <<-HTML
|
322
|
+
<html>
|
323
|
+
<form method="post" action="/posts">
|
324
|
+
<textarea name="post[body]">Post body here!</textarea>
|
325
|
+
<input type="submit" />
|
326
|
+
</form>
|
327
|
+
</html>
|
328
|
+
HTML
|
329
|
+
webrat_session.should_receive(:post).with("/posts", "post" => {"body" => "Post body here!"})
|
330
|
+
click_button
|
331
|
+
end
|
332
|
+
|
333
|
+
it "should properly handle HTML entities in textarea default values" do
|
334
|
+
with_html <<-HTML
|
335
|
+
<html>
|
336
|
+
<form method="post" action="/posts">
|
337
|
+
<textarea name="post[body]">Peanut butter & jelly</textarea>
|
338
|
+
<input type="submit" />
|
339
|
+
</form>
|
340
|
+
</html>
|
341
|
+
HTML
|
342
|
+
webrat_session.should_receive(:post).with("/posts", "post" => {"body" => "Peanut butter & jelly"})
|
343
|
+
click_button
|
344
|
+
end
|
345
|
+
|
346
|
+
it "should send default selected option value from select" do
|
347
|
+
with_html <<-HTML
|
348
|
+
<html>
|
349
|
+
<form method="get" action="/login">
|
350
|
+
<select name="month">
|
351
|
+
<option value="1">January</option>
|
352
|
+
<option value="2" selected="selected">February</option>
|
353
|
+
</select>
|
354
|
+
<input type="submit" />
|
355
|
+
</form>
|
356
|
+
</html>
|
357
|
+
HTML
|
358
|
+
webrat_session.should_receive(:get).with("/login", "month" => "2")
|
359
|
+
click_button
|
360
|
+
end
|
361
|
+
|
362
|
+
it "should send default selected option inner html from select when no value attribute" do
|
363
|
+
with_html <<-HTML
|
364
|
+
<html>
|
365
|
+
<form method="get" action="/login">
|
366
|
+
<select name="month">
|
367
|
+
<option>January</option>
|
368
|
+
<option selected="selected">February</option>
|
369
|
+
</select>
|
370
|
+
<input type="submit" />
|
371
|
+
</form>
|
372
|
+
</html>
|
373
|
+
HTML
|
374
|
+
webrat_session.should_receive(:get).with("/login", "month" => "February")
|
375
|
+
click_button
|
376
|
+
end
|
377
|
+
|
378
|
+
it "should send first select option value when no option selected" do
|
379
|
+
with_html <<-HTML
|
380
|
+
<html>
|
381
|
+
<form method="get" action="/login">
|
382
|
+
<select name="month">
|
383
|
+
<option value="1">January</option>
|
384
|
+
<option value="2">February</option>
|
385
|
+
</select>
|
386
|
+
<input type="submit" />
|
387
|
+
</form>
|
388
|
+
</html>
|
389
|
+
HTML
|
390
|
+
webrat_session.should_receive(:get).with("/login", "month" => "1")
|
391
|
+
click_button
|
392
|
+
end
|
393
|
+
|
394
|
+
it "should handle nested properties" do
|
395
|
+
with_html <<-HTML
|
396
|
+
<html>
|
397
|
+
<form method="post" action="/login">
|
398
|
+
<input type="text" id="contestant_scores_12" name="contestant[scores][1]" value="2"/>
|
399
|
+
<input type="text" id="contestant_scores_13" name="contestant[scores][3]" value="4"/>
|
400
|
+
<input type="submit" />
|
401
|
+
</form>
|
402
|
+
</html>
|
403
|
+
HTML
|
404
|
+
webrat_session.should_receive(:post).with("/login", "contestant" => {"scores" => {'1' => '2', '3' => '4'}})
|
405
|
+
click_button
|
406
|
+
end
|
407
|
+
|
408
|
+
it "should send default empty text field values" do
|
409
|
+
with_html <<-HTML
|
410
|
+
<html>
|
411
|
+
<form method="get" action="/login">
|
412
|
+
<input id="user_email" name="user[email]" value="" type="text" />
|
413
|
+
<input type="submit" />
|
414
|
+
</form>
|
415
|
+
</html>
|
416
|
+
HTML
|
417
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"email" => ""})
|
418
|
+
click_button
|
419
|
+
end
|
420
|
+
|
421
|
+
it "should recognize button tags" do
|
422
|
+
with_html <<-HTML
|
423
|
+
<html>
|
424
|
+
<form method="get" action="/login">
|
425
|
+
<input id="user_email" name="user[email]" value="" type="text" />
|
426
|
+
<button type="submit" />
|
427
|
+
</form>
|
428
|
+
</html>
|
429
|
+
HTML
|
430
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"email" => ""})
|
431
|
+
click_button
|
432
|
+
end
|
433
|
+
|
434
|
+
it "should recognize input tags with the type button" do
|
435
|
+
with_html <<-HTML
|
436
|
+
<html>
|
437
|
+
<form action="/">
|
438
|
+
<input type="button" />
|
439
|
+
</form>
|
440
|
+
</html>
|
441
|
+
HTML
|
442
|
+
webrat_session.should_receive(:get)
|
443
|
+
click_button
|
444
|
+
end
|
445
|
+
|
446
|
+
it "should recognize image button tags" do
|
447
|
+
with_html <<-HTML
|
448
|
+
<html>
|
449
|
+
<form action="/">
|
450
|
+
<input type="image" />
|
451
|
+
</form>
|
452
|
+
</html>
|
453
|
+
HTML
|
454
|
+
webrat_session.should_receive(:get)
|
455
|
+
click_button
|
456
|
+
end
|
457
|
+
|
458
|
+
it "should find buttons by their IDs" do
|
459
|
+
with_html <<-HTML
|
460
|
+
<html>
|
461
|
+
<form action="/">
|
462
|
+
<input type="submit" id="my_button" />
|
463
|
+
</form>
|
464
|
+
</html>
|
465
|
+
HTML
|
466
|
+
webrat_session.should_receive(:get)
|
467
|
+
click_button "my_button"
|
468
|
+
end
|
469
|
+
|
470
|
+
it "should find image buttons by their alt text" do
|
471
|
+
with_html <<-HTML
|
472
|
+
<html>
|
473
|
+
<form action="/">
|
474
|
+
<input type="image" alt="Go" />
|
475
|
+
</form>
|
476
|
+
</html>
|
477
|
+
HTML
|
478
|
+
webrat_session.should_receive(:get)
|
479
|
+
click_button "Go"
|
480
|
+
end
|
481
|
+
|
482
|
+
it "should recognize button tags by content" do
|
483
|
+
with_html <<-HTML
|
484
|
+
<html>
|
485
|
+
<form method="get" action="/login">
|
486
|
+
<input id="user_email" name="user[email]" value="" type="text" />
|
487
|
+
<button type="submit">Login</button>
|
488
|
+
</form>
|
489
|
+
</html>
|
490
|
+
HTML
|
491
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"email" => ""})
|
492
|
+
click_button "Login"
|
493
|
+
end
|
494
|
+
end
|