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/check_spec.rb
CHANGED
@@ -1,191 +1,191 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe "check" do
|
4
|
-
it "should fail if no checkbox found" do
|
5
|
-
with_html <<-HTML
|
6
|
-
<html>
|
7
|
-
<form method="post" action="/login">
|
8
|
-
</form>
|
9
|
-
</html>
|
10
|
-
HTML
|
11
|
-
|
12
|
-
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should fail if input is not a checkbox" do
|
16
|
-
with_html <<-HTML
|
17
|
-
<html>
|
18
|
-
<form method="post" action="/login">
|
19
|
-
<input type="text" name="remember_me" />
|
20
|
-
</form>
|
21
|
-
</html>
|
22
|
-
HTML
|
23
|
-
|
24
|
-
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should check rails style checkboxes" do
|
28
|
-
with_html <<-HTML
|
29
|
-
<html>
|
30
|
-
<form method="get" action="/login">
|
31
|
-
<input id="user_tos" name="user[tos]" type="checkbox" value="1" />
|
32
|
-
<input name="user[tos]" type="hidden" value="0" />
|
33
|
-
<label for="user_tos">TOS</label>
|
34
|
-
<input type="submit" />
|
35
|
-
</form>
|
36
|
-
</html>
|
37
|
-
HTML
|
38
|
-
|
39
|
-
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "1"})
|
40
|
-
check "TOS"
|
41
|
-
click_button
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should result in the value on being posted if not specified" do
|
45
|
-
with_html <<-HTML
|
46
|
-
<html>
|
47
|
-
<form method="post" action="/login">
|
48
|
-
<input type="checkbox" name="remember_me" />
|
49
|
-
<input type="submit" />
|
50
|
-
</form>
|
51
|
-
</html>
|
52
|
-
HTML
|
53
|
-
|
54
|
-
webrat_session.should_receive(:post).with("/login", "remember_me" => "on")
|
55
|
-
check "remember_me"
|
56
|
-
click_button
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should fail if the checkbox is disabled" do
|
60
|
-
with_html <<-HTML
|
61
|
-
<html>
|
62
|
-
<form method="post" action="/login">
|
63
|
-
<input type="checkbox" name="remember_me" disabled="disabled" />
|
64
|
-
<input type="submit" />
|
65
|
-
</form>
|
66
|
-
</html>
|
67
|
-
HTML
|
68
|
-
|
69
|
-
lambda { check "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should result in a custom value being posted" do
|
73
|
-
with_html <<-HTML
|
74
|
-
<html>
|
75
|
-
<form method="post" action="/login">
|
76
|
-
<input type="checkbox" name="remember_me" value="yes" />
|
77
|
-
<input type="submit" />
|
78
|
-
</form>
|
79
|
-
</html>
|
80
|
-
HTML
|
81
|
-
|
82
|
-
webrat_session.should_receive(:post).with("/login", "remember_me" => "yes")
|
83
|
-
check "remember_me"
|
84
|
-
click_button
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "uncheck" do
|
89
|
-
it "should fail if no checkbox found" do
|
90
|
-
with_html <<-HTML
|
91
|
-
<html>
|
92
|
-
<form method="post" action="/login">
|
93
|
-
</form>
|
94
|
-
</html>
|
95
|
-
HTML
|
96
|
-
|
97
|
-
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should fail if input is not a checkbox" do
|
101
|
-
with_html <<-HTML
|
102
|
-
<html>
|
103
|
-
<form method="post" action="/login">
|
104
|
-
<input type="text" name="remember_me" />
|
105
|
-
</form>
|
106
|
-
</html>
|
107
|
-
HTML
|
108
|
-
|
109
|
-
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should fail if the checkbox is disabled" do
|
113
|
-
with_html <<-HTML
|
114
|
-
<html>
|
115
|
-
<form method="post" action="/login">
|
116
|
-
<input type="checkbox" name="remember_me" checked="checked" disabled="disabled" />
|
117
|
-
<input type="submit" />
|
118
|
-
</form>
|
119
|
-
</html>
|
120
|
-
HTML
|
121
|
-
lambda { uncheck "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should uncheck rails style checkboxes" do
|
125
|
-
with_html <<-HTML
|
126
|
-
<html>
|
127
|
-
<form method="get" action="/login">
|
128
|
-
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
129
|
-
<input name="user[tos]" type="hidden" value="0" />
|
130
|
-
<label for="user_tos">TOS</label>
|
131
|
-
<input type="submit" />
|
132
|
-
</form>
|
133
|
-
</html>
|
134
|
-
HTML
|
135
|
-
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
136
|
-
check "TOS"
|
137
|
-
uncheck "TOS"
|
138
|
-
click_button
|
139
|
-
end
|
140
|
-
|
141
|
-
it "should result in value not being posted" do
|
142
|
-
with_html <<-HTML
|
143
|
-
<html>
|
144
|
-
<form method="post" action="/login">
|
145
|
-
<input type="checkbox" name="remember_me" value="yes" checked="checked" />
|
146
|
-
<input type="submit" />
|
147
|
-
</form>
|
148
|
-
</html>
|
149
|
-
HTML
|
150
|
-
webrat_session.should_receive(:post).with("/login", {})
|
151
|
-
uncheck "remember_me"
|
152
|
-
click_button
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should work with checkboxes with the same name" do
|
156
|
-
with_html <<-HTML
|
157
|
-
<html>
|
158
|
-
<form method="post" action="/login">
|
159
|
-
<input id="option_1" name="options[]" type="checkbox" value="1" />
|
160
|
-
<label for="option_1">Option 1</label>
|
161
|
-
<input id="option_2" name="options[]" type="checkbox" value="2" />
|
162
|
-
<label for="option_2">Option 2</label>
|
163
|
-
<input type="submit" />
|
164
|
-
</form>
|
165
|
-
</html>
|
166
|
-
HTML
|
167
|
-
webrat_session.should_receive(:post).with("/login", {"options" => ["1", "2"]})
|
168
|
-
check 'Option 1'
|
169
|
-
check 'Option 2'
|
170
|
-
click_button
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should uncheck rails style checkboxes nested inside a label" do
|
174
|
-
with_html <<-HTML
|
175
|
-
<html>
|
176
|
-
<form method="get" action="/login">
|
177
|
-
<label>
|
178
|
-
TOS
|
179
|
-
<input name="user[tos]" type="hidden" value="0" />
|
180
|
-
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
181
|
-
</label>
|
182
|
-
<input type="submit" />
|
183
|
-
</form>
|
184
|
-
</html>
|
185
|
-
HTML
|
186
|
-
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
187
|
-
uncheck "TOS"
|
188
|
-
click_button
|
189
|
-
end
|
190
|
-
|
191
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe "check" do
|
4
|
+
it "should fail if no checkbox found" do
|
5
|
+
with_html <<-HTML
|
6
|
+
<html>
|
7
|
+
<form method="post" action="/login">
|
8
|
+
</form>
|
9
|
+
</html>
|
10
|
+
HTML
|
11
|
+
|
12
|
+
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should fail if input is not a checkbox" do
|
16
|
+
with_html <<-HTML
|
17
|
+
<html>
|
18
|
+
<form method="post" action="/login">
|
19
|
+
<input type="text" name="remember_me" />
|
20
|
+
</form>
|
21
|
+
</html>
|
22
|
+
HTML
|
23
|
+
|
24
|
+
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should check rails style checkboxes" do
|
28
|
+
with_html <<-HTML
|
29
|
+
<html>
|
30
|
+
<form method="get" action="/login">
|
31
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" />
|
32
|
+
<input name="user[tos]" type="hidden" value="0" />
|
33
|
+
<label for="user_tos">TOS</label>
|
34
|
+
<input type="submit" />
|
35
|
+
</form>
|
36
|
+
</html>
|
37
|
+
HTML
|
38
|
+
|
39
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "1"})
|
40
|
+
check "TOS"
|
41
|
+
click_button
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should result in the value on being posted if not specified" do
|
45
|
+
with_html <<-HTML
|
46
|
+
<html>
|
47
|
+
<form method="post" action="/login">
|
48
|
+
<input type="checkbox" name="remember_me" />
|
49
|
+
<input type="submit" />
|
50
|
+
</form>
|
51
|
+
</html>
|
52
|
+
HTML
|
53
|
+
|
54
|
+
webrat_session.should_receive(:post).with("/login", "remember_me" => "on")
|
55
|
+
check "remember_me"
|
56
|
+
click_button
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should fail if the checkbox is disabled" do
|
60
|
+
with_html <<-HTML
|
61
|
+
<html>
|
62
|
+
<form method="post" action="/login">
|
63
|
+
<input type="checkbox" name="remember_me" disabled="disabled" />
|
64
|
+
<input type="submit" />
|
65
|
+
</form>
|
66
|
+
</html>
|
67
|
+
HTML
|
68
|
+
|
69
|
+
lambda { check "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should result in a custom value being posted" do
|
73
|
+
with_html <<-HTML
|
74
|
+
<html>
|
75
|
+
<form method="post" action="/login">
|
76
|
+
<input type="checkbox" name="remember_me" value="yes" />
|
77
|
+
<input type="submit" />
|
78
|
+
</form>
|
79
|
+
</html>
|
80
|
+
HTML
|
81
|
+
|
82
|
+
webrat_session.should_receive(:post).with("/login", "remember_me" => "yes")
|
83
|
+
check "remember_me"
|
84
|
+
click_button
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "uncheck" do
|
89
|
+
it "should fail if no checkbox found" do
|
90
|
+
with_html <<-HTML
|
91
|
+
<html>
|
92
|
+
<form method="post" action="/login">
|
93
|
+
</form>
|
94
|
+
</html>
|
95
|
+
HTML
|
96
|
+
|
97
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should fail if input is not a checkbox" do
|
101
|
+
with_html <<-HTML
|
102
|
+
<html>
|
103
|
+
<form method="post" action="/login">
|
104
|
+
<input type="text" name="remember_me" />
|
105
|
+
</form>
|
106
|
+
</html>
|
107
|
+
HTML
|
108
|
+
|
109
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should fail if the checkbox is disabled" do
|
113
|
+
with_html <<-HTML
|
114
|
+
<html>
|
115
|
+
<form method="post" action="/login">
|
116
|
+
<input type="checkbox" name="remember_me" checked="checked" disabled="disabled" />
|
117
|
+
<input type="submit" />
|
118
|
+
</form>
|
119
|
+
</html>
|
120
|
+
HTML
|
121
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should uncheck rails style checkboxes" do
|
125
|
+
with_html <<-HTML
|
126
|
+
<html>
|
127
|
+
<form method="get" action="/login">
|
128
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
129
|
+
<input name="user[tos]" type="hidden" value="0" />
|
130
|
+
<label for="user_tos">TOS</label>
|
131
|
+
<input type="submit" />
|
132
|
+
</form>
|
133
|
+
</html>
|
134
|
+
HTML
|
135
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
136
|
+
check "TOS"
|
137
|
+
uncheck "TOS"
|
138
|
+
click_button
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should result in value not being posted" do
|
142
|
+
with_html <<-HTML
|
143
|
+
<html>
|
144
|
+
<form method="post" action="/login">
|
145
|
+
<input type="checkbox" name="remember_me" value="yes" checked="checked" />
|
146
|
+
<input type="submit" />
|
147
|
+
</form>
|
148
|
+
</html>
|
149
|
+
HTML
|
150
|
+
webrat_session.should_receive(:post).with("/login", {})
|
151
|
+
uncheck "remember_me"
|
152
|
+
click_button
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should work with checkboxes with the same name" do
|
156
|
+
with_html <<-HTML
|
157
|
+
<html>
|
158
|
+
<form method="post" action="/login">
|
159
|
+
<input id="option_1" name="options[]" type="checkbox" value="1" />
|
160
|
+
<label for="option_1">Option 1</label>
|
161
|
+
<input id="option_2" name="options[]" type="checkbox" value="2" />
|
162
|
+
<label for="option_2">Option 2</label>
|
163
|
+
<input type="submit" />
|
164
|
+
</form>
|
165
|
+
</html>
|
166
|
+
HTML
|
167
|
+
webrat_session.should_receive(:post).with("/login", {"options" => ["1", "2"]})
|
168
|
+
check 'Option 1'
|
169
|
+
check 'Option 2'
|
170
|
+
click_button
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should uncheck rails style checkboxes nested inside a label" do
|
174
|
+
with_html <<-HTML
|
175
|
+
<html>
|
176
|
+
<form method="get" action="/login">
|
177
|
+
<label>
|
178
|
+
TOS
|
179
|
+
<input name="user[tos]" type="hidden" value="0" />
|
180
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
181
|
+
</label>
|
182
|
+
<input type="submit" />
|
183
|
+
</form>
|
184
|
+
</html>
|
185
|
+
HTML
|
186
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
187
|
+
uncheck "TOS"
|
188
|
+
click_button
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
data/spec/public/choose_spec.rb
CHANGED
@@ -1,118 +1,118 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe "choose" do
|
4
|
-
it "should fail if no radio buttons found" do
|
5
|
-
with_html <<-HTML
|
6
|
-
<html>
|
7
|
-
<form method="post" action="/login">
|
8
|
-
</form>
|
9
|
-
</html>
|
10
|
-
HTML
|
11
|
-
|
12
|
-
lambda { choose "first option" }.should raise_error(Webrat::NotFoundError)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should fail if input is not a radio button" do
|
16
|
-
with_html <<-HTML
|
17
|
-
<html>
|
18
|
-
<form method="post" action="/login">
|
19
|
-
<input type="text" name="first_option" />
|
20
|
-
</form>
|
21
|
-
</html>
|
22
|
-
HTML
|
23
|
-
|
24
|
-
lambda { choose "first_option" }.should raise_error(Webrat::NotFoundError)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should check rails style radio buttons" do
|
28
|
-
with_html <<-HTML
|
29
|
-
<html>
|
30
|
-
<form method="get" action="/login">
|
31
|
-
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
32
|
-
<label for="user_gender_male">Male</label>
|
33
|
-
<input id="user_gender_female" name="user[gender]" type="radio" value="F" />
|
34
|
-
<label for="user_gender_female">Female</label>
|
35
|
-
<input type="submit" />
|
36
|
-
</form>
|
37
|
-
</html>
|
38
|
-
HTML
|
39
|
-
webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
|
40
|
-
choose "Male"
|
41
|
-
click_button
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should only submit last chosen value" do
|
45
|
-
with_html <<-HTML
|
46
|
-
<html>
|
47
|
-
<form method="get" action="/login">
|
48
|
-
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
49
|
-
<label for="user_gender_male">Male</label>
|
50
|
-
<input id="user_gender_female" name="user[gender]" type="radio" value="F" />
|
51
|
-
<label for="user_gender_female">Female</label>
|
52
|
-
<input type="submit" />
|
53
|
-
</form>
|
54
|
-
</html>
|
55
|
-
HTML
|
56
|
-
webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
|
57
|
-
choose "Female"
|
58
|
-
choose "Male"
|
59
|
-
click_button
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should fail if the radio button is disabled" do
|
63
|
-
with_html <<-HTML
|
64
|
-
<html>
|
65
|
-
<form method="post" action="/login">
|
66
|
-
<input type="radio" name="first_option" disabled="disabled" />
|
67
|
-
<input type="submit" />
|
68
|
-
</form>
|
69
|
-
</html>
|
70
|
-
HTML
|
71
|
-
|
72
|
-
lambda { choose "first_option" }.should raise_error(Webrat::DisabledFieldError)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should result in the value on being posted if not specified" do
|
76
|
-
with_html <<-HTML
|
77
|
-
<html>
|
78
|
-
<form method="post" action="/login">
|
79
|
-
<input type="radio" name="first_option" />
|
80
|
-
<input type="submit" />
|
81
|
-
</form>
|
82
|
-
</html>
|
83
|
-
HTML
|
84
|
-
webrat_session.should_receive(:post).with("/login", "first_option" => "on")
|
85
|
-
choose "first_option"
|
86
|
-
click_button
|
87
|
-
end
|
88
|
-
|
89
|
-
it "should result in the value on being posted if not specified and checked by default" do
|
90
|
-
with_html <<-HTML
|
91
|
-
<html>
|
92
|
-
<form method="post" action="/login">
|
93
|
-
<input type="radio" name="first_option" checked="checked"/>
|
94
|
-
<input type="submit" />
|
95
|
-
</form>
|
96
|
-
</html>
|
97
|
-
HTML
|
98
|
-
webrat_session.should_receive(:post).with("/login", "first_option" => "on")
|
99
|
-
click_button
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should result in the value of the selected radio button being posted when a subsequent one is checked by default" do
|
103
|
-
with_html <<-HTML
|
104
|
-
<html>
|
105
|
-
<form method="post" action="/login">
|
106
|
-
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
107
|
-
<label for="user_gender_male">Male</label>
|
108
|
-
<input id="user_gender_female" name="user[gender]" type="radio" value="F" checked="checked" />
|
109
|
-
<label for="user_gender_female">Female</label>
|
110
|
-
<input type="submit" />
|
111
|
-
</form>
|
112
|
-
</html>
|
113
|
-
HTML
|
114
|
-
webrat_session.should_receive(:post).with("/login", "user" => {"gender" => "M"})
|
115
|
-
choose "Male"
|
116
|
-
click_button
|
117
|
-
end
|
118
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe "choose" do
|
4
|
+
it "should fail if no radio buttons found" do
|
5
|
+
with_html <<-HTML
|
6
|
+
<html>
|
7
|
+
<form method="post" action="/login">
|
8
|
+
</form>
|
9
|
+
</html>
|
10
|
+
HTML
|
11
|
+
|
12
|
+
lambda { choose "first option" }.should raise_error(Webrat::NotFoundError)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should fail if input is not a radio button" do
|
16
|
+
with_html <<-HTML
|
17
|
+
<html>
|
18
|
+
<form method="post" action="/login">
|
19
|
+
<input type="text" name="first_option" />
|
20
|
+
</form>
|
21
|
+
</html>
|
22
|
+
HTML
|
23
|
+
|
24
|
+
lambda { choose "first_option" }.should raise_error(Webrat::NotFoundError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should check rails style radio buttons" do
|
28
|
+
with_html <<-HTML
|
29
|
+
<html>
|
30
|
+
<form method="get" action="/login">
|
31
|
+
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
32
|
+
<label for="user_gender_male">Male</label>
|
33
|
+
<input id="user_gender_female" name="user[gender]" type="radio" value="F" />
|
34
|
+
<label for="user_gender_female">Female</label>
|
35
|
+
<input type="submit" />
|
36
|
+
</form>
|
37
|
+
</html>
|
38
|
+
HTML
|
39
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
|
40
|
+
choose "Male"
|
41
|
+
click_button
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should only submit last chosen value" do
|
45
|
+
with_html <<-HTML
|
46
|
+
<html>
|
47
|
+
<form method="get" action="/login">
|
48
|
+
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
49
|
+
<label for="user_gender_male">Male</label>
|
50
|
+
<input id="user_gender_female" name="user[gender]" type="radio" value="F" />
|
51
|
+
<label for="user_gender_female">Female</label>
|
52
|
+
<input type="submit" />
|
53
|
+
</form>
|
54
|
+
</html>
|
55
|
+
HTML
|
56
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
|
57
|
+
choose "Female"
|
58
|
+
choose "Male"
|
59
|
+
click_button
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should fail if the radio button is disabled" do
|
63
|
+
with_html <<-HTML
|
64
|
+
<html>
|
65
|
+
<form method="post" action="/login">
|
66
|
+
<input type="radio" name="first_option" disabled="disabled" />
|
67
|
+
<input type="submit" />
|
68
|
+
</form>
|
69
|
+
</html>
|
70
|
+
HTML
|
71
|
+
|
72
|
+
lambda { choose "first_option" }.should raise_error(Webrat::DisabledFieldError)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should result in the value on being posted if not specified" do
|
76
|
+
with_html <<-HTML
|
77
|
+
<html>
|
78
|
+
<form method="post" action="/login">
|
79
|
+
<input type="radio" name="first_option" />
|
80
|
+
<input type="submit" />
|
81
|
+
</form>
|
82
|
+
</html>
|
83
|
+
HTML
|
84
|
+
webrat_session.should_receive(:post).with("/login", "first_option" => "on")
|
85
|
+
choose "first_option"
|
86
|
+
click_button
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should result in the value on being posted if not specified and checked by default" do
|
90
|
+
with_html <<-HTML
|
91
|
+
<html>
|
92
|
+
<form method="post" action="/login">
|
93
|
+
<input type="radio" name="first_option" checked="checked"/>
|
94
|
+
<input type="submit" />
|
95
|
+
</form>
|
96
|
+
</html>
|
97
|
+
HTML
|
98
|
+
webrat_session.should_receive(:post).with("/login", "first_option" => "on")
|
99
|
+
click_button
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should result in the value of the selected radio button being posted when a subsequent one is checked by default" do
|
103
|
+
with_html <<-HTML
|
104
|
+
<html>
|
105
|
+
<form method="post" action="/login">
|
106
|
+
<input id="user_gender_male" name="user[gender]" type="radio" value="M" />
|
107
|
+
<label for="user_gender_male">Male</label>
|
108
|
+
<input id="user_gender_female" name="user[gender]" type="radio" value="F" checked="checked" />
|
109
|
+
<label for="user_gender_female">Female</label>
|
110
|
+
<input type="submit" />
|
111
|
+
</form>
|
112
|
+
</html>
|
113
|
+
HTML
|
114
|
+
webrat_session.should_receive(:post).with("/login", "user" => {"gender" => "M"})
|
115
|
+
choose "Male"
|
116
|
+
click_button
|
117
|
+
end
|
118
|
+
end
|