actionpack 2.0.5 → 2.1.0

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 (210) hide show
  1. data/CHANGELOG +149 -7
  2. data/MIT-LICENSE +1 -1
  3. data/README +1 -1
  4. data/Rakefile +5 -6
  5. data/lib/action_controller.rb +2 -2
  6. data/lib/action_controller/assertions/model_assertions.rb +2 -1
  7. data/lib/action_controller/assertions/response_assertions.rb +4 -2
  8. data/lib/action_controller/assertions/routing_assertions.rb +3 -3
  9. data/lib/action_controller/assertions/selector_assertions.rb +30 -27
  10. data/lib/action_controller/assertions/tag_assertions.rb +3 -3
  11. data/lib/action_controller/base.rb +103 -129
  12. data/lib/action_controller/benchmarking.rb +3 -3
  13. data/lib/action_controller/caching.rb +41 -652
  14. data/lib/action_controller/caching/actions.rb +144 -0
  15. data/lib/action_controller/caching/fragments.rb +138 -0
  16. data/lib/action_controller/caching/pages.rb +154 -0
  17. data/lib/action_controller/caching/sql_cache.rb +18 -0
  18. data/lib/action_controller/caching/sweeping.rb +97 -0
  19. data/lib/action_controller/cgi_ext/cookie.rb +27 -23
  20. data/lib/action_controller/cgi_ext/stdinput.rb +1 -0
  21. data/lib/action_controller/cgi_process.rb +6 -4
  22. data/lib/action_controller/components.rb +7 -6
  23. data/lib/action_controller/cookies.rb +31 -19
  24. data/lib/action_controller/dispatcher.rb +51 -84
  25. data/lib/action_controller/filters.rb +295 -421
  26. data/lib/action_controller/flash.rb +1 -6
  27. data/lib/action_controller/headers.rb +31 -0
  28. data/lib/action_controller/helpers.rb +26 -9
  29. data/lib/action_controller/http_authentication.rb +1 -1
  30. data/lib/action_controller/integration.rb +65 -13
  31. data/lib/action_controller/layout.rb +24 -39
  32. data/lib/action_controller/mime_responds.rb +7 -3
  33. data/lib/action_controller/mime_type.rb +25 -9
  34. data/lib/action_controller/mime_types.rb +1 -1
  35. data/lib/action_controller/polymorphic_routes.rb +32 -17
  36. data/lib/action_controller/record_identifier.rb +10 -4
  37. data/lib/action_controller/request.rb +46 -30
  38. data/lib/action_controller/request_forgery_protection.rb +10 -9
  39. data/lib/action_controller/request_profiler.rb +29 -8
  40. data/lib/action_controller/rescue.rb +24 -24
  41. data/lib/action_controller/resources.rb +66 -23
  42. data/lib/action_controller/response.rb +2 -2
  43. data/lib/action_controller/routing.rb +113 -1229
  44. data/lib/action_controller/routing/builder.rb +204 -0
  45. data/lib/action_controller/{routing_optimisation.rb → routing/optimisations.rb} +13 -12
  46. data/lib/action_controller/routing/recognition_optimisation.rb +158 -0
  47. data/lib/action_controller/routing/route.rb +240 -0
  48. data/lib/action_controller/routing/route_set.rb +435 -0
  49. data/lib/action_controller/routing/routing_ext.rb +46 -0
  50. data/lib/action_controller/routing/segments.rb +283 -0
  51. data/lib/action_controller/session/active_record_store.rb +13 -8
  52. data/lib/action_controller/session/cookie_store.rb +20 -17
  53. data/lib/action_controller/session_management.rb +10 -3
  54. data/lib/action_controller/streaming.rb +45 -31
  55. data/lib/action_controller/test_case.rb +33 -23
  56. data/lib/action_controller/test_process.rb +39 -35
  57. data/lib/action_controller/url_rewriter.rb +18 -12
  58. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +1 -1
  59. data/lib/action_pack.rb +1 -1
  60. data/lib/action_pack/version.rb +2 -2
  61. data/lib/action_view.rb +11 -3
  62. data/lib/action_view/base.rb +73 -390
  63. data/lib/action_view/helpers/active_record_helper.rb +83 -62
  64. data/lib/action_view/helpers/asset_tag_helper.rb +101 -44
  65. data/lib/action_view/helpers/atom_feed_helper.rb +35 -7
  66. data/lib/action_view/helpers/benchmark_helper.rb +5 -3
  67. data/lib/action_view/helpers/cache_helper.rb +3 -2
  68. data/lib/action_view/helpers/capture_helper.rb +1 -2
  69. data/lib/action_view/helpers/date_helper.rb +104 -82
  70. data/lib/action_view/helpers/form_helper.rb +148 -75
  71. data/lib/action_view/helpers/form_options_helper.rb +44 -23
  72. data/lib/action_view/helpers/form_tag_helper.rb +22 -13
  73. data/lib/action_view/helpers/javascripts/controls.js +1 -1
  74. data/lib/action_view/helpers/javascripts/dragdrop.js +1 -1
  75. data/lib/action_view/helpers/javascripts/effects.js +1 -1
  76. data/lib/action_view/helpers/number_helper.rb +10 -3
  77. data/lib/action_view/helpers/prototype_helper.rb +61 -29
  78. data/lib/action_view/helpers/record_tag_helper.rb +3 -3
  79. data/lib/action_view/helpers/sanitize_helper.rb +23 -17
  80. data/lib/action_view/helpers/scriptaculous_helper.rb +86 -60
  81. data/lib/action_view/helpers/text_helper.rb +153 -125
  82. data/lib/action_view/helpers/url_helper.rb +83 -28
  83. data/lib/action_view/inline_template.rb +20 -0
  84. data/lib/action_view/partial_template.rb +70 -0
  85. data/lib/action_view/partials.rb +31 -73
  86. data/lib/action_view/template.rb +127 -0
  87. data/lib/action_view/template_error.rb +8 -7
  88. data/lib/action_view/template_finder.rb +177 -0
  89. data/lib/action_view/template_handler.rb +18 -1
  90. data/lib/action_view/template_handlers/builder.rb +10 -2
  91. data/lib/action_view/template_handlers/compilable.rb +128 -0
  92. data/lib/action_view/template_handlers/erb.rb +37 -2
  93. data/lib/action_view/template_handlers/rjs.rb +14 -1
  94. data/lib/action_view/test_case.rb +58 -0
  95. data/test/abstract_unit.rb +1 -1
  96. data/test/active_record_unit.rb +3 -6
  97. data/test/activerecord/active_record_store_test.rb +1 -2
  98. data/test/activerecord/render_partial_with_record_identification_test.rb +158 -41
  99. data/test/adv_attr_test.rb +20 -0
  100. data/test/controller/action_pack_assertions_test.rb +16 -19
  101. data/test/controller/addresses_render_test.rb +1 -1
  102. data/test/controller/assert_select_test.rb +13 -6
  103. data/test/controller/base_test.rb +48 -2
  104. data/test/controller/benchmark_test.rb +1 -2
  105. data/test/controller/caching_test.rb +282 -21
  106. data/test/controller/capture_test.rb +1 -1
  107. data/test/controller/cgi_test.rb +1 -1
  108. data/test/controller/components_test.rb +1 -1
  109. data/test/controller/content_type_test.rb +2 -2
  110. data/test/controller/cookie_test.rb +13 -2
  111. data/test/controller/custom_handler_test.rb +14 -10
  112. data/test/controller/deprecation/deprecated_base_methods_test.rb +1 -1
  113. data/test/controller/dispatcher_test.rb +31 -49
  114. data/test/controller/fake_controllers.rb +17 -0
  115. data/test/controller/fake_models.rb +6 -0
  116. data/test/controller/filter_params_test.rb +14 -8
  117. data/test/controller/filters_test.rb +44 -16
  118. data/test/controller/flash_test.rb +2 -2
  119. data/test/controller/header_test.rb +14 -0
  120. data/test/controller/helper_test.rb +19 -15
  121. data/test/controller/html-scanner/document_test.rb +1 -2
  122. data/test/controller/html-scanner/node_test.rb +1 -2
  123. data/test/controller/html-scanner/sanitizer_test.rb +8 -5
  124. data/test/controller/html-scanner/tag_node_test.rb +1 -2
  125. data/test/controller/html-scanner/text_node_test.rb +2 -3
  126. data/test/controller/html-scanner/tokenizer_test.rb +8 -2
  127. data/test/controller/http_authentication_test.rb +1 -1
  128. data/test/controller/integration_test.rb +14 -16
  129. data/test/controller/integration_upload_test.rb +43 -0
  130. data/test/controller/layout_test.rb +26 -6
  131. data/test/controller/mime_responds_test.rb +39 -7
  132. data/test/controller/mime_type_test.rb +29 -5
  133. data/test/controller/new_render_test.rb +105 -34
  134. data/test/controller/polymorphic_routes_test.rb +32 -20
  135. data/test/controller/record_identifier_test.rb +38 -2
  136. data/test/controller/redirect_test.rb +21 -1
  137. data/test/controller/render_test.rb +59 -15
  138. data/test/controller/request_forgery_protection_test.rb +92 -5
  139. data/test/controller/request_test.rb +64 -6
  140. data/test/controller/rescue_test.rb +22 -6
  141. data/test/controller/resources_test.rb +102 -14
  142. data/test/controller/routing_test.rb +231 -19
  143. data/test/controller/selector_test.rb +2 -2
  144. data/test/controller/send_file_test.rb +14 -3
  145. data/test/controller/session/cookie_store_test.rb +16 -4
  146. data/test/controller/session/mem_cache_store_test.rb +3 -4
  147. data/test/controller/session_fixation_test.rb +1 -1
  148. data/test/controller/session_management_test.rb +23 -1
  149. data/test/controller/test_test.rb +39 -18
  150. data/test/controller/url_rewriter_test.rb +35 -1
  151. data/test/controller/verification_test.rb +1 -1
  152. data/test/controller/view_paths_test.rb +15 -12
  153. data/test/controller/webservice_test.rb +48 -3
  154. data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  155. data/test/fixtures/company.rb +1 -0
  156. data/test/fixtures/customers/_customer.html.erb +1 -0
  157. data/test/fixtures/db_definitions/sqlite.sql +6 -0
  158. data/test/fixtures/functional_caching/_partial.erb +3 -0
  159. data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  160. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  161. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  162. data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  163. data/test/fixtures/mascot.rb +3 -0
  164. data/test/fixtures/mascots.yml +4 -0
  165. data/test/fixtures/mascots/_mascot.html.erb +1 -0
  166. data/test/fixtures/multipart/boundary_problem_file +10 -0
  167. data/test/fixtures/public/javascripts/application.js +1 -0
  168. data/test/fixtures/public/javascripts/controls.js +1 -0
  169. data/test/fixtures/public/javascripts/dragdrop.js +1 -0
  170. data/test/fixtures/public/javascripts/effects.js +1 -0
  171. data/test/fixtures/public/javascripts/prototype.js +1 -0
  172. data/test/fixtures/public/javascripts/version.1.0.js +1 -0
  173. data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  174. data/test/fixtures/reply.rb +1 -0
  175. data/test/fixtures/shared.html.erb +1 -0
  176. data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  177. data/test/fixtures/test/_customer_counter.erb +1 -0
  178. data/test/fixtures/test/_form.erb +1 -0
  179. data/test/fixtures/test/_labelling_form.erb +1 -0
  180. data/test/fixtures/test/_raise.html.erb +1 -0
  181. data/test/fixtures/test/greeting.js.rjs +1 -0
  182. data/test/fixtures/topics/_topic.html.erb +1 -0
  183. data/test/template/active_record_helper_test.rb +25 -8
  184. data/test/template/asset_tag_helper_test.rb +100 -17
  185. data/test/template/atom_feed_helper_test.rb +29 -1
  186. data/test/template/benchmark_helper_test.rb +10 -22
  187. data/test/template/date_helper_test.rb +455 -153
  188. data/test/template/erb_util_test.rb +10 -42
  189. data/test/template/form_helper_test.rb +192 -66
  190. data/test/template/form_options_helper_test.rb +19 -8
  191. data/test/template/form_tag_helper_test.rb +11 -8
  192. data/test/template/javascript_helper_test.rb +3 -9
  193. data/test/template/number_helper_test.rb +6 -3
  194. data/test/template/prototype_helper_test.rb +27 -40
  195. data/test/template/record_tag_helper_test.rb +54 -0
  196. data/test/template/sanitize_helper_test.rb +5 -6
  197. data/test/template/scriptaculous_helper_test.rb +7 -13
  198. data/test/template/tag_helper_test.rb +3 -6
  199. data/test/template/template_finder_test.rb +73 -0
  200. data/test/template/template_object_test.rb +95 -0
  201. data/test/template/test_test.rb +56 -0
  202. data/test/template/text_helper_test.rb +46 -33
  203. data/test/template/url_helper_test.rb +8 -10
  204. metadata +65 -12
  205. data/lib/action_view/compiled_templates.rb +0 -69
  206. data/test/action_view_test.rb +0 -44
  207. data/test/activerecord/fixtures_test.rb +0 -24
  208. data/test/controller/fragment_store_setting_test.rb +0 -47
  209. data/test/template/compiled_templates_test.rb +0 -197
  210. data/test/template/deprecate_ivars_test.rb +0 -51
@@ -0,0 +1 @@
1
+ // effects js
@@ -0,0 +1 @@
1
+ // prototype js
@@ -0,0 +1 @@
1
+ // version.1.0 js
@@ -0,0 +1 @@
1
+ /* version.1.0.css */
@@ -1,4 +1,5 @@
1
1
  class Reply < ActiveRecord::Base
2
+ named_scope :base
2
3
  belongs_to :topic, :include => [:replies]
3
4
  belongs_to :developer
4
5
 
@@ -0,0 +1 @@
1
+ Elastica
@@ -0,0 +1,5 @@
1
+ This is my layout
2
+
3
+ <%= yield %>
4
+
5
+ End.
@@ -0,0 +1 @@
1
+ <%= customer_counter.name %><%= customer_counter_counter %>
@@ -0,0 +1 @@
1
+ <%= form.label :title %>
@@ -0,0 +1 @@
1
+ <%= labelling_form.label :title %>
@@ -0,0 +1 @@
1
+ <%= doesnt_exist %>
@@ -0,0 +1 @@
1
+ page[:body].visual_effect :highlight
@@ -0,0 +1 @@
1
+ <%= topic.title %>
@@ -1,12 +1,7 @@
1
- require "#{File.dirname(__FILE__)}/../abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
- class ActiveRecordHelperTest < Test::Unit::TestCase
4
- include ActionView::Helpers::FormHelper
5
- include ActionView::Helpers::ActiveRecordHelper
6
- include ActionView::Helpers::TextHelper
7
- include ActionView::Helpers::TagHelper
8
- include ActionView::Helpers::UrlHelper
9
- include ActionView::Helpers::FormTagHelper
3
+ class ActiveRecordHelperTest < ActionView::TestCase
4
+ tests ActionView::Helpers::ActiveRecordHelper
10
5
 
11
6
  silence_warnings do
12
7
  Post = Struct.new("Post", :title, :author_name, :body, :secret, :written_on)
@@ -86,6 +81,11 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
86
81
 
87
82
  @user.email = ""
88
83
  end
84
+
85
+ def protect_against_forgery?
86
+ @protect_against_forgery ? true : false
87
+ end
88
+ attr_accessor :request_forgery_protection_token, :form_authenticity_token
89
89
 
90
90
  def setup
91
91
  setup_post
@@ -140,6 +140,23 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
140
140
  form("post")
141
141
  )
142
142
  end
143
+
144
+ def test_form_with_protect_against_forgery
145
+ @protect_against_forgery = true
146
+ @request_forgery_protection_token = 'authenticity_token'
147
+ @form_authenticity_token = '123'
148
+ assert_dom_equal(
149
+ %(<form action="create" method="post"><div style='margin:0;padding:0'><input type='hidden' name='authenticity_token' value='123' /></div><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>),
150
+ form("post")
151
+ )
152
+ end
153
+
154
+ def test_form_with_method_option
155
+ assert_dom_equal(
156
+ %(<form action="create" method="get"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>),
157
+ form("post", :method=>'get')
158
+ )
159
+ end
143
160
 
144
161
  def test_form_with_action_option
145
162
  @response.body = form("post", :action => "sign")
@@ -1,9 +1,7 @@
1
- require "#{File.dirname(__FILE__)}/../abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
- class AssetTagHelperTest < Test::Unit::TestCase
4
- include ActionView::Helpers::TagHelper
5
- include ActionView::Helpers::UrlHelper
6
- include ActionView::Helpers::AssetTagHelper
3
+ class AssetTagHelperTest < ActionView::TestCase
4
+ tests ActionView::Helpers::AssetTagHelper
7
5
 
8
6
  def setup
9
7
  silence_warnings do
@@ -34,6 +32,8 @@ class AssetTagHelperTest < Test::Unit::TestCase
34
32
  @request = Class.new do
35
33
  def relative_url_root() "" end
36
34
  def protocol() 'http://' end
35
+ def ssl?() false end
36
+ def host_with_port() 'localhost' end
37
37
  end.new
38
38
 
39
39
  @controller.request = @request
@@ -82,7 +82,7 @@ class AssetTagHelperTest < Test::Unit::TestCase
82
82
  %(javascript_include_tag("xmlhr", :lang => "vbscript")) => %(<script lang="vbscript" src="/javascripts/xmlhr.js" type="text/javascript"></script>),
83
83
  %(javascript_include_tag("common.javascript", "/elsewhere/cools")) => %(<script src="/javascripts/common.javascript" type="text/javascript"></script>\n<script src="/elsewhere/cools.js" type="text/javascript"></script>),
84
84
  %(javascript_include_tag(:defaults)) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>),
85
- %(javascript_include_tag(:all)) => %(<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>),
85
+ %(javascript_include_tag(:all)) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
86
86
  %(javascript_include_tag(:defaults, "test")) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/test.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>),
87
87
  %(javascript_include_tag("test", :defaults)) => %(<script src="/javascripts/test.js" type="text/javascript"></script>\n<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>)
88
88
  }
@@ -107,8 +107,8 @@ class AssetTagHelperTest < Test::Unit::TestCase
107
107
  %(stylesheet_link_tag("/dir/file")) => %(<link href="/dir/file.css" media="screen" rel="stylesheet" type="text/css" />),
108
108
  %(stylesheet_link_tag("dir/file")) => %(<link href="/stylesheets/dir/file.css" media="screen" rel="stylesheet" type="text/css" />),
109
109
  %(stylesheet_link_tag("style", :media => "all")) => %(<link href="/stylesheets/style.css" media="all" rel="stylesheet" type="text/css" />),
110
- %(stylesheet_link_tag(:all)) => %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />),
111
- %(stylesheet_link_tag(:all, :media => "all")) => %(<link href="/stylesheets/bank.css" media="all" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="all" rel="stylesheet" type="text/css" />),
110
+ %(stylesheet_link_tag(:all)) => %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
111
+ %(stylesheet_link_tag(:all, :media => "all")) => %(<link href="/stylesheets/bank.css" media="all" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="all" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="all" rel="stylesheet" type="text/css" />),
112
112
  %(stylesheet_link_tag("random.styles", "/css/stylish")) => %(<link href="/stylesheets/random.styles" media="screen" rel="stylesheet" type="text/css" />\n<link href="/css/stylish.css" media="screen" rel="stylesheet" type="text/css" />),
113
113
  %(stylesheet_link_tag("http://www.example.com/styles/style")) => %(<link href="http://www.example.com/styles/style.css" media="screen" rel="stylesheet" type="text/css" />)
114
114
  }
@@ -129,6 +129,7 @@ class AssetTagHelperTest < Test::Unit::TestCase
129
129
 
130
130
  ImageLinkToTag = {
131
131
  %(image_tag("xml.png")) => %(<img alt="Xml" src="/images/xml.png" />),
132
+ %(image_tag("..jpg")) => %(<img alt="" src="/images/..jpg" />),
132
133
  %(image_tag("rss.gif", :alt => "rss syndication")) => %(<img alt="rss syndication" src="/images/rss.gif" />),
133
134
  %(image_tag("gold.png", :size => "45x70")) => %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />),
134
135
  %(image_tag("gold.png", "size" => "45x70")) => %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />),
@@ -172,6 +173,22 @@ class AssetTagHelperTest < Test::Unit::TestCase
172
173
  assert_dom_equal %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/slider.js" type="text/javascript"></script>\n<script src="/javascripts/lib1.js" type="text/javascript"></script>\n<script src="/elsewhere/blub/lib2.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>), javascript_include_tag(:defaults)
173
174
  end
174
175
 
176
+ def test_custom_javascript_expansions
177
+ ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => ["head", "body", "tail"]
178
+ assert_dom_equal %(<script src="/javascripts/first.js" type="text/javascript"></script>\n<script src="/javascripts/head.js" type="text/javascript"></script>\n<script src="/javascripts/body.js" type="text/javascript"></script>\n<script src="/javascripts/tail.js" type="text/javascript"></script>\n<script src="/javascripts/last.js" type="text/javascript"></script>), javascript_include_tag('first', :monkey, 'last')
179
+ end
180
+
181
+ def test_custom_javascript_expansions_and_defaults_puts_application_js_at_the_end
182
+ ENV["RAILS_ASSET_ID"] = ""
183
+ ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => ["head", "body", "tail"]
184
+ assert_dom_equal %(<script src="/javascripts/first.js" type="text/javascript"></script>\n<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/head.js" type="text/javascript"></script>\n<script src="/javascripts/body.js" type="text/javascript"></script>\n<script src="/javascripts/tail.js" type="text/javascript"></script>\n<script src="/javascripts/last.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>), javascript_include_tag('first', :defaults, :monkey, 'last')
185
+ end
186
+
187
+ def test_custom_javascript_expansions_with_undefined_symbol
188
+ ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => nil
189
+ assert_raise(ArgumentError) { javascript_include_tag('first', :monkey, 'last') }
190
+ end
191
+
175
192
  def test_stylesheet_path
176
193
  StylePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
177
194
  end
@@ -185,6 +202,16 @@ class AssetTagHelperTest < Test::Unit::TestCase
185
202
  StyleLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
186
203
  end
187
204
 
205
+ def test_custom_stylesheet_expansions
206
+ ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey => ["head", "body", "tail"]
207
+ assert_dom_equal %(<link href="/stylesheets/first.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/head.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/body.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/tail.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/last.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag('first', :monkey, 'last')
208
+ end
209
+
210
+ def test_custom_stylesheet_expansions_with_undefined_symbol
211
+ ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey => nil
212
+ assert_raise(ArgumentError) { stylesheet_link_tag('first', :monkey, 'last') }
213
+ end
214
+
188
215
  def test_image_path
189
216
  ImagePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
190
217
  end
@@ -248,7 +275,7 @@ class AssetTagHelperTest < Test::Unit::TestCase
248
275
  end
249
276
 
250
277
  def test_caching_javascript_include_tag_when_caching_on_with_proc_asset_host
251
- ENV["RAILS_ASSET_ID"] = ""
278
+ ENV['RAILS_ASSET_ID'] = ''
252
279
  ActionController::Base.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
253
280
  ActionController::Base.perform_caching = true
254
281
 
@@ -264,6 +291,43 @@ class AssetTagHelperTest < Test::Unit::TestCase
264
291
  FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'scripts.js'))
265
292
  end
266
293
 
294
+ def test_caching_javascript_include_tag_when_caching_on_with_2_argument_proc_asset_host
295
+ ENV['RAILS_ASSET_ID'] = ''
296
+ ActionController::Base.asset_host = Proc.new { |source, request|
297
+ if request.ssl?
298
+ "#{request.protocol}#{request.host_with_port}"
299
+ else
300
+ "#{request.protocol}assets#{source.length}.example.com"
301
+ end
302
+ }
303
+ ActionController::Base.perform_caching = true
304
+
305
+ assert_equal '/javascripts/vanilla.js'.length, 23
306
+ assert_dom_equal(
307
+ %(<script src="http://assets23.example.com/javascripts/vanilla.js" type="text/javascript"></script>),
308
+ javascript_include_tag(:all, :cache => 'vanilla')
309
+ )
310
+
311
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
312
+
313
+ class << @controller.request
314
+ def protocol() 'https://' end
315
+ def ssl?() true end
316
+ end
317
+
318
+ assert_equal '/javascripts/secure.js'.length, 22
319
+ assert_dom_equal(
320
+ %(<script src="https://localhost/javascripts/secure.js" type="text/javascript"></script>),
321
+ javascript_include_tag(:all, :cache => 'secure')
322
+ )
323
+
324
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
325
+
326
+ ensure
327
+ FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
328
+ FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
329
+ end
330
+
267
331
  def test_caching_javascript_include_tag_when_caching_on_and_using_subdirectory
268
332
  ENV["RAILS_ASSET_ID"] = ""
269
333
  ActionController::Base.asset_host = 'http://a%d.example.com'
@@ -279,19 +343,40 @@ class AssetTagHelperTest < Test::Unit::TestCase
279
343
  FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
280
344
  end
281
345
 
346
+ def test_caching_javascript_include_tag_with_all_puts_defaults_at_the_start_of_the_file
347
+ ENV["RAILS_ASSET_ID"] = ""
348
+ ActionController::Base.asset_host = 'http://a0.example.com'
349
+ ActionController::Base.perform_caching = true
350
+
351
+ assert_dom_equal(
352
+ %(<script src="http://a0.example.com/javascripts/combined.js" type="text/javascript"></script>),
353
+ javascript_include_tag(:all, :cache => "combined")
354
+ )
355
+
356
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
357
+
358
+ assert_equal(
359
+ %(// prototype js\n\n// effects js\n\n// dragdrop js\n\n// controls js\n\n// application js\n\n// bank js\n\n// robber js\n\n// version.1.0 js),
360
+ IO.read(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
361
+ )
362
+
363
+ ensure
364
+ FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
365
+ end
366
+
282
367
  def test_caching_javascript_include_tag_when_caching_off
283
368
  ENV["RAILS_ASSET_ID"] = ""
284
369
  ActionController::Base.perform_caching = false
285
370
 
286
371
  assert_dom_equal(
287
- %(<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>),
372
+ %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
288
373
  javascript_include_tag(:all, :cache => true)
289
374
  )
290
375
 
291
376
  assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
292
377
 
293
378
  assert_dom_equal(
294
- %(<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>),
379
+ %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
295
380
  javascript_include_tag(:all, :cache => "money")
296
381
  )
297
382
 
@@ -343,14 +428,14 @@ class AssetTagHelperTest < Test::Unit::TestCase
343
428
  ActionController::Base.perform_caching = false
344
429
 
345
430
  assert_dom_equal(
346
- %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />),
431
+ %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
347
432
  stylesheet_link_tag(:all, :cache => true)
348
433
  )
349
434
 
350
435
  assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
351
436
 
352
437
  assert_dom_equal(
353
- %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />),
438
+ %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
354
439
  stylesheet_link_tag(:all, :cache => "money")
355
440
  )
356
441
 
@@ -358,10 +443,8 @@ class AssetTagHelperTest < Test::Unit::TestCase
358
443
  end
359
444
  end
360
445
 
361
- class AssetTagHelperNonVhostTest < Test::Unit::TestCase
362
- include ActionView::Helpers::TagHelper
363
- include ActionView::Helpers::UrlHelper
364
- include ActionView::Helpers::AssetTagHelper
446
+ class AssetTagHelperNonVhostTest < ActionView::TestCase
447
+ tests ActionView::Helpers::AssetTagHelper
365
448
 
366
449
  def setup
367
450
  @controller = Class.new do
@@ -1,4 +1,4 @@
1
- require "#{File.dirname(__FILE__)}/../abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
3
  Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at)
4
4
 
@@ -55,6 +55,25 @@ class ScrollsController < ActionController::Base
55
55
  end
56
56
  end
57
57
  EOT
58
+ FEEDS["feed_with_atomPub_namespace"] = <<-EOT
59
+ atom_feed({'xmlns:app' => 'http://www.w3.org/2007/app',
60
+ 'xmlns:openSearch' => 'http://a9.com/-/spec/opensearch/1.1/'}) do |feed|
61
+ feed.title("My great blog!")
62
+ feed.updated((@scrolls.first.created_at))
63
+
64
+ for scroll in @scrolls
65
+ feed.entry(scroll) do |entry|
66
+ entry.title(scroll.title)
67
+ entry.content(scroll.body, :type => 'html')
68
+ entry.tag!('app:edited', Time.now)
69
+
70
+ entry.author do |author|
71
+ author.name("DHH")
72
+ end
73
+ end
74
+ end
75
+ end
76
+ EOT
58
77
  def index
59
78
  @scrolls = [
60
79
  Scroll.new(1, "1", "Hello One", "Something <i>COOL!</i>", Time.utc(2007, 12, 12, 15), Time.utc(2007, 12, 12, 15)),
@@ -139,6 +158,15 @@ class AtomFeedTest < Test::Unit::TestCase
139
158
  end
140
159
  end
141
160
 
161
+ def test_feed_should_include_atomPub_namespace
162
+ with_restful_routing(:scrolls) do
163
+ get :index, :id => "feed_with_atomPub_namespace"
164
+ assert_match %r{xml:lang="en-US"}, @response.body
165
+ assert_match %r{xmlns="http://www.w3.org/2005/Atom"}, @response.body
166
+ assert_match %r{xmlns:app="http://www.w3.org/2007/app"}, @response.body
167
+ end
168
+ end
169
+
142
170
  private
143
171
  def with_restful_routing(resources)
144
172
  with_routing do |set|
@@ -1,8 +1,8 @@
1
- require "#{File.dirname(__FILE__)}/../abstract_unit"
1
+ require 'abstract_unit'
2
2
  require 'action_view/helpers/benchmark_helper'
3
3
 
4
- class BenchmarkHelperTest < Test::Unit::TestCase
5
- include ActionView::Helpers::BenchmarkHelper
4
+ class BenchmarkHelperTest < ActionView::TestCase
5
+ tests ActionView::Helpers::BenchmarkHelper
6
6
 
7
7
  class MockLogger
8
8
  attr_reader :logged
@@ -16,32 +16,20 @@ class BenchmarkHelperTest < Test::Unit::TestCase
16
16
  end
17
17
  end
18
18
 
19
- def setup
20
- @logger = MockLogger.new
21
- end
22
-
23
- def test_without_logger_or_block
24
- @logger = nil
25
- assert_nothing_raised { benchmark }
19
+ def controller
20
+ @controller ||= Struct.new(:logger).new(MockLogger.new)
26
21
  end
27
22
 
28
23
  def test_without_block
29
24
  assert_raise(LocalJumpError) { benchmark }
30
- assert @logger.logged.empty?
31
- end
32
-
33
- def test_without_logger
34
- @logger = nil
35
- i_was_run = false
36
- benchmark { i_was_run = true }
37
- assert !i_was_run
25
+ assert controller.logger.logged.empty?
38
26
  end
39
27
 
40
28
  def test_defaults
41
29
  i_was_run = false
42
30
  benchmark { i_was_run = true }
43
31
  assert i_was_run
44
- assert 1, @logger.logged.size
32
+ assert 1, controller.logger.logged.size
45
33
  assert_last_logged
46
34
  end
47
35
 
@@ -49,7 +37,7 @@ class BenchmarkHelperTest < Test::Unit::TestCase
49
37
  i_was_run = false
50
38
  benchmark('test_run') { i_was_run = true }
51
39
  assert i_was_run
52
- assert 1, @logger.logged.size
40
+ assert 1, controller.logger.logged.size
53
41
  assert_last_logged 'test_run'
54
42
  end
55
43
 
@@ -57,13 +45,13 @@ class BenchmarkHelperTest < Test::Unit::TestCase
57
45
  i_was_run = false
58
46
  benchmark('debug_run', :debug) { i_was_run = true }
59
47
  assert i_was_run
60
- assert 1, @logger.logged.size
48
+ assert 1, controller.logger.logged.size
61
49
  assert_last_logged 'debug_run', :debug
62
50
  end
63
51
 
64
52
  private
65
53
  def assert_last_logged(message = 'Benchmarking', level = :info)
66
- last = @logger.logged.last
54
+ last = controller.logger.logged.last
67
55
  assert 2, last.size
68
56
  assert_equal level, last.first
69
57
  assert 1, last[1].size
@@ -1,8 +1,7 @@
1
- require "#{File.dirname(__FILE__)}/../abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
- class DateHelperTest < Test::Unit::TestCase
4
- include ActionView::Helpers::DateHelper
5
- include ActionView::Helpers::FormHelper
3
+ class DateHelperTest < ActionView::TestCase
4
+ tests ActionView::Helpers::DateHelper
6
5
 
7
6
  silence_warnings do
8
7
  Post = Struct.new("Post", :id, :written_on, :updated_at)
@@ -18,82 +17,102 @@ class DateHelperTest < Test::Unit::TestCase
18
17
  end
19
18
  end
20
19
  end
21
-
22
- def test_distance_in_words
23
- from = Time.mktime(2004, 6, 6, 21, 45, 0)
20
+
21
+ def assert_distance_of_time_in_words(from, to=nil)
22
+ to ||= from
24
23
 
25
24
  # 0..1 with include_seconds
26
- assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 0.seconds, true)
27
- assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 4.seconds, true)
28
- assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 5.seconds, true)
29
- assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 9.seconds, true)
30
- assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 10.seconds, true)
31
- assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 19.seconds, true)
32
- assert_equal "half a minute", distance_of_time_in_words(from, from + 20.seconds, true)
33
- assert_equal "half a minute", distance_of_time_in_words(from, from + 39.seconds, true)
34
- assert_equal "less than a minute", distance_of_time_in_words(from, from + 40.seconds, true)
35
- assert_equal "less than a minute", distance_of_time_in_words(from, from + 59.seconds, true)
36
- assert_equal "1 minute", distance_of_time_in_words(from, from + 60.seconds, true)
37
- assert_equal "1 minute", distance_of_time_in_words(from, from + 89.seconds, true)
25
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, to + 0.seconds, true)
26
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, to + 4.seconds, true)
27
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, to + 5.seconds, true)
28
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, to + 9.seconds, true)
29
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, to + 10.seconds, true)
30
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, to + 19.seconds, true)
31
+ assert_equal "half a minute", distance_of_time_in_words(from, to + 20.seconds, true)
32
+ assert_equal "half a minute", distance_of_time_in_words(from, to + 39.seconds, true)
33
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 40.seconds, true)
34
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 59.seconds, true)
35
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 60.seconds, true)
36
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 89.seconds, true)
38
37
 
39
38
  # First case 0..1
40
- assert_equal "less than a minute", distance_of_time_in_words(from, from + 0.seconds)
41
- assert_equal "less than a minute", distance_of_time_in_words(from, from + 29.seconds)
42
- assert_equal "1 minute", distance_of_time_in_words(from, from + 30.seconds)
43
- assert_equal "1 minute", distance_of_time_in_words(from, from + 1.minutes + 29.seconds)
39
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 0.seconds)
40
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 29.seconds)
41
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 30.seconds)
42
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 1.minutes + 29.seconds)
44
43
 
45
44
  # 2..44
46
- assert_equal "2 minutes", distance_of_time_in_words(from, from + 1.minutes + 30.seconds)
47
- assert_equal "44 minutes", distance_of_time_in_words(from, from + 44.minutes + 29.seconds)
45
+ assert_equal "2 minutes", distance_of_time_in_words(from, to + 1.minutes + 30.seconds)
46
+ assert_equal "44 minutes", distance_of_time_in_words(from, to + 44.minutes + 29.seconds)
48
47
 
49
48
  # 45..89
50
- assert_equal "about 1 hour", distance_of_time_in_words(from, from + 44.minutes + 30.seconds)
51
- assert_equal "about 1 hour", distance_of_time_in_words(from, from + 89.minutes + 29.seconds)
49
+ assert_equal "about 1 hour", distance_of_time_in_words(from, to + 44.minutes + 30.seconds)
50
+ assert_equal "about 1 hour", distance_of_time_in_words(from, to + 89.minutes + 29.seconds)
52
51
 
53
52
  # 90..1439
54
- assert_equal "about 2 hours", distance_of_time_in_words(from, from + 89.minutes + 30.seconds)
55
- assert_equal "about 24 hours", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 29.seconds)
53
+ assert_equal "about 2 hours", distance_of_time_in_words(from, to + 89.minutes + 30.seconds)
54
+ assert_equal "about 24 hours", distance_of_time_in_words(from, to + 23.hours + 59.minutes + 29.seconds)
56
55
 
57
56
  # 1440..2879
58
- assert_equal "1 day", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 30.seconds)
59
- assert_equal "1 day", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 29.seconds)
57
+ assert_equal "1 day", distance_of_time_in_words(from, to + 23.hours + 59.minutes + 30.seconds)
58
+ assert_equal "1 day", distance_of_time_in_words(from, to + 47.hours + 59.minutes + 29.seconds)
60
59
 
61
60
  # 2880..43199
62
- assert_equal "2 days", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 30.seconds)
63
- assert_equal "29 days", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 29.seconds)
61
+ assert_equal "2 days", distance_of_time_in_words(from, to + 47.hours + 59.minutes + 30.seconds)
62
+ assert_equal "29 days", distance_of_time_in_words(from, to + 29.days + 23.hours + 59.minutes + 29.seconds)
64
63
 
65
64
  # 43200..86399
66
- assert_equal "about 1 month", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 30.seconds)
67
- assert_equal "about 1 month", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 29.seconds)
65
+ assert_equal "about 1 month", distance_of_time_in_words(from, to + 29.days + 23.hours + 59.minutes + 30.seconds)
66
+ assert_equal "about 1 month", distance_of_time_in_words(from, to + 59.days + 23.hours + 59.minutes + 29.seconds)
68
67
 
69
68
  # 86400..525599
70
- assert_equal "2 months", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 30.seconds)
71
- assert_equal "12 months", distance_of_time_in_words(from, from + 1.years - 31.seconds)
69
+ assert_equal "2 months", distance_of_time_in_words(from, to + 59.days + 23.hours + 59.minutes + 30.seconds)
70
+ assert_equal "12 months", distance_of_time_in_words(from, to + 1.years - 31.seconds)
72
71
 
73
72
  # 525600..1051199
74
- assert_equal "about 1 year", distance_of_time_in_words(from, from + 1.years - 30.seconds)
75
- assert_equal "about 1 year", distance_of_time_in_words(from, from + 2.years - 31.seconds)
73
+ assert_equal "about 1 year", distance_of_time_in_words(from, to + 1.years - 30.seconds)
74
+ assert_equal "about 1 year", distance_of_time_in_words(from, to + 2.years - 31.seconds)
76
75
 
77
76
  # > 1051199
78
- assert_equal "over 2 years", distance_of_time_in_words(from, from + 2.years + 30.seconds)
79
- assert_equal "over 10 years", distance_of_time_in_words(from, from + 10.years)
77
+ assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 30.seconds)
78
+ assert_equal "over 10 years", distance_of_time_in_words(from, to + 10.years)
80
79
 
81
80
  # test to < from
82
- assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, from)
83
- assert_equal "less than 20 seconds", distance_of_time_in_words(from + 19.seconds, from, true)
84
-
85
- # test with integers
86
- assert_equal "less than a minute", distance_of_time_in_words(59)
87
- assert_equal "about 1 hour", distance_of_time_in_words(60*60)
88
- assert_equal "less than a minute", distance_of_time_in_words(0, 59)
89
- assert_equal "about 1 hour", distance_of_time_in_words(60*60, 0)
81
+ assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, to)
82
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from + 19.seconds, to, true)
90
83
  end
91
84
 
85
+ def test_distance_in_words
86
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
87
+ assert_distance_of_time_in_words(from)
88
+ end
89
+
90
+ def test_distance_in_words_with_time_zones
91
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
92
+ assert_distance_of_time_in_words(from.in_time_zone('Alaska'))
93
+ assert_distance_of_time_in_words(from.in_time_zone('Hawaii'))
94
+ end
95
+
96
+ def test_distance_in_words_with_different_time_zones
97
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
98
+ assert_distance_of_time_in_words(
99
+ from.in_time_zone('Alaska'),
100
+ from.in_time_zone('Hawaii')
101
+ )
102
+ end
103
+
92
104
  def test_distance_in_words_with_dates
93
105
  start_date = Date.new 1975, 1, 31
94
106
  end_date = Date.new 1977, 1, 31
95
107
  assert_equal("over 2 years", distance_of_time_in_words(start_date, end_date))
96
108
  end
109
+
110
+ def test_distance_in_words_with_integers
111
+ assert_equal "less than a minute", distance_of_time_in_words(59)
112
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60)
113
+ assert_equal "less than a minute", distance_of_time_in_words(0, 59)
114
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60, 0)
115
+ end
97
116
 
98
117
  def test_time_ago_in_words
99
118
  assert_equal "about 1 year", time_ago_in_words(1.year.ago - 1.day)
@@ -104,8 +123,8 @@ class DateHelperTest < Test::Unit::TestCase
104
123
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
105
124
  expected << "</select>\n"
106
125
 
107
- assert_equal expected, select_day(Time.mktime(2003, 8, 16))
108
- assert_equal expected, select_day(16)
126
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16))
127
+ assert_dom_equal expected, select_day(16)
109
128
  end
110
129
 
111
130
  def test_select_day_with_blank
@@ -113,8 +132,8 @@ class DateHelperTest < Test::Unit::TestCase
113
132
  expected << %(<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
114
133
  expected << "</select>\n"
115
134
 
116
- assert_equal expected, select_day(Time.mktime(2003, 8, 16), :include_blank => true)
117
- assert_equal expected, select_day(16, :include_blank => true)
135
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), :include_blank => true)
136
+ assert_dom_equal expected, select_day(16, :include_blank => true)
118
137
  end
119
138
 
120
139
  def test_select_day_nil_with_blank
@@ -122,7 +141,16 @@ class DateHelperTest < Test::Unit::TestCase
122
141
  expected << %(<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
123
142
  expected << "</select>\n"
124
143
 
125
- assert_equal expected, select_day(nil, :include_blank => true)
144
+ assert_dom_equal expected, select_day(nil, :include_blank => true)
145
+ end
146
+
147
+ def test_select_day_with_html_options
148
+ expected = %(<select id="date_day" name="date[day]" class="selector">\n)
149
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
150
+ expected << "</select>\n"
151
+
152
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), {}, :class => 'selector')
153
+ assert_dom_equal expected, select_day(16, {}, :class => 'selector')
126
154
  end
127
155
 
128
156
  def test_select_month
@@ -130,8 +158,8 @@ class DateHelperTest < Test::Unit::TestCase
130
158
  expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
131
159
  expected << "</select>\n"
132
160
 
133
- assert_equal expected, select_month(Time.mktime(2003, 8, 16))
134
- assert_equal expected, select_month(8)
161
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16))
162
+ assert_dom_equal expected, select_month(8)
135
163
  end
136
164
 
137
165
  def test_select_month_with_disabled
@@ -139,8 +167,8 @@ class DateHelperTest < Test::Unit::TestCase
139
167
  expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
140
168
  expected << "</select>\n"
141
169
 
142
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :disabled => true)
143
- assert_equal expected, select_month(8, :disabled => true)
170
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :disabled => true)
171
+ assert_dom_equal expected, select_month(8, :disabled => true)
144
172
  end
145
173
 
146
174
  def test_select_month_with_field_name_override
@@ -148,8 +176,8 @@ class DateHelperTest < Test::Unit::TestCase
148
176
  expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
149
177
  expected << "</select>\n"
150
178
 
151
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :field_name => 'mois')
152
- assert_equal expected, select_month(8, :field_name => 'mois')
179
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :field_name => 'mois')
180
+ assert_dom_equal expected, select_month(8, :field_name => 'mois')
153
181
  end
154
182
 
155
183
  def test_select_month_with_blank
@@ -157,8 +185,8 @@ class DateHelperTest < Test::Unit::TestCase
157
185
  expected << %(<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
158
186
  expected << "</select>\n"
159
187
 
160
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :include_blank => true)
161
- assert_equal expected, select_month(8, :include_blank => true)
188
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :include_blank => true)
189
+ assert_dom_equal expected, select_month(8, :include_blank => true)
162
190
  end
163
191
 
164
192
  def test_select_month_nil_with_blank
@@ -166,7 +194,7 @@ class DateHelperTest < Test::Unit::TestCase
166
194
  expected << %(<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
167
195
  expected << "</select>\n"
168
196
 
169
- assert_equal expected, select_month(nil, :include_blank => true)
197
+ assert_dom_equal expected, select_month(nil, :include_blank => true)
170
198
  end
171
199
 
172
200
  def test_select_month_with_numbers
@@ -174,8 +202,8 @@ class DateHelperTest < Test::Unit::TestCase
174
202
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8" selected="selected">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n)
175
203
  expected << "</select>\n"
176
204
 
177
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_numbers => true)
178
- assert_equal expected, select_month(8, :use_month_numbers => true)
205
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_numbers => true)
206
+ assert_dom_equal expected, select_month(8, :use_month_numbers => true)
179
207
  end
180
208
 
181
209
  def test_select_month_with_numbers_and_names
@@ -183,8 +211,8 @@ class DateHelperTest < Test::Unit::TestCase
183
211
  expected << %(<option value="1">1 - January</option>\n<option value="2">2 - February</option>\n<option value="3">3 - March</option>\n<option value="4">4 - April</option>\n<option value="5">5 - May</option>\n<option value="6">6 - June</option>\n<option value="7">7 - July</option>\n<option value="8" selected="selected">8 - August</option>\n<option value="9">9 - September</option>\n<option value="10">10 - October</option>\n<option value="11">11 - November</option>\n<option value="12">12 - December</option>\n)
184
212
  expected << "</select>\n"
185
213
 
186
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true)
187
- assert_equal expected, select_month(8, :add_month_numbers => true)
214
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true)
215
+ assert_dom_equal expected, select_month(8, :add_month_numbers => true)
188
216
  end
189
217
 
190
218
  def test_select_month_with_numbers_and_names_with_abbv
@@ -192,8 +220,8 @@ class DateHelperTest < Test::Unit::TestCase
192
220
  expected << %(<option value="1">1 - Jan</option>\n<option value="2">2 - Feb</option>\n<option value="3">3 - Mar</option>\n<option value="4">4 - Apr</option>\n<option value="5">5 - May</option>\n<option value="6">6 - Jun</option>\n<option value="7">7 - Jul</option>\n<option value="8" selected="selected">8 - Aug</option>\n<option value="9">9 - Sep</option>\n<option value="10">10 - Oct</option>\n<option value="11">11 - Nov</option>\n<option value="12">12 - Dec</option>\n)
193
221
  expected << "</select>\n"
194
222
 
195
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true, :use_short_month => true)
196
- assert_equal expected, select_month(8, :add_month_numbers => true, :use_short_month => true)
223
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true, :use_short_month => true)
224
+ assert_dom_equal expected, select_month(8, :add_month_numbers => true, :use_short_month => true)
197
225
  end
198
226
 
199
227
  def test_select_month_with_abbv
@@ -201,8 +229,8 @@ class DateHelperTest < Test::Unit::TestCase
201
229
  expected << %(<option value="1">Jan</option>\n<option value="2">Feb</option>\n<option value="3">Mar</option>\n<option value="4">Apr</option>\n<option value="5">May</option>\n<option value="6">Jun</option>\n<option value="7">Jul</option>\n<option value="8" selected="selected">Aug</option>\n<option value="9">Sep</option>\n<option value="10">Oct</option>\n<option value="11">Nov</option>\n<option value="12">Dec</option>\n)
202
230
  expected << "</select>\n"
203
231
 
204
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_short_month => true)
205
- assert_equal expected, select_month(8, :use_short_month => true)
232
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_short_month => true)
233
+ assert_dom_equal expected, select_month(8, :use_short_month => true)
206
234
  end
207
235
 
208
236
  def test_select_month_with_custom_names
@@ -212,8 +240,8 @@ class DateHelperTest < Test::Unit::TestCase
212
240
  1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month]}</option>\n) }
213
241
  expected << "</select>\n"
214
242
 
215
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
216
- assert_equal expected, select_month(8, :use_month_names => month_names)
243
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
244
+ assert_dom_equal expected, select_month(8, :use_month_names => month_names)
217
245
  end
218
246
 
219
247
  def test_select_month_with_zero_indexed_custom_names
@@ -223,8 +251,8 @@ class DateHelperTest < Test::Unit::TestCase
223
251
  1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month-1]}</option>\n) }
224
252
  expected << "</select>\n"
225
253
 
226
- assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
227
- assert_equal expected, select_month(8, :use_month_names => month_names)
254
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
255
+ assert_dom_equal expected, select_month(8, :use_month_names => month_names)
228
256
  end
229
257
 
230
258
  def test_select_month_with_hidden
@@ -235,13 +263,26 @@ class DateHelperTest < Test::Unit::TestCase
235
263
  assert_dom_equal "<input type=\"hidden\" id=\"date_mois\" name=\"date[mois]\" value=\"8\" />\n", select_month(8, :use_hidden => true, :field_name => 'mois')
236
264
  end
237
265
 
266
+ def test_select_month_with_html_options
267
+ expected = %(<select id="date_month" name="date[month]" class="selector" accesskey="M">\n)
268
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
269
+ expected << "</select>\n"
270
+
271
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), {}, :class => 'selector', :accesskey => 'M')
272
+ #result = select_month(Time.mktime(2003, 8, 16), {}, :class => 'selector', :accesskey => 'M')
273
+ #assert result.include?('<select id="date_month" name="date[month]"')
274
+ #assert result.include?('class="selector"')
275
+ #assert result.include?('accesskey="M"')
276
+ #assert result.include?('<option value="1">January')
277
+ end
278
+
238
279
  def test_select_year
239
280
  expected = %(<select id="date_year" name="date[year]">\n)
240
281
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
241
282
  expected << "</select>\n"
242
283
 
243
- assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005)
244
- assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005)
284
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005)
285
+ assert_dom_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005)
245
286
  end
246
287
 
247
288
  def test_select_year_with_disabled
@@ -249,8 +290,8 @@ class DateHelperTest < Test::Unit::TestCase
249
290
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
250
291
  expected << "</select>\n"
251
292
 
252
- assert_equal expected, select_year(Time.mktime(2003, 8, 16), :disabled => true, :start_year => 2003, :end_year => 2005)
253
- assert_equal expected, select_year(2003, :disabled => true, :start_year => 2003, :end_year => 2005)
293
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :disabled => true, :start_year => 2003, :end_year => 2005)
294
+ assert_dom_equal expected, select_year(2003, :disabled => true, :start_year => 2003, :end_year => 2005)
254
295
  end
255
296
 
256
297
  def test_select_year_with_field_name_override
@@ -258,8 +299,8 @@ class DateHelperTest < Test::Unit::TestCase
258
299
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
259
300
  expected << "</select>\n"
260
301
 
261
- assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :field_name => 'annee')
262
- assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005, :field_name => 'annee')
302
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :field_name => 'annee')
303
+ assert_dom_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005, :field_name => 'annee')
263
304
  end
264
305
 
265
306
  def test_select_year_with_type_discarding
@@ -267,9 +308,9 @@ class DateHelperTest < Test::Unit::TestCase
267
308
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
268
309
  expected << "</select>\n"
269
310
 
270
- assert_equal expected, select_year(
311
+ assert_dom_equal expected, select_year(
271
312
  Time.mktime(2003, 8, 16), :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
272
- assert_equal expected, select_year(
313
+ assert_dom_equal expected, select_year(
273
314
  2003, :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
274
315
  end
275
316
 
@@ -278,8 +319,8 @@ class DateHelperTest < Test::Unit::TestCase
278
319
  expected << %(<option value="2005" selected="selected">2005</option>\n<option value="2004">2004</option>\n<option value="2003">2003</option>\n)
279
320
  expected << "</select>\n"
280
321
 
281
- assert_equal expected, select_year(Time.mktime(2005, 8, 16), :start_year => 2005, :end_year => 2003)
282
- assert_equal expected, select_year(2005, :start_year => 2005, :end_year => 2003)
322
+ assert_dom_equal expected, select_year(Time.mktime(2005, 8, 16), :start_year => 2005, :end_year => 2003)
323
+ assert_dom_equal expected, select_year(2005, :start_year => 2005, :end_year => 2003)
283
324
  end
284
325
 
285
326
  def test_select_year_with_hidden
@@ -290,12 +331,25 @@ class DateHelperTest < Test::Unit::TestCase
290
331
  assert_dom_equal "<input type=\"hidden\" id=\"date_anno\" name=\"date[anno]\" value=\"2007\" />\n", select_year(2007, :use_hidden => true, :field_name => 'anno')
291
332
  end
292
333
 
334
+ def test_select_year_with_html_options
335
+ expected = %(<select id="date_year" name="date[year]" class="selector" accesskey="M">\n)
336
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
337
+ expected << "</select>\n"
338
+
339
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005}, :class => 'selector', :accesskey => 'M')
340
+ #result = select_year(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005}, :class => 'selector', :accesskey => 'M')
341
+ #assert result.include?('<select id="date_year" name="date[year]"')
342
+ #assert result.include?('class="selector"')
343
+ #assert result.include?('accesskey="M"')
344
+ #assert result.include?('<option value="2003"')
345
+ end
346
+
293
347
  def test_select_hour
294
348
  expected = %(<select id="date_hour" name="date[hour]">\n)
295
349
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
296
350
  expected << "</select>\n"
297
351
 
298
- assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
352
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
299
353
  end
300
354
 
301
355
  def test_select_hour_with_disabled
@@ -303,7 +357,7 @@ class DateHelperTest < Test::Unit::TestCase
303
357
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
304
358
  expected << "</select>\n"
305
359
 
306
- assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
360
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
307
361
  end
308
362
 
309
363
  def test_select_hour_with_field_name_override
@@ -311,7 +365,7 @@ class DateHelperTest < Test::Unit::TestCase
311
365
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
312
366
  expected << "</select>\n"
313
367
 
314
- assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'heure')
368
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'heure')
315
369
  end
316
370
 
317
371
  def test_select_hour_with_blank
@@ -319,7 +373,7 @@ class DateHelperTest < Test::Unit::TestCase
319
373
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
320
374
  expected << "</select>\n"
321
375
 
322
- assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
376
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
323
377
  end
324
378
 
325
379
  def test_select_hour_nil_with_blank
@@ -327,7 +381,15 @@ class DateHelperTest < Test::Unit::TestCase
327
381
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
328
382
  expected << "</select>\n"
329
383
 
330
- assert_equal expected, select_hour(nil, :include_blank => true)
384
+ assert_dom_equal expected, select_hour(nil, :include_blank => true)
385
+ end
386
+
387
+ def test_select_hour_with_html_options
388
+ expected = %(<select id="date_hour" name="date[hour]" class="selector" accesskey="M">\n)
389
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
390
+ expected << "</select>\n"
391
+
392
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
331
393
  end
332
394
 
333
395
  def test_select_minute
@@ -335,7 +397,7 @@ class DateHelperTest < Test::Unit::TestCase
335
397
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
336
398
  expected << "</select>\n"
337
399
 
338
- assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
400
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
339
401
  end
340
402
 
341
403
  def test_select_minute_with_disabled
@@ -343,7 +405,7 @@ class DateHelperTest < Test::Unit::TestCase
343
405
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
344
406
  expected << "</select>\n"
345
407
 
346
- assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
408
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
347
409
  end
348
410
 
349
411
  def test_select_minute_with_field_name_override
@@ -351,7 +413,7 @@ class DateHelperTest < Test::Unit::TestCase
351
413
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
352
414
  expected << "</select>\n"
353
415
 
354
- assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'minuto')
416
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'minuto')
355
417
  end
356
418
 
357
419
  def test_select_minute_with_blank
@@ -359,7 +421,7 @@ class DateHelperTest < Test::Unit::TestCase
359
421
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
360
422
  expected << "</select>\n"
361
423
 
362
- assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
424
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
363
425
  end
364
426
 
365
427
  def test_select_minute_with_blank_and_step
@@ -367,7 +429,7 @@ class DateHelperTest < Test::Unit::TestCase
367
429
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="15">15</option>\n<option value="30">30</option>\n<option value="45">45</option>\n)
368
430
  expected << "</select>\n"
369
431
 
370
- assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), { :include_blank => true , :minute_step => 15 })
432
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), { :include_blank => true , :minute_step => 15 })
371
433
  end
372
434
 
373
435
  def test_select_minute_nil_with_blank
@@ -375,7 +437,7 @@ class DateHelperTest < Test::Unit::TestCase
375
437
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
376
438
  expected << "</select>\n"
377
439
 
378
- assert_equal expected, select_minute(nil, :include_blank => true)
440
+ assert_dom_equal expected, select_minute(nil, :include_blank => true)
379
441
  end
380
442
 
381
443
  def test_select_minute_nil_with_blank_and_step
@@ -383,7 +445,7 @@ class DateHelperTest < Test::Unit::TestCase
383
445
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="15">15</option>\n<option value="30">30</option>\n<option value="45">45</option>\n)
384
446
  expected << "</select>\n"
385
447
 
386
- assert_equal expected, select_minute(nil, { :include_blank => true , :minute_step => 15 })
448
+ assert_dom_equal expected, select_minute(nil, { :include_blank => true , :minute_step => 15 })
387
449
  end
388
450
 
389
451
  def test_select_minute_with_hidden
@@ -394,12 +456,26 @@ class DateHelperTest < Test::Unit::TestCase
394
456
  assert_dom_equal "<input type=\"hidden\" id=\"date_minuto\" name=\"date[minuto]\" value=\"8\" />\n", select_minute(8, :use_hidden => true, :field_name => 'minuto')
395
457
  end
396
458
 
459
+ def test_select_minute_with_html_options
460
+ expected = expected = %(<select id="date_minute" name="date[minute]" class="selector" accesskey="M">\n)
461
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
462
+ expected << "</select>\n"
463
+
464
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
465
+
466
+ #result = select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
467
+ #assert result.include?('<select id="date_minute" name="date[minute]"')
468
+ #assert result.include?('class="selector"')
469
+ #assert result.include?('accesskey="M"')
470
+ #assert result.include?('<option value="00">00')
471
+ end
472
+
397
473
  def test_select_second
398
474
  expected = %(<select id="date_second" name="date[second]">\n)
399
475
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
400
476
  expected << "</select>\n"
401
477
 
402
- assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
478
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
403
479
  end
404
480
 
405
481
  def test_select_second_with_disabled
@@ -407,7 +483,7 @@ class DateHelperTest < Test::Unit::TestCase
407
483
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
408
484
  expected << "</select>\n"
409
485
 
410
- assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
486
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
411
487
  end
412
488
 
413
489
  def test_select_second_with_field_name_override
@@ -415,7 +491,7 @@ class DateHelperTest < Test::Unit::TestCase
415
491
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
416
492
  expected << "</select>\n"
417
493
 
418
- assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'segundo')
494
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'segundo')
419
495
  end
420
496
 
421
497
  def test_select_second_with_blank
@@ -423,7 +499,7 @@ class DateHelperTest < Test::Unit::TestCase
423
499
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
424
500
  expected << "</select>\n"
425
501
 
426
- assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
502
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
427
503
  end
428
504
 
429
505
  def test_select_second_nil_with_blank
@@ -431,7 +507,21 @@ class DateHelperTest < Test::Unit::TestCase
431
507
  expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
432
508
  expected << "</select>\n"
433
509
 
434
- assert_equal expected, select_second(nil, :include_blank => true)
510
+ assert_dom_equal expected, select_second(nil, :include_blank => true)
511
+ end
512
+
513
+ def test_select_second_with_html_options
514
+ expected = %(<select id="date_second" name="date[second]" class="selector" accesskey="M">\n)
515
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
516
+ expected << "</select>\n"
517
+
518
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
519
+
520
+ #result = select_second(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
521
+ #assert result.include?('<select id="date_second" name="date[second]"')
522
+ #assert result.include?('class="selector"')
523
+ #assert result.include?('accesskey="M"')
524
+ #assert result.include?('<option value="00">00')
435
525
  end
436
526
 
437
527
  def test_select_date
@@ -447,7 +537,7 @@ class DateHelperTest < Test::Unit::TestCase
447
537
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
448
538
  expected << "</select>\n"
449
539
 
450
- assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
540
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
451
541
  end
452
542
 
453
543
  def test_select_date_with_order
@@ -463,7 +553,7 @@ class DateHelperTest < Test::Unit::TestCase
463
553
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
464
554
  expected << "</select>\n"
465
555
 
466
- assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:month, :day, :year])
556
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:month, :day, :year])
467
557
  end
468
558
 
469
559
  def test_select_date_with_incomplete_order
@@ -479,7 +569,7 @@ class DateHelperTest < Test::Unit::TestCase
479
569
  expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
480
570
  expected << "</select>\n"
481
571
 
482
- assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
572
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
483
573
  end
484
574
 
485
575
  def test_select_date_with_disabled
@@ -495,7 +585,7 @@ class DateHelperTest < Test::Unit::TestCase
495
585
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
496
586
  expected << "</select>\n"
497
587
 
498
- assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :disabled => true)
588
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :disabled => true)
499
589
  end
500
590
 
501
591
  def test_select_date_with_no_start_year
@@ -517,7 +607,7 @@ class DateHelperTest < Test::Unit::TestCase
517
607
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
518
608
  expected << "</select>\n"
519
609
 
520
- assert_equal expected, select_date(
610
+ assert_dom_equal expected, select_date(
521
611
  Time.mktime(Date.today.year, 8, 16), :end_year => Date.today.year+1, :prefix => "date[first]"
522
612
  )
523
613
  end
@@ -541,7 +631,7 @@ class DateHelperTest < Test::Unit::TestCase
541
631
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
542
632
  expected << "</select>\n"
543
633
 
544
- assert_equal expected, select_date(
634
+ assert_dom_equal expected, select_date(
545
635
  Time.mktime(2003, 8, 16), :start_year => 2003, :prefix => "date[first]"
546
636
  )
547
637
  end
@@ -565,7 +655,7 @@ class DateHelperTest < Test::Unit::TestCase
565
655
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
566
656
  expected << "</select>\n"
567
657
 
568
- assert_equal expected, select_date(
658
+ assert_dom_equal expected, select_date(
569
659
  Time.mktime(Date.today.year, 8, 16), :prefix => "date[first]"
570
660
  )
571
661
  end
@@ -583,7 +673,7 @@ class DateHelperTest < Test::Unit::TestCase
583
673
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
584
674
  expected << "</select>\n"
585
675
 
586
- assert_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
676
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
587
677
  end
588
678
 
589
679
  def test_select_date_with_zero_value_and_no_start_year
@@ -599,7 +689,7 @@ class DateHelperTest < Test::Unit::TestCase
599
689
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
600
690
  expected << "</select>\n"
601
691
 
602
- assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
692
+ assert_dom_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
603
693
  end
604
694
 
605
695
  def test_select_date_with_zero_value_and_no_end_year
@@ -616,7 +706,7 @@ class DateHelperTest < Test::Unit::TestCase
616
706
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
617
707
  expected << "</select>\n"
618
708
 
619
- assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
709
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
620
710
  end
621
711
 
622
712
  def test_select_date_with_zero_value_and_no_start_and_end_year
@@ -632,7 +722,7 @@ class DateHelperTest < Test::Unit::TestCase
632
722
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
633
723
  expected << "</select>\n"
634
724
 
635
- assert_equal expected, select_date(0, :prefix => "date[first]")
725
+ assert_dom_equal expected, select_date(0, :prefix => "date[first]")
636
726
  end
637
727
 
638
728
  def test_select_date_with_nil_value_and_no_start_and_end_year
@@ -648,7 +738,23 @@ class DateHelperTest < Test::Unit::TestCase
648
738
  expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
649
739
  expected << "</select>\n"
650
740
 
651
- assert_equal expected, select_date(nil, :prefix => "date[first]")
741
+ assert_dom_equal expected, select_date(nil, :prefix => "date[first]")
742
+ end
743
+
744
+ def test_select_date_with_html_options
745
+ expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
746
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
747
+ expected << "</select>\n"
748
+
749
+ expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
750
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
751
+ expected << "</select>\n"
752
+
753
+ expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
754
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
755
+ expected << "</select>\n"
756
+
757
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => "selector")
652
758
  end
653
759
 
654
760
  def test_select_datetime
@@ -672,7 +778,7 @@ class DateHelperTest < Test::Unit::TestCase
672
778
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
673
779
  expected << "</select>\n"
674
780
 
675
- assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
781
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
676
782
  end
677
783
 
678
784
  def test_select_datetime_with_separators
@@ -700,7 +806,7 @@ class DateHelperTest < Test::Unit::TestCase
700
806
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
701
807
  expected << "</select>\n"
702
808
 
703
- assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :datetime_separator => ' &mdash; ', :time_separator => ' : ')
809
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :datetime_separator => ' &mdash; ', :time_separator => ' : ')
704
810
  end
705
811
 
706
812
  def test_select_datetime_with_nil_value_and_no_start_and_end_year
@@ -724,7 +830,31 @@ class DateHelperTest < Test::Unit::TestCase
724
830
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
725
831
  expected << "</select>\n"
726
832
 
727
- assert_equal expected, select_datetime(nil, :prefix => "date[first]")
833
+ assert_dom_equal expected, select_datetime(nil, :prefix => "date[first]")
834
+ end
835
+
836
+ def test_select_datetime_with_html_options
837
+ expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
838
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
839
+ expected << "</select>\n"
840
+
841
+ expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
842
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
843
+ expected << "</select>\n"
844
+
845
+ expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
846
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
847
+ expected << "</select>\n"
848
+
849
+ expected << %(<select id="date_first_hour" name="date[first][hour]" class="selector">\n)
850
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
851
+ expected << "</select>\n"
852
+
853
+ expected << %(<select id="date_first_minute" name="date[first][minute]" class="selector">\n)
854
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
855
+ expected << "</select>\n"
856
+
857
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => 'selector')
728
858
  end
729
859
 
730
860
  def test_select_time
@@ -736,8 +866,8 @@ class DateHelperTest < Test::Unit::TestCase
736
866
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
737
867
  expected << "</select>\n"
738
868
 
739
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18))
740
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => false)
869
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18))
870
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => false)
741
871
  end
742
872
 
743
873
  def test_select_time_with_separator
@@ -751,8 +881,8 @@ class DateHelperTest < Test::Unit::TestCase
751
881
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
752
882
  expected << "</select>\n"
753
883
 
754
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ')
755
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ', :include_seconds => false)
884
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ')
885
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ', :include_seconds => false)
756
886
  end
757
887
 
758
888
  def test_select_time_with_seconds
@@ -768,7 +898,7 @@ class DateHelperTest < Test::Unit::TestCase
768
898
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
769
899
  expected << "</select>\n"
770
900
 
771
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true)
901
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true)
772
902
  end
773
903
 
774
904
  def test_select_time_with_seconds_and_separator
@@ -788,7 +918,47 @@ class DateHelperTest < Test::Unit::TestCase
788
918
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
789
919
  expected << "</select>\n"
790
920
 
791
- assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :time_separator => ' : ')
921
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :time_separator => ' : ')
922
+ end
923
+
924
+ def test_select_time_with_html_options
925
+ expected = %(<select id="date_hour" name="date[hour]" class="selector">\n)
926
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
927
+ expected << "</select>\n"
928
+
929
+ expected << %(<select id="date_minute" name="date[minute]" class="selector">\n)
930
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
931
+ expected << "</select>\n"
932
+
933
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector')
934
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {:include_seconds => false}, :class => 'selector')
935
+ end
936
+
937
+ uses_mocha 'TestDatetimeAndTimeSelectUseTimeCurrentAsDefault' do
938
+ def test_select_datetime_uses_time_current_as_default
939
+ time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
940
+ Time.expects(:current).returns time
941
+ expects(:select_date).with(time, anything, anything).returns('')
942
+ expects(:select_time).with(time, anything, anything).returns('')
943
+ select_datetime
944
+ end
945
+
946
+ def test_select_time_uses_time_current_as_default
947
+ time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
948
+ Time.expects(:current).returns time
949
+ expects(:select_hour).with(time, anything, anything).returns('')
950
+ expects(:select_minute).with(time, anything, anything).returns('')
951
+ select_time
952
+ end
953
+
954
+ def test_select_date_uses_date_current_as_default
955
+ date = stub(:year => 2004, :month => 6, :day => 15)
956
+ Date.expects(:current).returns date
957
+ expects(:select_year).with(date, anything, anything).returns('')
958
+ expects(:select_month).with(date, anything, anything).returns('')
959
+ expects(:select_day).with(date, anything, anything).returns('')
960
+ select_date
961
+ end
792
962
  end
793
963
 
794
964
  def test_date_select
@@ -808,7 +978,7 @@ class DateHelperTest < Test::Unit::TestCase
808
978
 
809
979
  expected << "</select>\n"
810
980
 
811
- assert_equal expected, date_select("post", "written_on")
981
+ assert_dom_equal expected, date_select("post", "written_on")
812
982
  end
813
983
 
814
984
  def test_date_select_without_day
@@ -825,7 +995,7 @@ class DateHelperTest < Test::Unit::TestCase
825
995
  expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
826
996
  expected << "</select>\n"
827
997
 
828
- assert_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
998
+ assert_dom_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
829
999
  end
830
1000
 
831
1001
  def test_date_select_within_fields_for
@@ -863,7 +1033,7 @@ class DateHelperTest < Test::Unit::TestCase
863
1033
 
864
1034
  expected << "</select>\n"
865
1035
 
866
- assert_equal expected, date_select("post", "written_on", :index => id)
1036
+ assert_dom_equal expected, date_select("post", "written_on", :index => id)
867
1037
  end
868
1038
 
869
1039
  def test_date_select_with_auto_index
@@ -883,7 +1053,7 @@ class DateHelperTest < Test::Unit::TestCase
883
1053
  expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
884
1054
  expected << "</select>\n"
885
1055
 
886
- assert_equal expected, date_select("post[]", "written_on")
1056
+ assert_dom_equal expected, date_select("post[]", "written_on")
887
1057
  end
888
1058
 
889
1059
  def test_date_select_with_different_order
@@ -902,7 +1072,7 @@ class DateHelperTest < Test::Unit::TestCase
902
1072
  1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
903
1073
  expected << "</select>\n"
904
1074
 
905
- assert_equal expected, date_select("post", "written_on", :order => [:day, :month, :year])
1075
+ assert_dom_equal expected, date_select("post", "written_on", :order => [:day, :month, :year])
906
1076
  end
907
1077
 
908
1078
  def test_date_select_with_nil
@@ -922,7 +1092,7 @@ class DateHelperTest < Test::Unit::TestCase
922
1092
  1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
923
1093
  expected << "</select>\n"
924
1094
 
925
- assert_equal expected, date_select("post", "written_on")
1095
+ assert_dom_equal expected, date_select("post", "written_on")
926
1096
  end
927
1097
 
928
1098
  def test_date_select_with_nil_and_blank
@@ -945,7 +1115,7 @@ class DateHelperTest < Test::Unit::TestCase
945
1115
  1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
946
1116
  expected << "</select>\n"
947
1117
 
948
- assert_equal expected, date_select("post", "written_on", :include_blank => true)
1118
+ assert_dom_equal expected, date_select("post", "written_on", :include_blank => true)
949
1119
  end
950
1120
 
951
1121
  def test_date_select_cant_override_discard_hour
@@ -964,7 +1134,27 @@ class DateHelperTest < Test::Unit::TestCase
964
1134
  expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
965
1135
  expected << "</select>\n"
966
1136
 
967
- assert_equal expected, date_select("post", "written_on", :discard_hour => false)
1137
+ assert_dom_equal expected, date_select("post", "written_on", :discard_hour => false)
1138
+ end
1139
+
1140
+ def test_date_select_with_html_options
1141
+ @post = Post.new
1142
+ @post.written_on = Date.new(2004, 6, 15)
1143
+
1144
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]" class="selector">\n}
1145
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
1146
+ expected << "</select>\n"
1147
+
1148
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]" class="selector">\n}
1149
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
1150
+ expected << "</select>\n"
1151
+
1152
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]" class="selector">\n}
1153
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
1154
+
1155
+ expected << "</select>\n"
1156
+
1157
+ assert_dom_equal expected, date_select("post", "written_on", {}, :class => 'selector')
968
1158
  end
969
1159
 
970
1160
  def test_time_select
@@ -983,7 +1173,7 @@ class DateHelperTest < Test::Unit::TestCase
983
1173
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
984
1174
  expected << "</select>\n"
985
1175
 
986
- assert_equal expected, time_select("post", "written_on")
1176
+ assert_dom_equal expected, time_select("post", "written_on")
987
1177
  end
988
1178
 
989
1179
  def test_time_select_with_seconds
@@ -1006,7 +1196,26 @@ class DateHelperTest < Test::Unit::TestCase
1006
1196
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
1007
1197
  expected << "</select>\n"
1008
1198
 
1009
- assert_equal expected, time_select("post", "written_on", :include_seconds => true)
1199
+ assert_dom_equal expected, time_select("post", "written_on", :include_seconds => true)
1200
+ end
1201
+
1202
+ def test_time_select_with_html_options
1203
+ @post = Post.new
1204
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1205
+
1206
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1207
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1208
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1209
+
1210
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]" class="selector">\n)
1211
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1212
+ expected << "</select>\n"
1213
+ expected << " : "
1214
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]" class="selector">\n)
1215
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1216
+ expected << "</select>\n"
1217
+
1218
+ assert_dom_equal expected, time_select("post", "written_on", {}, :class => 'selector')
1010
1219
  end
1011
1220
 
1012
1221
  def test_datetime_select
@@ -1035,7 +1244,43 @@ class DateHelperTest < Test::Unit::TestCase
1035
1244
  expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1036
1245
  expected << "</select>\n"
1037
1246
 
1038
- assert_equal expected, datetime_select("post", "updated_at")
1247
+ assert_dom_equal expected, datetime_select("post", "updated_at")
1248
+ end
1249
+
1250
+ uses_mocha 'TestDatetimeSelectDefaultsToTimeZoneNowWhenConfigTimeZoneIsSet' do
1251
+ def test_datetime_select_defaults_to_time_zone_now_when_config_time_zone_is_set
1252
+ time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
1253
+ time_zone = mock()
1254
+ time_zone.expects(:now).returns time
1255
+ Time.zone_default = time_zone
1256
+ @post = Post.new
1257
+
1258
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1259
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
1260
+ expected << "</select>\n"
1261
+
1262
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1263
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
1264
+ expected << "</select>\n"
1265
+
1266
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1267
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
1268
+ expected << "</select>\n"
1269
+
1270
+ expected << " &mdash; "
1271
+
1272
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1273
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n}
1274
+ expected << "</select>\n"
1275
+ expected << " : "
1276
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1277
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1278
+ expected << "</select>\n"
1279
+
1280
+ assert_dom_equal expected, datetime_select("post", "updated_at")
1281
+ ensure
1282
+ Time.zone_default = nil
1283
+ end
1039
1284
  end
1040
1285
 
1041
1286
  def test_datetime_select_within_fields_for
@@ -1071,7 +1316,7 @@ class DateHelperTest < Test::Unit::TestCase
1071
1316
  %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1072
1317
  expected << "</select>\n"
1073
1318
 
1074
- assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
1319
+ assert_dom_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
1075
1320
  end
1076
1321
 
1077
1322
  def test_date_select_with_zero_value_and_no_end_year
@@ -1089,7 +1334,7 @@ class DateHelperTest < Test::Unit::TestCase
1089
1334
  %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1090
1335
  expected << "</select>\n"
1091
1336
 
1092
- assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
1337
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
1093
1338
  end
1094
1339
 
1095
1340
  def test_date_select_with_zero_value_and_no_start_and_end_year
@@ -1106,7 +1351,7 @@ class DateHelperTest < Test::Unit::TestCase
1106
1351
  %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1107
1352
  expected << "</select>\n"
1108
1353
 
1109
- assert_equal expected, select_date(0, :prefix => "date[first]")
1354
+ assert_dom_equal expected, select_date(0, :prefix => "date[first]")
1110
1355
  end
1111
1356
 
1112
1357
  def test_date_select_with_nil_value_and_no_start_and_end_year
@@ -1123,7 +1368,7 @@ class DateHelperTest < Test::Unit::TestCase
1123
1368
  %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1124
1369
  expected << "</select>\n"
1125
1370
 
1126
- assert_equal expected, select_date(nil, :prefix => "date[first]")
1371
+ assert_dom_equal expected, select_date(nil, :prefix => "date[first]")
1127
1372
  end
1128
1373
 
1129
1374
  def test_datetime_select_with_nil_value_and_no_start_and_end_year
@@ -1136,8 +1381,7 @@ class DateHelperTest < Test::Unit::TestCase
1136
1381
  expected << "</select>\n"
1137
1382
 
1138
1383
  expected << %(<select id="date_first_day" name="date[first][day]">\n)
1139
- expected <<
1140
- %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1384
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1141
1385
  expected << "</select>\n"
1142
1386
 
1143
1387
  expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
@@ -1148,10 +1392,9 @@ class DateHelperTest < Test::Unit::TestCase
1148
1392
  expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
1149
1393
  expected << "</select>\n"
1150
1394
 
1151
- assert_equal expected, select_datetime(nil, :prefix => "date[first]")
1395
+ assert_dom_equal expected, select_datetime(nil, :prefix => "date[first]")
1152
1396
  end
1153
1397
 
1154
-
1155
1398
  def test_datetime_select_with_options_index
1156
1399
  @post = Post.new
1157
1400
  @post.updated_at = Time.local(2004, 6, 15, 16, 35)
@@ -1179,7 +1422,7 @@ class DateHelperTest < Test::Unit::TestCase
1179
1422
  expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1180
1423
  expected << "</select>\n"
1181
1424
 
1182
- assert_equal expected, datetime_select("post", "updated_at", :index => id)
1425
+ assert_dom_equal expected, datetime_select("post", "updated_at", :index => id)
1183
1426
  end
1184
1427
 
1185
1428
  def test_datetime_select_with_auto_index
@@ -1209,7 +1452,7 @@ class DateHelperTest < Test::Unit::TestCase
1209
1452
  expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1210
1453
  expected << "</select>\n"
1211
1454
 
1212
- assert_equal expected, datetime_select("post[]", "updated_at")
1455
+ assert_dom_equal expected, datetime_select("post[]", "updated_at")
1213
1456
  end
1214
1457
 
1215
1458
  def test_datetime_select_with_seconds
@@ -1240,7 +1483,7 @@ class DateHelperTest < Test::Unit::TestCase
1240
1483
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
1241
1484
  expected << "</select>\n"
1242
1485
 
1243
- assert_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
1486
+ assert_dom_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
1244
1487
  end
1245
1488
 
1246
1489
  def test_datetime_select_discard_year
@@ -1265,7 +1508,7 @@ class DateHelperTest < Test::Unit::TestCase
1265
1508
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1266
1509
  expected << "</select>\n"
1267
1510
 
1268
- assert_equal expected, datetime_select("post", "updated_at", :discard_year => true)
1511
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true)
1269
1512
  end
1270
1513
 
1271
1514
  def test_datetime_select_discard_month
@@ -1288,7 +1531,7 @@ class DateHelperTest < Test::Unit::TestCase
1288
1531
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1289
1532
  expected << "</select>\n"
1290
1533
 
1291
- assert_equal expected, datetime_select("post", "updated_at", :discard_month => true)
1534
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_month => true)
1292
1535
  end
1293
1536
 
1294
1537
  def test_datetime_select_discard_year_and_month
@@ -1307,7 +1550,7 @@ class DateHelperTest < Test::Unit::TestCase
1307
1550
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1308
1551
  expected << "</select>\n"
1309
1552
 
1310
- assert_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
1553
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
1311
1554
  end
1312
1555
 
1313
1556
  def test_datetime_select_invalid_order
@@ -1334,7 +1577,7 @@ class DateHelperTest < Test::Unit::TestCase
1334
1577
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1335
1578
  expected << "</select>\n"
1336
1579
 
1337
- assert_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
1580
+ assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
1338
1581
  end
1339
1582
 
1340
1583
  def test_datetime_select_discard_with_order
@@ -1359,7 +1602,7 @@ class DateHelperTest < Test::Unit::TestCase
1359
1602
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1360
1603
  expected << "</select>\n"
1361
1604
 
1362
- assert_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
1605
+ assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
1363
1606
  end
1364
1607
 
1365
1608
  def test_datetime_select_with_default_value_as_time
@@ -1386,7 +1629,7 @@ class DateHelperTest < Test::Unit::TestCase
1386
1629
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1387
1630
  expected << "</select>\n"
1388
1631
 
1389
- assert_equal expected, datetime_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35))
1632
+ assert_dom_equal expected, datetime_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35))
1390
1633
  end
1391
1634
 
1392
1635
  def test_include_blank_overrides_default_option
@@ -1406,7 +1649,7 @@ class DateHelperTest < Test::Unit::TestCase
1406
1649
  1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1407
1650
  expected << "</select>\n"
1408
1651
 
1409
- assert_equal expected, date_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true)
1652
+ assert_dom_equal expected, date_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true)
1410
1653
  end
1411
1654
 
1412
1655
  def test_datetime_select_with_default_value_as_hash
@@ -1433,6 +1676,65 @@ class DateHelperTest < Test::Unit::TestCase
1433
1676
  0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 42}>#{leading_zero_on_single_digits(i)}</option>\n) }
1434
1677
  expected << "</select>\n"
1435
1678
 
1436
- assert_equal expected, datetime_select("post", "updated_at", :default => { :month => 10, :minute => 42, :hour => 9 })
1679
+ assert_dom_equal expected, datetime_select("post", "updated_at", :default => { :month => 10, :minute => 42, :hour => 9 })
1680
+ end
1681
+
1682
+ def test_datetime_select_with_html_options
1683
+ @post = Post.new
1684
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1685
+
1686
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]" class="selector">\n}
1687
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
1688
+ expected << "</select>\n"
1689
+
1690
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]" class="selector">\n}
1691
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
1692
+ expected << "</select>\n"
1693
+
1694
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]" class="selector">\n}
1695
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
1696
+ expected << "</select>\n"
1697
+
1698
+ expected << " &mdash; "
1699
+
1700
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]" class="selector">\n}
1701
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n}
1702
+ expected << "</select>\n"
1703
+ expected << " : "
1704
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]" class="selector">\n}
1705
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1706
+ expected << "</select>\n"
1707
+
1708
+ assert_dom_equal expected, datetime_select("post", "updated_at", {}, :class => 'selector')
1709
+ end
1710
+
1711
+ uses_mocha 'TestInstanceTagDefaultTimeFromOptions' do
1712
+ def test_instance_tag_default_time_from_options_uses_time_current_as_default_when_hash_passed_as_arg
1713
+ dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)
1714
+ Time.expects(:current).returns Time.now
1715
+ dummy_instance_tag.send!(:default_time_from_options, :hour => 2)
1716
+ end
1717
+
1718
+ def test_instance_tag_default_time_from_options_respects_hash_arg_settings_when_time_falls_in_system_local_dst_spring_gap
1719
+ with_env_tz('US/Central') do
1720
+ dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)
1721
+ Time.stubs(:now).returns Time.local(2006, 4, 2, 1)
1722
+ assert_equal 2, dummy_instance_tag.send!(:default_time_from_options, :hour => 2).hour
1723
+ end
1724
+ end
1725
+
1726
+ def test_instance_tag_default_time_from_options_handles_far_future_date
1727
+ dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)
1728
+ time = dummy_instance_tag.send!(:default_time_from_options, :year => 2050, :month => 2, :day => 10, :hour => 15, :min => 30, :sec => 45)
1729
+ assert_equal 2050, time.year
1730
+ end
1437
1731
  end
1732
+
1733
+ protected
1734
+ def with_env_tz(new_tz = 'US/Eastern')
1735
+ old_tz, ENV['TZ'] = ENV['TZ'], new_tz
1736
+ yield
1737
+ ensure
1738
+ old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
1739
+ end
1438
1740
  end