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,70 +1,70 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- describe "save_and_open_page" do
4
- before do
5
- with_html <<-HTML
6
- <html>
7
- <head>
8
- <link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
9
- </head>
10
- <body>
11
- <h1>Hello world</h1>
12
- <img src="/images/bar.png" />
13
- <img src='/images/foo.png' />
14
- </body>
15
- </html>
16
- HTML
17
-
18
- File.stub!(:exist? => true)
19
- Time.stub!(:now => 1234)
20
-
21
- require "launchy"
22
- Launchy::Browser.stub!(:run)
23
-
24
- @file_handle = mock("file handle")
25
- File.stub!(:open).with(filename, 'w').and_yield(@file_handle)
26
- @file_handle.stub!(:write)
27
- end
28
-
29
- it "should rewrite css rules" do
30
- @file_handle.should_receive(:write) do |html|
31
- html.should =~ %r|"#{webrat_session.doc_root}/stylesheets/foo.css"|s
32
- end
33
-
34
- save_and_open_page
35
- end
36
-
37
- it "should rewrite image paths with double quotes" do
38
- @file_handle.should_receive(:write) do |html|
39
- html.should =~ %r|"#{webrat_session.doc_root}/images/bar.png"|s
40
- end
41
-
42
- save_and_open_page
43
- end
44
-
45
- it "should rewrite image paths with single quotes" do
46
- @file_handle.should_receive(:write) do |html|
47
- html.should =~ %r|'#{webrat_session.doc_root}/images/foo.png'|s
48
- end
49
-
50
- save_and_open_page
51
- end
52
-
53
- it "should open the temp file in a browser with Launchy" do
54
- Launchy::Browser.should_receive(:run)
55
- save_and_open_page
56
- end
57
-
58
- it "should fail gracefully if Launchy is not available" do
59
- Launchy::Browser.should_receive(:run).and_raise(LoadError)
60
-
61
- lambda do
62
- save_and_open_page
63
- end.should_not raise_error
64
- end
65
-
66
- def filename
67
- File.expand_path("./webrat-#{Time.now}.html")
68
- end
69
-
70
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "save_and_open_page" do
4
+ before do
5
+ with_html <<-HTML
6
+ <html>
7
+ <head>
8
+ <link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
9
+ </head>
10
+ <body>
11
+ <h1>Hello world</h1>
12
+ <img src="/images/bar.png" />
13
+ <img src='/images/foo.png' />
14
+ </body>
15
+ </html>
16
+ HTML
17
+
18
+ File.stub!(:exist? => true)
19
+ Time.stub!(:now => 1234)
20
+
21
+ require "launchy"
22
+ Launchy::Browser.stub!(:run)
23
+
24
+ @file_handle = mock("file handle")
25
+ File.stub!(:open).with(filename, 'w').and_yield(@file_handle)
26
+ @file_handle.stub!(:write)
27
+ end
28
+
29
+ it "should rewrite css rules" do
30
+ @file_handle.should_receive(:write) do |html|
31
+ html.should =~ %r|"#{webrat_session.doc_root}/stylesheets/foo.css"|s
32
+ end
33
+
34
+ save_and_open_page
35
+ end
36
+
37
+ it "should rewrite image paths with double quotes" do
38
+ @file_handle.should_receive(:write) do |html|
39
+ html.should =~ %r|"#{webrat_session.doc_root}/images/bar.png"|s
40
+ end
41
+
42
+ save_and_open_page
43
+ end
44
+
45
+ it "should rewrite image paths with single quotes" do
46
+ @file_handle.should_receive(:write) do |html|
47
+ html.should =~ %r|'#{webrat_session.doc_root}/images/foo.png'|s
48
+ end
49
+
50
+ save_and_open_page
51
+ end
52
+
53
+ it "should open the temp file in a browser with Launchy" do
54
+ Launchy::Browser.should_receive(:run)
55
+ save_and_open_page
56
+ end
57
+
58
+ it "should fail gracefully if Launchy is not available" do
59
+ Launchy::Browser.should_receive(:run).and_raise(LoadError)
60
+
61
+ lambda do
62
+ save_and_open_page
63
+ end.should_not raise_error
64
+ end
65
+
66
+ def filename
67
+ File.expand_path("./webrat-#{Time.now}.html")
68
+ end
69
+
70
+ end
@@ -1,112 +1,112 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- describe "select_date" do
4
- it "should send the values for each individual date component" do
5
- with_html <<-HTML
6
- <html>
7
- <form action="/appointments" method="post">
8
- <label for="appointment_date">Date</label><br />
9
- <select id="appointment_date_1i" name="appointment[date(1i)]">
10
- <option value="2003">2003</option>
11
- </select>
12
- <select id="appointment_date_2i" name="appointment[date(2i)]">
13
- <option value="12">December</option>
14
- </select>
15
- <select id="appointment_date_3i" name="appointment[date(3i)]">
16
- <option value="25">25</option>
17
- </select>
18
- <input type="submit" />
19
- </form>
20
- </html>
21
- HTML
22
- webrat_session.should_receive(:post).with("/appointments",
23
- "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
24
- select_date "December 25, 2003", :from => "Date"
25
- click_button
26
- end
27
-
28
- it "should accept a date object" do
29
- with_html <<-HTML
30
- <html>
31
- <form action="/appointments" method="post">
32
- <label for="appointment_date">date</label><br />
33
- <select id="appointment_date_1i" name="appointment[date(1i)]">
34
- <option value="2003">2003</option>
35
- </select>
36
- <select id="appointment_date_2i" name="appointment[date(2i)]">
37
- <option value="12">December</option>
38
- </select>
39
- <select id="appointment_date_3i" name="appointment[date(3i)]">
40
- <option value="25">25</option>
41
- </select>
42
- <input type="submit" />
43
- </form>
44
- </html>
45
- HTML
46
- webrat_session.should_receive(:post).with("/appointments",
47
- "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
48
- select_date Date.parse("December 25, 2003"), :from => "date"
49
- click_button
50
- end
51
-
52
- it "should work when no label is specified" do
53
- with_html <<-HTML
54
- <html>
55
- <form action="/appointments" method="post">
56
- <select id="appointment_date_1i" name="appointment[date(1i)]">
57
- <option value="2003">2003</option>
58
- </select>
59
- <select id="appointment_date_2i" name="appointment[date(2i)]">
60
- <option value="12">December</option>
61
- </select>
62
- <select id="appointment_date_3i" name="appointment[date(3i)]">
63
- <option value="25">25</option>
64
- </select>
65
- <input type="submit" />
66
- </form>
67
- </html>
68
- HTML
69
- webrat_session.should_receive(:post).with("/appointments",
70
- "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
71
- select_date "December 25, 2003"
72
- click_button
73
- end
74
-
75
- it "should work when the label ends in a non word character" do
76
- with_html <<-HTML
77
- <html>
78
- <form action="/appointments" method="post">
79
- <label for="appointment_date">date ?</label><br />
80
- <select id="appointment_date_1i" name="appointment[date(1i)]">
81
- <option value="2003">2003</option>
82
- </select>
83
- <select id="appointment_date_2i" name="appointment[date(2i)]">
84
- <option value="12">December</option>
85
- </select>
86
- <select id="appointment_date_3i" name="appointment[date(3i)]">
87
- <option value="25">25</option>
88
- </select>
89
- <input type="submit" />
90
- </form>
91
- </html>
92
- HTML
93
- webrat_session.should_receive(:post).with("/appointments",
94
- "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
95
- select_date Date.parse("December 25, 2003"), :from => "date ?"
96
- click_button
97
- end
98
-
99
- it "should fail if the specified label is not found" do
100
- with_html <<-HTML
101
- <html>
102
- <form method="post" action="/appointments">
103
- <select name="month"><option>January</option></select>
104
- <input type="submit" />
105
- </form>
106
- </html>
107
- HTML
108
-
109
- lambda { select_date "December 25, 2003", :from => "date" }.should raise_error(Webrat::NotFoundError)
110
- end
111
-
112
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "select_date" do
4
+ it "should send the values for each individual date component" do
5
+ with_html <<-HTML
6
+ <html>
7
+ <form action="/appointments" method="post">
8
+ <label for="appointment_date">Date</label><br />
9
+ <select id="appointment_date_1i" name="appointment[date(1i)]">
10
+ <option value="2003">2003</option>
11
+ </select>
12
+ <select id="appointment_date_2i" name="appointment[date(2i)]">
13
+ <option value="12">December</option>
14
+ </select>
15
+ <select id="appointment_date_3i" name="appointment[date(3i)]">
16
+ <option value="25">25</option>
17
+ </select>
18
+ <input type="submit" />
19
+ </form>
20
+ </html>
21
+ HTML
22
+ webrat_session.should_receive(:post).with("/appointments",
23
+ "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
24
+ select_date "December 25, 2003", :from => "Date"
25
+ click_button
26
+ end
27
+
28
+ it "should accept a date object" do
29
+ with_html <<-HTML
30
+ <html>
31
+ <form action="/appointments" method="post">
32
+ <label for="appointment_date">date</label><br />
33
+ <select id="appointment_date_1i" name="appointment[date(1i)]">
34
+ <option value="2003">2003</option>
35
+ </select>
36
+ <select id="appointment_date_2i" name="appointment[date(2i)]">
37
+ <option value="12">December</option>
38
+ </select>
39
+ <select id="appointment_date_3i" name="appointment[date(3i)]">
40
+ <option value="25">25</option>
41
+ </select>
42
+ <input type="submit" />
43
+ </form>
44
+ </html>
45
+ HTML
46
+ webrat_session.should_receive(:post).with("/appointments",
47
+ "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
48
+ select_date Date.parse("December 25, 2003"), :from => "date"
49
+ click_button
50
+ end
51
+
52
+ it "should work when no label is specified" do
53
+ with_html <<-HTML
54
+ <html>
55
+ <form action="/appointments" method="post">
56
+ <select id="appointment_date_1i" name="appointment[date(1i)]">
57
+ <option value="2003">2003</option>
58
+ </select>
59
+ <select id="appointment_date_2i" name="appointment[date(2i)]">
60
+ <option value="12">December</option>
61
+ </select>
62
+ <select id="appointment_date_3i" name="appointment[date(3i)]">
63
+ <option value="25">25</option>
64
+ </select>
65
+ <input type="submit" />
66
+ </form>
67
+ </html>
68
+ HTML
69
+ webrat_session.should_receive(:post).with("/appointments",
70
+ "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
71
+ select_date "December 25, 2003"
72
+ click_button
73
+ end
74
+
75
+ it "should work when the label ends in a non word character" do
76
+ with_html <<-HTML
77
+ <html>
78
+ <form action="/appointments" method="post">
79
+ <label for="appointment_date">date ?</label><br />
80
+ <select id="appointment_date_1i" name="appointment[date(1i)]">
81
+ <option value="2003">2003</option>
82
+ </select>
83
+ <select id="appointment_date_2i" name="appointment[date(2i)]">
84
+ <option value="12">December</option>
85
+ </select>
86
+ <select id="appointment_date_3i" name="appointment[date(3i)]">
87
+ <option value="25">25</option>
88
+ </select>
89
+ <input type="submit" />
90
+ </form>
91
+ </html>
92
+ HTML
93
+ webrat_session.should_receive(:post).with("/appointments",
94
+ "appointment" => {"date(1i)" => '2003', "date(2i)" => "12", "date(3i)" => "25"})
95
+ select_date Date.parse("December 25, 2003"), :from => "date ?"
96
+ click_button
97
+ end
98
+
99
+ it "should fail if the specified label is not found" do
100
+ with_html <<-HTML
101
+ <html>
102
+ <form method="post" action="/appointments">
103
+ <select name="month"><option>January</option></select>
104
+ <input type="submit" />
105
+ </form>
106
+ </html>
107
+ HTML
108
+
109
+ lambda { select_date "December 25, 2003", :from => "date" }.should raise_error(Webrat::NotFoundError)
110
+ end
111
+
112
+ end
@@ -1,137 +1,137 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- describe "select_datetime" do
4
- it "should send the values for each individual date and time components" do
5
- with_html <<-HTML
6
- <html>
7
- <form action="/appointments" method="post">
8
- <label for="appointment_time">Time</label><br />
9
- <select id="appointment_time_1i" name="appointment[time(1i)]">
10
- <option value="2003">2003</option>
11
- </select>
12
- <select id="appointment_time_2i" name="appointment[time(2i)]">
13
- <option value="12">December</option>
14
- </select>
15
- <select id="appointment_time_3i" name="appointment[time(3i)]">
16
- <option value="25">25</option>
17
- </select>
18
- <select id="appointment_time_4i" name="appointment[time(4i)]">
19
- <option value="09">09</option>
20
- </select>
21
- : <select id="appointment_time_5i" name="appointment[time(5i)]">
22
- <option value="30">30</option>
23
- </select>
24
- <input type="submit" />
25
- </form>
26
- </html>
27
- HTML
28
- webrat_session.should_receive(:post).with("/appointments",
29
- "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
30
- select_datetime "December 25, 2003 9:30", :from => "Time"
31
- click_button
32
- end
33
-
34
- it "should accept a time object" do
35
- with_html <<-HTML
36
- <html>
37
- <form action="/appointments" method="post">
38
- <label for="appointment_time">Time</label><br />
39
- <select id="appointment_time_1i" name="appointment[time(1i)]">
40
- <option value="2003">2003</option>
41
- </select>
42
- <select id="appointment_time_2i" name="appointment[time(2i)]">
43
- <option value="12">December</option>
44
- </select>
45
- <select id="appointment_time_3i" name="appointment[time(3i)]">
46
- <option value="25">25</option>
47
- </select>
48
- <select id="appointment_time_4i" name="appointment[time(4i)]">
49
- <option value="09">09</option>
50
- </select>
51
- : <select id="appointment_time_5i" name="appointment[time(5i)]">
52
- <option value="30">30</option>
53
- </select>
54
- <input type="submit" />
55
- </form>
56
- </html>
57
- HTML
58
- webrat_session.should_receive(:post).with("/appointments",
59
- "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
60
- select_datetime Time.parse("December 25, 2003 9:30"), :from => "Time"
61
- click_button
62
- end
63
-
64
- it "should work when the label ends in a non word character" do
65
- with_html <<-HTML
66
- <html>
67
- <form action="/appointments" method="post">
68
- <label for="appointment_time">Time ?</label><br />
69
- <select id="appointment_time_1i" name="appointment[time(1i)]">
70
- <option value="2003">2003</option>
71
- </select>
72
- <select id="appointment_time_2i" name="appointment[time(2i)]">
73
- <option value="12">December</option>
74
- </select>
75
- <select id="appointment_time_3i" name="appointment[time(3i)]">
76
- <option value="25">25</option>
77
- </select>
78
- <select id="appointment_time_4i" name="appointment[time(4i)]">
79
- <option value="09">09</option>
80
- </select>
81
- : <select id="appointment_time_5i" name="appointment[time(5i)]">
82
- <option value="30">30</option>
83
- </select>
84
- <input type="submit" />
85
- </form>
86
- </html>
87
- HTML
88
- webrat_session.should_receive(:post).with("/appointments",
89
- "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
90
- select_datetime "December 25, 2003 9:30", :from => "Time ?"
91
- click_button
92
- end
93
-
94
-
95
- it "should work when no label is specified" do
96
- with_html <<-HTML
97
- <html>
98
- <form action="/appointments" method="post">
99
- <select id="appointment_time_1i" name="appointment[time(1i)]">
100
- <option value="2003">2003</option>
101
- </select>
102
- <select id="appointment_time_2i" name="appointment[time(2i)]">
103
- <option value="12">December</option>
104
- </select>
105
- <select id="appointment_time_3i" name="appointment[time(3i)]">
106
- <option value="25">25</option>
107
- </select>
108
- <select id="appointment_time_4i" name="appointment[time(4i)]">
109
- <option value="09">09</option>
110
- </select>
111
- : <select id="appointment_time_5i" name="appointment[time(5i)]">
112
- <option value="30">30</option>
113
- </select>
114
- <input type="submit" />
115
- </form>
116
- </html>
117
- HTML
118
- webrat_session.should_receive(:post).with("/appointments",
119
- "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
120
- select_datetime "December 25, 2003 9:30"
121
- click_button
122
- end
123
-
124
- it "should fail if the specified label is not found" do
125
- with_html <<-HTML
126
- <html>
127
- <form method="post" action="/appointments">
128
- <select name="month"><option>January</option></select>
129
- <input type="submit" />
130
- </form>
131
- </html>
132
- HTML
133
-
134
- lambda { select_datetime "December 25, 2003 9:30", :from => "Time" }.should raise_error(Webrat::NotFoundError)
135
- end
136
-
137
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "select_datetime" do
4
+ it "should send the values for each individual date and time components" do
5
+ with_html <<-HTML
6
+ <html>
7
+ <form action="/appointments" method="post">
8
+ <label for="appointment_time">Time</label><br />
9
+ <select id="appointment_time_1i" name="appointment[time(1i)]">
10
+ <option value="2003">2003</option>
11
+ </select>
12
+ <select id="appointment_time_2i" name="appointment[time(2i)]">
13
+ <option value="12">December</option>
14
+ </select>
15
+ <select id="appointment_time_3i" name="appointment[time(3i)]">
16
+ <option value="25">25</option>
17
+ </select>
18
+ <select id="appointment_time_4i" name="appointment[time(4i)]">
19
+ <option value="09">09</option>
20
+ </select>
21
+ : <select id="appointment_time_5i" name="appointment[time(5i)]">
22
+ <option value="30">30</option>
23
+ </select>
24
+ <input type="submit" />
25
+ </form>
26
+ </html>
27
+ HTML
28
+ webrat_session.should_receive(:post).with("/appointments",
29
+ "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
30
+ select_datetime "December 25, 2003 9:30", :from => "Time"
31
+ click_button
32
+ end
33
+
34
+ it "should accept a time object" do
35
+ with_html <<-HTML
36
+ <html>
37
+ <form action="/appointments" method="post">
38
+ <label for="appointment_time">Time</label><br />
39
+ <select id="appointment_time_1i" name="appointment[time(1i)]">
40
+ <option value="2003">2003</option>
41
+ </select>
42
+ <select id="appointment_time_2i" name="appointment[time(2i)]">
43
+ <option value="12">December</option>
44
+ </select>
45
+ <select id="appointment_time_3i" name="appointment[time(3i)]">
46
+ <option value="25">25</option>
47
+ </select>
48
+ <select id="appointment_time_4i" name="appointment[time(4i)]">
49
+ <option value="09">09</option>
50
+ </select>
51
+ : <select id="appointment_time_5i" name="appointment[time(5i)]">
52
+ <option value="30">30</option>
53
+ </select>
54
+ <input type="submit" />
55
+ </form>
56
+ </html>
57
+ HTML
58
+ webrat_session.should_receive(:post).with("/appointments",
59
+ "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
60
+ select_datetime Time.parse("December 25, 2003 9:30"), :from => "Time"
61
+ click_button
62
+ end
63
+
64
+ it "should work when the label ends in a non word character" do
65
+ with_html <<-HTML
66
+ <html>
67
+ <form action="/appointments" method="post">
68
+ <label for="appointment_time">Time ?</label><br />
69
+ <select id="appointment_time_1i" name="appointment[time(1i)]">
70
+ <option value="2003">2003</option>
71
+ </select>
72
+ <select id="appointment_time_2i" name="appointment[time(2i)]">
73
+ <option value="12">December</option>
74
+ </select>
75
+ <select id="appointment_time_3i" name="appointment[time(3i)]">
76
+ <option value="25">25</option>
77
+ </select>
78
+ <select id="appointment_time_4i" name="appointment[time(4i)]">
79
+ <option value="09">09</option>
80
+ </select>
81
+ : <select id="appointment_time_5i" name="appointment[time(5i)]">
82
+ <option value="30">30</option>
83
+ </select>
84
+ <input type="submit" />
85
+ </form>
86
+ </html>
87
+ HTML
88
+ webrat_session.should_receive(:post).with("/appointments",
89
+ "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
90
+ select_datetime "December 25, 2003 9:30", :from => "Time ?"
91
+ click_button
92
+ end
93
+
94
+
95
+ it "should work when no label is specified" do
96
+ with_html <<-HTML
97
+ <html>
98
+ <form action="/appointments" method="post">
99
+ <select id="appointment_time_1i" name="appointment[time(1i)]">
100
+ <option value="2003">2003</option>
101
+ </select>
102
+ <select id="appointment_time_2i" name="appointment[time(2i)]">
103
+ <option value="12">December</option>
104
+ </select>
105
+ <select id="appointment_time_3i" name="appointment[time(3i)]">
106
+ <option value="25">25</option>
107
+ </select>
108
+ <select id="appointment_time_4i" name="appointment[time(4i)]">
109
+ <option value="09">09</option>
110
+ </select>
111
+ : <select id="appointment_time_5i" name="appointment[time(5i)]">
112
+ <option value="30">30</option>
113
+ </select>
114
+ <input type="submit" />
115
+ </form>
116
+ </html>
117
+ HTML
118
+ webrat_session.should_receive(:post).with("/appointments",
119
+ "appointment" => {"time(1i)" => '2003', "time(2i)" => "12", "time(3i)" => "25", "time(4i)" => "09", "time(5i)" => "30"})
120
+ select_datetime "December 25, 2003 9:30"
121
+ click_button
122
+ end
123
+
124
+ it "should fail if the specified label is not found" do
125
+ with_html <<-HTML
126
+ <html>
127
+ <form method="post" action="/appointments">
128
+ <select name="month"><option>January</option></select>
129
+ <input type="submit" />
130
+ </form>
131
+ </html>
132
+ HTML
133
+
134
+ lambda { select_datetime "December 25, 2003 9:30", :from => "Time" }.should raise_error(Webrat::NotFoundError)
135
+ end
136
+
137
+ end