actionpack 2.3.18 → 3.0.0.beta

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 (513) hide show
  1. data/CHANGELOG +15 -64
  2. data/README +39 -48
  3. data/lib/abstract_controller.rb +22 -0
  4. data/lib/abstract_controller/base.rb +191 -0
  5. data/lib/abstract_controller/callbacks.rb +113 -0
  6. data/lib/abstract_controller/collector.rb +30 -0
  7. data/lib/abstract_controller/compatibility.rb +18 -0
  8. data/lib/abstract_controller/helpers.rb +163 -0
  9. data/lib/abstract_controller/layouts.rb +413 -0
  10. data/lib/abstract_controller/localized_cache.rb +49 -0
  11. data/lib/abstract_controller/logger.rb +13 -0
  12. data/lib/abstract_controller/rendering.rb +238 -0
  13. data/lib/{action_controller → abstract_controller}/translation.rb +1 -1
  14. data/lib/action_controller.rb +68 -102
  15. data/lib/action_controller/base.rb +77 -1409
  16. data/lib/action_controller/caching.rb +58 -45
  17. data/lib/action_controller/caching/actions.rb +100 -114
  18. data/lib/action_controller/caching/fragments.rb +17 -19
  19. data/lib/action_controller/caching/pages.rb +12 -6
  20. data/lib/action_controller/caching/sweeping.rb +42 -0
  21. data/lib/action_controller/deprecated.rb +5 -0
  22. data/lib/action_controller/deprecated/dispatcher.rb +28 -0
  23. data/lib/action_controller/deprecated/integration_test.rb +2 -0
  24. data/lib/action_controller/deprecated/performance_test.rb +1 -0
  25. data/lib/action_controller/metal.rb +125 -0
  26. data/lib/action_controller/metal/compatibility.rb +141 -0
  27. data/lib/action_controller/metal/conditional_get.rb +86 -0
  28. data/lib/action_controller/metal/configuration.rb +28 -0
  29. data/lib/action_controller/metal/cookies.rb +17 -0
  30. data/lib/action_controller/metal/exceptions.rb +46 -0
  31. data/lib/action_controller/metal/flash.rb +28 -0
  32. data/lib/action_controller/metal/head.rb +33 -0
  33. data/lib/action_controller/metal/helpers.rb +116 -0
  34. data/lib/action_controller/metal/hide_actions.rb +50 -0
  35. data/lib/action_controller/{http_authentication.rb → metal/http_authentication.rb} +18 -15
  36. data/lib/action_controller/metal/instrumentation.rb +99 -0
  37. data/lib/action_controller/metal/mime_responds.rb +300 -0
  38. data/lib/action_controller/metal/rack_delegation.rb +35 -0
  39. data/lib/action_controller/metal/redirecting.rb +90 -0
  40. data/lib/action_controller/metal/renderers.rb +95 -0
  41. data/lib/action_controller/metal/rendering.rb +69 -0
  42. data/lib/action_controller/metal/request_forgery_protection.rb +115 -0
  43. data/lib/action_controller/metal/rescue.rb +13 -0
  44. data/lib/action_controller/metal/responder.rb +220 -0
  45. data/lib/action_controller/{session_management.rb → metal/session_management.rb} +5 -14
  46. data/lib/action_controller/{streaming.rb → metal/streaming.rb} +13 -12
  47. data/lib/action_controller/metal/testing.rb +42 -0
  48. data/lib/action_controller/metal/url_for.rb +157 -0
  49. data/lib/action_controller/{verification.rb → metal/verification.rb} +41 -41
  50. data/lib/action_controller/middleware.rb +38 -0
  51. data/lib/action_controller/polymorphic_routes.rb +20 -26
  52. data/lib/action_controller/railtie.rb +30 -0
  53. data/lib/action_controller/railties/subscriber.rb +63 -0
  54. data/lib/action_controller/record_identifier.rb +3 -16
  55. data/lib/action_controller/test_case.rb +156 -18
  56. data/lib/action_controller/url_rewriter.rb +47 -200
  57. data/lib/action_controller/vendor/html-scanner.rb +16 -12
  58. data/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
  59. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +12 -9
  60. data/lib/action_dispatch.rb +88 -0
  61. data/lib/action_dispatch/http/cache.rb +123 -0
  62. data/lib/action_dispatch/http/filter_parameters.rb +98 -0
  63. data/lib/{action_controller → action_dispatch/http}/headers.rb +8 -8
  64. data/lib/action_dispatch/http/mime_negotiation.rb +101 -0
  65. data/lib/{action_controller → action_dispatch/http}/mime_type.rb +30 -11
  66. data/lib/{action_controller → action_dispatch/http}/mime_types.rb +5 -3
  67. data/lib/action_dispatch/http/parameters.rb +49 -0
  68. data/lib/action_dispatch/http/request.rb +223 -0
  69. data/lib/action_dispatch/http/response.rb +209 -0
  70. data/lib/action_dispatch/http/upload.rb +48 -0
  71. data/lib/action_dispatch/http/url.rb +129 -0
  72. data/lib/action_dispatch/middleware/callbacks.rb +50 -0
  73. data/lib/action_dispatch/middleware/cascade.rb +29 -0
  74. data/lib/action_dispatch/middleware/cookies.rb +216 -0
  75. data/lib/{action_controller → action_dispatch/middleware}/flash.rb +51 -90
  76. data/lib/action_dispatch/middleware/head.rb +18 -0
  77. data/lib/action_dispatch/middleware/params_parser.rb +78 -0
  78. data/lib/action_dispatch/middleware/rescue.rb +26 -0
  79. data/lib/action_dispatch/middleware/session/abstract_store.rb +209 -0
  80. data/lib/{action_controller → action_dispatch/middleware}/session/cookie_store.rb +56 -60
  81. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +47 -0
  82. data/lib/action_dispatch/middleware/show_exceptions.rb +173 -0
  83. data/lib/{action_controller/middleware_stack.rb → action_dispatch/middleware/stack.rb} +23 -13
  84. data/lib/action_dispatch/middleware/static.rb +44 -0
  85. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_request_and_response.erb +10 -3
  86. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_trace.erb +4 -4
  87. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +10 -0
  88. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/layout.erb +2 -2
  89. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/missing_template.erb +0 -0
  90. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/routing_error.erb +0 -0
  91. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/template_error.erb +3 -3
  92. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/unknown_action.erb +0 -0
  93. data/lib/action_dispatch/railtie.rb +15 -0
  94. data/lib/action_dispatch/routing.rb +217 -0
  95. data/lib/action_dispatch/routing/deprecated_mapper.rb +877 -0
  96. data/lib/action_dispatch/routing/mapper.rb +649 -0
  97. data/lib/action_dispatch/routing/route.rb +55 -0
  98. data/lib/action_dispatch/routing/route_set.rb +445 -0
  99. data/lib/action_dispatch/testing/assertions.rb +21 -0
  100. data/lib/action_dispatch/testing/assertions/dom.rb +37 -0
  101. data/lib/{action_controller/assertions/model_assertions.rb → action_dispatch/testing/assertions/model.rb} +2 -4
  102. data/lib/action_dispatch/testing/assertions/response.rb +154 -0
  103. data/lib/{action_controller/assertions/routing_assertions.rb → action_dispatch/testing/assertions/routing.rb} +72 -34
  104. data/lib/{action_controller/assertions/selector_assertions.rb → action_dispatch/testing/assertions/selector.rb} +14 -11
  105. data/lib/{action_controller/assertions/tag_assertions.rb → action_dispatch/testing/assertions/tag.rb} +25 -14
  106. data/lib/{action_controller → action_dispatch/testing}/integration.rb +173 -406
  107. data/lib/action_dispatch/testing/performance_test.rb +17 -0
  108. data/lib/action_dispatch/testing/test_process.rb +42 -0
  109. data/lib/action_dispatch/testing/test_request.rb +83 -0
  110. data/lib/action_dispatch/testing/test_response.rb +136 -0
  111. data/lib/action_pack/version.rb +3 -3
  112. data/lib/action_view.rb +29 -26
  113. data/lib/action_view/base.rb +101 -148
  114. data/lib/action_view/context.rb +44 -0
  115. data/lib/action_view/helpers.rb +6 -4
  116. data/lib/action_view/helpers/{active_record_helper.rb → active_model_helper.rb} +63 -63
  117. data/lib/action_view/helpers/asset_tag_helper.rb +166 -31
  118. data/lib/action_view/helpers/cache_helper.rb +1 -1
  119. data/lib/action_view/helpers/capture_helper.rb +40 -8
  120. data/lib/action_view/helpers/csrf_helper.rb +2 -4
  121. data/lib/action_view/helpers/date_helper.rb +14 -15
  122. data/lib/action_view/helpers/form_helper.rb +121 -24
  123. data/lib/action_view/helpers/form_options_helper.rb +26 -25
  124. data/lib/action_view/helpers/form_tag_helper.rb +42 -33
  125. data/lib/action_view/helpers/javascript_helper.rb +1 -109
  126. data/lib/action_view/helpers/number_helper.rb +4 -1
  127. data/lib/action_view/helpers/prototype_helper.rb +75 -499
  128. data/lib/action_view/helpers/raw_output_helper.rb +1 -1
  129. data/lib/action_view/helpers/record_tag_helper.rb +3 -3
  130. data/lib/action_view/helpers/sanitize_helper.rb +3 -2
  131. data/lib/action_view/helpers/scriptaculous_helper.rb +89 -53
  132. data/lib/action_view/helpers/tag_helper.rb +12 -13
  133. data/lib/action_view/helpers/text_helper.rb +33 -38
  134. data/lib/action_view/helpers/translation_helper.rb +11 -35
  135. data/lib/action_view/helpers/url_helper.rb +140 -134
  136. data/lib/action_view/locale/en.yml +34 -28
  137. data/lib/action_view/paths.rb +27 -24
  138. data/lib/action_view/railtie.rb +17 -0
  139. data/lib/action_view/railties/subscriber.rb +24 -0
  140. data/lib/action_view/{partials.rb → render/partials.rb} +161 -51
  141. data/lib/action_view/render/rendering.rb +117 -0
  142. data/lib/action_view/template.rb +88 -217
  143. data/lib/action_view/template/error.rb +105 -0
  144. data/lib/action_view/template/handler.rb +41 -0
  145. data/lib/action_view/template/handlers.rb +54 -0
  146. data/lib/action_view/{template_handlers → template/handlers}/builder.rb +6 -6
  147. data/lib/action_view/template/handlers/erb.rb +58 -0
  148. data/lib/action_view/{template_handlers → template/handlers}/rjs.rb +8 -3
  149. data/lib/action_view/template/resolver.rb +164 -0
  150. data/lib/action_view/template/text.rb +40 -0
  151. data/lib/action_view/test_case.rb +18 -18
  152. metadata +165 -420
  153. data/RUNNING_UNIT_TESTS +0 -24
  154. data/Rakefile +0 -158
  155. data/install.rb +0 -30
  156. data/lib/action_controller/assertions/dom_assertions.rb +0 -55
  157. data/lib/action_controller/assertions/response_assertions.rb +0 -169
  158. data/lib/action_controller/benchmarking.rb +0 -107
  159. data/lib/action_controller/caching/sweeper.rb +0 -45
  160. data/lib/action_controller/cgi_ext.rb +0 -15
  161. data/lib/action_controller/cgi_ext/cookie.rb +0 -112
  162. data/lib/action_controller/cgi_ext/query_extension.rb +0 -22
  163. data/lib/action_controller/cgi_ext/stdinput.rb +0 -24
  164. data/lib/action_controller/cgi_process.rb +0 -77
  165. data/lib/action_controller/cookies.rb +0 -197
  166. data/lib/action_controller/dispatcher.rb +0 -133
  167. data/lib/action_controller/failsafe.rb +0 -87
  168. data/lib/action_controller/filters.rb +0 -680
  169. data/lib/action_controller/helpers.rb +0 -225
  170. data/lib/action_controller/layout.rb +0 -286
  171. data/lib/action_controller/middlewares.rb +0 -14
  172. data/lib/action_controller/mime_responds.rb +0 -193
  173. data/lib/action_controller/params_parser.rb +0 -77
  174. data/lib/action_controller/performance_test.rb +0 -15
  175. data/lib/action_controller/rack_lint_patch.rb +0 -36
  176. data/lib/action_controller/reloader.rb +0 -54
  177. data/lib/action_controller/request.rb +0 -518
  178. data/lib/action_controller/request_forgery_protection.rb +0 -116
  179. data/lib/action_controller/rescue.rb +0 -183
  180. data/lib/action_controller/resources.rb +0 -682
  181. data/lib/action_controller/response.rb +0 -237
  182. data/lib/action_controller/routing.rb +0 -388
  183. data/lib/action_controller/routing/builder.rb +0 -197
  184. data/lib/action_controller/routing/optimisations.rb +0 -130
  185. data/lib/action_controller/routing/recognition_optimisation.rb +0 -167
  186. data/lib/action_controller/routing/route.rb +0 -265
  187. data/lib/action_controller/routing/route_set.rb +0 -503
  188. data/lib/action_controller/routing/routing_ext.rb +0 -49
  189. data/lib/action_controller/routing/segments.rb +0 -343
  190. data/lib/action_controller/session/abstract_store.rb +0 -276
  191. data/lib/action_controller/session/mem_cache_store.rb +0 -60
  192. data/lib/action_controller/status_codes.rb +0 -88
  193. data/lib/action_controller/string_coercion.rb +0 -29
  194. data/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
  195. data/lib/action_controller/test_process.rb +0 -580
  196. data/lib/action_controller/uploaded_file.rb +0 -44
  197. data/lib/action_view/helpers/benchmark_helper.rb +0 -54
  198. data/lib/action_view/inline_template.rb +0 -19
  199. data/lib/action_view/reloadable_template.rb +0 -117
  200. data/lib/action_view/renderable.rb +0 -109
  201. data/lib/action_view/renderable_partial.rb +0 -53
  202. data/lib/action_view/template_error.rb +0 -99
  203. data/lib/action_view/template_handler.rb +0 -34
  204. data/lib/action_view/template_handlers.rb +0 -48
  205. data/lib/action_view/template_handlers/erb.rb +0 -25
  206. data/lib/actionpack.rb +0 -2
  207. data/test/abstract_unit.rb +0 -78
  208. data/test/active_record_unit.rb +0 -104
  209. data/test/activerecord/active_record_store_test.rb +0 -221
  210. data/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
  211. data/test/adv_attr_test.rb +0 -20
  212. data/test/controller/action_pack_assertions_test.rb +0 -545
  213. data/test/controller/addresses_render_test.rb +0 -37
  214. data/test/controller/assert_select_test.rb +0 -735
  215. data/test/controller/base_test.rb +0 -217
  216. data/test/controller/benchmark_test.rb +0 -32
  217. data/test/controller/caching_test.rb +0 -743
  218. data/test/controller/capture_test.rb +0 -66
  219. data/test/controller/content_type_test.rb +0 -178
  220. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  221. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  222. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  223. data/test/controller/cookie_test.rb +0 -208
  224. data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
  225. data/test/controller/dispatcher_test.rb +0 -144
  226. data/test/controller/dom_assertions_test.rb +0 -53
  227. data/test/controller/failsafe_test.rb +0 -60
  228. data/test/controller/fake_controllers.rb +0 -33
  229. data/test/controller/fake_models.rb +0 -19
  230. data/test/controller/filter_params_test.rb +0 -52
  231. data/test/controller/filters_test.rb +0 -885
  232. data/test/controller/flash_test.rb +0 -174
  233. data/test/controller/header_test.rb +0 -14
  234. data/test/controller/helper_test.rb +0 -224
  235. data/test/controller/html-scanner/cdata_node_test.rb +0 -15
  236. data/test/controller/html-scanner/document_test.rb +0 -148
  237. data/test/controller/html-scanner/node_test.rb +0 -89
  238. data/test/controller/html-scanner/sanitizer_test.rb +0 -300
  239. data/test/controller/html-scanner/tag_node_test.rb +0 -238
  240. data/test/controller/html-scanner/text_node_test.rb +0 -50
  241. data/test/controller/html-scanner/tokenizer_test.rb +0 -131
  242. data/test/controller/http_basic_authentication_test.rb +0 -113
  243. data/test/controller/http_digest_authentication_test.rb +0 -254
  244. data/test/controller/integration_test.rb +0 -526
  245. data/test/controller/layout_test.rb +0 -215
  246. data/test/controller/localized_templates_test.rb +0 -24
  247. data/test/controller/logging_test.rb +0 -46
  248. data/test/controller/middleware_stack_test.rb +0 -90
  249. data/test/controller/mime_responds_test.rb +0 -536
  250. data/test/controller/mime_type_test.rb +0 -93
  251. data/test/controller/output_escaping_test.rb +0 -19
  252. data/test/controller/polymorphic_routes_test.rb +0 -297
  253. data/test/controller/rack_test.rb +0 -308
  254. data/test/controller/record_identifier_test.rb +0 -139
  255. data/test/controller/redirect_test.rb +0 -285
  256. data/test/controller/reloader_test.rb +0 -125
  257. data/test/controller/render_test.rb +0 -1783
  258. data/test/controller/request/json_params_parsing_test.rb +0 -65
  259. data/test/controller/request/multipart_params_parsing_test.rb +0 -177
  260. data/test/controller/request/query_string_parsing_test.rb +0 -129
  261. data/test/controller/request/test_request_test.rb +0 -35
  262. data/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
  263. data/test/controller/request/xml_params_parsing_test.rb +0 -103
  264. data/test/controller/request_forgery_protection_test.rb +0 -233
  265. data/test/controller/request_test.rb +0 -398
  266. data/test/controller/rescue_test.rb +0 -541
  267. data/test/controller/resources_test.rb +0 -1393
  268. data/test/controller/routing_test.rb +0 -2592
  269. data/test/controller/selector_test.rb +0 -628
  270. data/test/controller/send_file_test.rb +0 -171
  271. data/test/controller/session/abstract_store_test.rb +0 -64
  272. data/test/controller/session/cookie_store_test.rb +0 -354
  273. data/test/controller/session/mem_cache_store_test.rb +0 -187
  274. data/test/controller/session/test_session_test.rb +0 -58
  275. data/test/controller/test_test.rb +0 -700
  276. data/test/controller/translation_test.rb +0 -26
  277. data/test/controller/url_rewriter_test.rb +0 -395
  278. data/test/controller/verification_test.rb +0 -270
  279. data/test/controller/view_paths_test.rb +0 -141
  280. data/test/controller/webservice_test.rb +0 -273
  281. data/test/fixtures/_top_level_partial.html.erb +0 -1
  282. data/test/fixtures/_top_level_partial_only.erb +0 -1
  283. data/test/fixtures/addresses/list.erb +0 -1
  284. data/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
  285. data/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
  286. data/test/fixtures/companies.yml +0 -24
  287. data/test/fixtures/company.rb +0 -10
  288. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
  289. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
  290. data/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
  291. data/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
  292. data/test/fixtures/customers/_customer.html.erb +0 -1
  293. data/test/fixtures/db_definitions/sqlite.sql +0 -49
  294. data/test/fixtures/developer.rb +0 -9
  295. data/test/fixtures/developers.yml +0 -21
  296. data/test/fixtures/developers/_developer.erb +0 -1
  297. data/test/fixtures/developers_projects.yml +0 -13
  298. data/test/fixtures/failsafe/500.html +0 -1
  299. data/test/fixtures/fun/games/_game.erb +0 -1
  300. data/test/fixtures/fun/games/hello_world.erb +0 -1
  301. data/test/fixtures/fun/serious/games/_game.erb +0 -1
  302. data/test/fixtures/functional_caching/_partial.erb +0 -3
  303. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
  304. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
  305. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
  306. data/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
  307. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
  308. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
  309. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
  310. data/test/fixtures/good_customers/_good_customer.html.erb +0 -1
  311. data/test/fixtures/helpers/abc_helper.rb +0 -5
  312. data/test/fixtures/helpers/fun/games_helper.rb +0 -3
  313. data/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
  314. data/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
  315. data/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
  316. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  317. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
  318. data/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
  319. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
  320. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
  321. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
  322. data/test/fixtures/layout_tests/views/hello.rhtml +0 -1
  323. data/test/fixtures/layouts/_column.html.erb +0 -2
  324. data/test/fixtures/layouts/block_with_layout.erb +0 -3
  325. data/test/fixtures/layouts/builder.builder +0 -3
  326. data/test/fixtures/layouts/default_html.html.erb +0 -1
  327. data/test/fixtures/layouts/partial_with_layout.erb +0 -3
  328. data/test/fixtures/layouts/standard.erb +0 -1
  329. data/test/fixtures/layouts/talk_from_action.erb +0 -2
  330. data/test/fixtures/layouts/xhr.html.erb +0 -2
  331. data/test/fixtures/layouts/yield.erb +0 -2
  332. data/test/fixtures/localized/hello_world.de.html +0 -1
  333. data/test/fixtures/localized/hello_world.en.html +0 -1
  334. data/test/fixtures/mascot.rb +0 -3
  335. data/test/fixtures/mascots.yml +0 -4
  336. data/test/fixtures/mascots/_mascot.html.erb +0 -1
  337. data/test/fixtures/multipart/binary_file +0 -0
  338. data/test/fixtures/multipart/boundary_problem_file +0 -10
  339. data/test/fixtures/multipart/bracketed_param +0 -5
  340. data/test/fixtures/multipart/empty +0 -10
  341. data/test/fixtures/multipart/hello.txt +0 -1
  342. data/test/fixtures/multipart/large_text_file +0 -10
  343. data/test/fixtures/multipart/mixed_files +0 -0
  344. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  345. data/test/fixtures/multipart/none +0 -9
  346. data/test/fixtures/multipart/single_parameter +0 -5
  347. data/test/fixtures/multipart/text_file +0 -10
  348. data/test/fixtures/override/test/hello_world.erb +0 -1
  349. data/test/fixtures/override2/layouts/test/sub.erb +0 -1
  350. data/test/fixtures/post_test/layouts/post.html.erb +0 -1
  351. data/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
  352. data/test/fixtures/post_test/post/index.html.erb +0 -1
  353. data/test/fixtures/post_test/post/index.iphone.erb +0 -1
  354. data/test/fixtures/post_test/super_post/index.html.erb +0 -1
  355. data/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
  356. data/test/fixtures/project.rb +0 -3
  357. data/test/fixtures/projects.yml +0 -7
  358. data/test/fixtures/projects/_project.erb +0 -1
  359. data/test/fixtures/public/404.html +0 -1
  360. data/test/fixtures/public/500.da.html +0 -1
  361. data/test/fixtures/public/500.html +0 -1
  362. data/test/fixtures/public/absolute/test.css +0 -23
  363. data/test/fixtures/public/absolute/test.js +0 -63
  364. data/test/fixtures/public/images/rails.png +0 -0
  365. data/test/fixtures/public/javascripts/application.js +0 -1
  366. data/test/fixtures/public/javascripts/bank.js +0 -1
  367. data/test/fixtures/public/javascripts/controls.js +0 -1
  368. data/test/fixtures/public/javascripts/dragdrop.js +0 -1
  369. data/test/fixtures/public/javascripts/effects.js +0 -1
  370. data/test/fixtures/public/javascripts/prototype.js +0 -1
  371. data/test/fixtures/public/javascripts/robber.js +0 -1
  372. data/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
  373. data/test/fixtures/public/javascripts/version.1.0.js +0 -1
  374. data/test/fixtures/public/stylesheets/bank.css +0 -1
  375. data/test/fixtures/public/stylesheets/robber.css +0 -1
  376. data/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
  377. data/test/fixtures/public/stylesheets/version.1.0.css +0 -1
  378. data/test/fixtures/quiz/questions/_question.html.erb +0 -1
  379. data/test/fixtures/replies.yml +0 -15
  380. data/test/fixtures/replies/_reply.erb +0 -1
  381. data/test/fixtures/reply.rb +0 -7
  382. data/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
  383. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
  384. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
  385. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
  386. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
  387. data/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
  388. data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
  389. data/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
  390. data/test/fixtures/respond_to/using_defaults.html.erb +0 -1
  391. data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
  392. data/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
  393. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
  394. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
  395. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
  396. data/test/fixtures/scope/test/modgreet.erb +0 -1
  397. data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
  398. data/test/fixtures/shared.html.erb +0 -1
  399. data/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
  400. data/test/fixtures/test/_counter.html.erb +0 -1
  401. data/test/fixtures/test/_customer.erb +0 -1
  402. data/test/fixtures/test/_customer_counter.erb +0 -1
  403. data/test/fixtures/test/_customer_counter_with_as.erb +0 -1
  404. data/test/fixtures/test/_customer_greeting.erb +0 -1
  405. data/test/fixtures/test/_customer_with_var.erb +0 -1
  406. data/test/fixtures/test/_form.erb +0 -1
  407. data/test/fixtures/test/_from_helper.erb +0 -1
  408. data/test/fixtures/test/_hash_greeting.erb +0 -1
  409. data/test/fixtures/test/_hash_object.erb +0 -2
  410. data/test/fixtures/test/_hello.builder +0 -1
  411. data/test/fixtures/test/_labelling_form.erb +0 -1
  412. data/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
  413. data/test/fixtures/test/_layout_for_partial.html.erb +0 -3
  414. data/test/fixtures/test/_local_inspector.html.erb +0 -1
  415. data/test/fixtures/test/_one.html.erb +0 -1
  416. data/test/fixtures/test/_partial.erb +0 -1
  417. data/test/fixtures/test/_partial.html.erb +0 -1
  418. data/test/fixtures/test/_partial.js.erb +0 -1
  419. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
  420. data/test/fixtures/test/_partial_only.erb +0 -1
  421. data/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
  422. data/test/fixtures/test/_person.erb +0 -2
  423. data/test/fixtures/test/_raise.html.erb +0 -1
  424. data/test/fixtures/test/_two.html.erb +0 -1
  425. data/test/fixtures/test/_utf8_partial.html.erb +0 -1
  426. data/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
  427. data/test/fixtures/test/action_talk_to_layout.erb +0 -2
  428. data/test/fixtures/test/array_translation.erb +0 -1
  429. data/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
  430. data/test/fixtures/test/capturing.erb +0 -4
  431. data/test/fixtures/test/content_for.erb +0 -2
  432. data/test/fixtures/test/content_for_concatenated.erb +0 -3
  433. data/test/fixtures/test/content_for_with_parameter.erb +0 -2
  434. data/test/fixtures/test/delete_with_js.rjs +0 -2
  435. data/test/fixtures/test/dont_pick_me +0 -1
  436. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
  437. data/test/fixtures/test/enum_rjs_test.rjs +0 -6
  438. data/test/fixtures/test/formatted_html_erb.html.erb +0 -1
  439. data/test/fixtures/test/formatted_xml_erb.builder +0 -1
  440. data/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
  441. data/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
  442. data/test/fixtures/test/greeting.erb +0 -1
  443. data/test/fixtures/test/greeting.js.rjs +0 -1
  444. data/test/fixtures/test/hello.builder +0 -4
  445. data/test/fixtures/test/hello_world.da.html.erb +0 -1
  446. data/test/fixtures/test/hello_world.erb +0 -1
  447. data/test/fixtures/test/hello_world.erb~ +0 -1
  448. data/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
  449. data/test/fixtures/test/hello_world_container.builder +0 -3
  450. data/test/fixtures/test/hello_world_from_rxml.builder +0 -4
  451. data/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
  452. data/test/fixtures/test/hello_xml_world.builder +0 -11
  453. data/test/fixtures/test/hyphen-ated.erb +0 -1
  454. data/test/fixtures/test/implicit_content_type.atom.builder +0 -2
  455. data/test/fixtures/test/list.erb +0 -1
  456. data/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
  457. data/test/fixtures/test/malformed/malformed.erb~ +0 -1
  458. data/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
  459. data/test/fixtures/test/nested_layout.erb +0 -3
  460. data/test/fixtures/test/non_erb_block_content_for.builder +0 -4
  461. data/test/fixtures/test/potential_conflicts.erb +0 -4
  462. data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
  463. data/test/fixtures/test/render_file_from_template.html.erb +0 -1
  464. data/test/fixtures/test/render_file_with_ivar.erb +0 -1
  465. data/test/fixtures/test/render_file_with_locals.erb +0 -1
  466. data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
  467. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
  468. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
  469. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
  470. data/test/fixtures/test/render_to_string_test.erb +0 -1
  471. data/test/fixtures/test/scoped_array_translation.erb +0 -1
  472. data/test/fixtures/test/sub_template_raise.html.erb +0 -1
  473. data/test/fixtures/test/template.erb +0 -1
  474. data/test/fixtures/test/translation.erb +0 -1
  475. data/test/fixtures/test/update_element_with_capture.erb +0 -9
  476. data/test/fixtures/test/using_layout_around_block.html.erb +0 -1
  477. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
  478. data/test/fixtures/test/utf8.html.erb +0 -4
  479. data/test/fixtures/test/utf8_magic.html.erb +0 -5
  480. data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
  481. data/test/fixtures/topic.rb +0 -3
  482. data/test/fixtures/topics.yml +0 -22
  483. data/test/fixtures/topics/_topic.html.erb +0 -1
  484. data/test/template/active_record_helper_i18n_test.rb +0 -51
  485. data/test/template/active_record_helper_test.rb +0 -302
  486. data/test/template/asset_tag_helper_test.rb +0 -770
  487. data/test/template/atom_feed_helper_test.rb +0 -315
  488. data/test/template/benchmark_helper_test.rb +0 -86
  489. data/test/template/compiled_templates_test.rb +0 -204
  490. data/test/template/date_helper_i18n_test.rb +0 -121
  491. data/test/template/date_helper_test.rb +0 -2603
  492. data/test/template/erb_util_test.rb +0 -36
  493. data/test/template/form_helper_test.rb +0 -1447
  494. data/test/template/form_options_helper_i18n_test.rb +0 -27
  495. data/test/template/form_options_helper_test.rb +0 -811
  496. data/test/template/form_tag_helper_test.rb +0 -356
  497. data/test/template/javascript_helper_test.rb +0 -106
  498. data/test/template/number_helper_i18n_test.rb +0 -69
  499. data/test/template/number_helper_test.rb +0 -132
  500. data/test/template/prototype_helper_test.rb +0 -639
  501. data/test/template/raw_output_helper_test.rb +0 -21
  502. data/test/template/record_tag_helper_test.rb +0 -58
  503. data/test/template/render_test.rb +0 -329
  504. data/test/template/sanitize_helper_test.rb +0 -57
  505. data/test/template/scriptaculous_helper_test.rb +0 -90
  506. data/test/template/tag_helper_test.rb +0 -98
  507. data/test/template/template_test.rb +0 -32
  508. data/test/template/test_test.rb +0 -54
  509. data/test/template/text_helper_test.rb +0 -601
  510. data/test/template/translation_helper_test.rb +0 -95
  511. data/test/template/url_helper_test.rb +0 -641
  512. data/test/testing_sandbox.rb +0 -15
  513. data/test/view/test_case_test.rb +0 -176
@@ -1,27 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class FormOptionsHelperI18nTests < ActionView::TestCase
4
- tests ActionView::Helpers::FormOptionsHelper
5
-
6
- def setup
7
- @prompt_message = 'Select!'
8
- I18n.backend.send(:init_translations)
9
- I18n.backend.store_translations :en, :support => { :select => { :prompt => @prompt_message } }
10
- end
11
-
12
- def teardown
13
- I18n.backend = I18n::Backend::Simple.new
14
- end
15
-
16
- def test_select_with_prompt_true_translates_prompt_message
17
- I18n.expects(:translate).with('support.select.prompt', { :default => 'Please select' })
18
- select('post', 'category', [], :prompt => true)
19
- end
20
-
21
- def test_select_with_translated_prompt
22
- assert_dom_equal(
23
- %Q(<select id="post_category" name="post[category]"><option value="">#{@prompt_message}</option>\n</select>),
24
- select('post', 'category', [], :prompt => true)
25
- )
26
- end
27
- end
@@ -1,811 +0,0 @@
1
- require 'abstract_unit'
2
- require 'tzinfo'
3
-
4
- TZInfo::Timezone.cattr_reader :loaded_zones
5
-
6
- class FormOptionsHelperTest < ActionView::TestCase
7
- tests ActionView::Helpers::FormOptionsHelper
8
-
9
- silence_warnings do
10
- Post = Struct.new('Post', :title, :author_name, :body, :secret, :written_on, :category, :origin)
11
- Continent = Struct.new('Continent', :continent_name, :countries)
12
- Country = Struct.new('Country', :country_id, :country_name)
13
- Firm = Struct.new('Firm', :time_zone)
14
- Album = Struct.new('Album', :id, :title, :genre)
15
- end
16
-
17
- def setup
18
- @fake_timezones = %w(A B C D E).inject([]) do |zones, id|
19
- tz = TZInfo::Timezone.loaded_zones[id] = stub(:name => id, :to_s => id)
20
- ActiveSupport::TimeZone.stubs(:[]).with(id).returns(tz)
21
- zones << tz
22
- end
23
- ActiveSupport::TimeZone.stubs(:all).returns(@fake_timezones)
24
- end
25
-
26
- def test_collection_options
27
- assert_dom_equal(
28
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
29
- options_from_collection_for_select(dummy_posts, "author_name", "title")
30
- )
31
- end
32
-
33
-
34
- def test_collection_options_with_preselected_value
35
- assert_dom_equal(
36
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
37
- options_from_collection_for_select(dummy_posts, "author_name", "title", "Babe")
38
- )
39
- end
40
-
41
- def test_collection_options_with_preselected_value_array
42
- assert_dom_equal(
43
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>",
44
- options_from_collection_for_select(dummy_posts, "author_name", "title", [ "Babe", "Cabe" ])
45
- )
46
- end
47
-
48
- def test_collection_options_with_proc_for_selected
49
- assert_dom_equal(
50
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
51
- options_from_collection_for_select(dummy_posts, "author_name", "title", lambda{|p| p.author_name == 'Babe' })
52
- )
53
- end
54
-
55
- def test_collection_options_with_disabled_value
56
- assert_dom_equal(
57
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
58
- options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => "Babe")
59
- )
60
- end
61
-
62
- def test_collection_options_with_disabled_array
63
- assert_dom_equal(
64
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
65
- options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => [ "Babe", "Cabe" ])
66
- )
67
- end
68
-
69
- def test_collection_options_with_preselected_and_disabled_value
70
- assert_dom_equal(
71
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>",
72
- options_from_collection_for_select(dummy_posts, "author_name", "title", :selected => "Cabe", :disabled => "Babe")
73
- )
74
- end
75
-
76
- def test_collection_options_with_proc_for_disabled
77
- assert_dom_equal(
78
- "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
79
- options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => lambda{|p| %w(Babe Cabe).include? p.author_name })
80
- )
81
- end
82
-
83
- def test_string_options_for_select
84
- options = "<option value=\"Denmark\">Denmark</option><option value=\"USA\">USA</option><option value=\"Sweden\">Sweden</option>"
85
- assert_dom_equal(
86
- options,
87
- options_for_select(options)
88
- )
89
- end
90
-
91
- def test_array_options_for_select
92
- assert_dom_equal(
93
- "<option value=\"&lt;Denmark&gt;\">&lt;Denmark&gt;</option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
94
- options_for_select([ "<Denmark>", "USA", "Sweden" ])
95
- )
96
- end
97
-
98
- def test_array_options_for_select_with_selection
99
- assert_dom_equal(
100
- "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>",
101
- options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
102
- )
103
- end
104
-
105
- def test_array_options_for_select_with_selection_array
106
- assert_dom_equal(
107
- "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>",
108
- options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
109
- )
110
- end
111
-
112
- def test_array_options_for_select_with_disabled_value
113
- assert_dom_equal(
114
- "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" disabled=\"disabled\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>",
115
- options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => "<USA>")
116
- )
117
- end
118
-
119
- def test_array_options_for_select_with_disabled_array
120
- assert_dom_equal(
121
- "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" disabled=\"disabled\">&lt;USA&gt;</option>\n<option value=\"Sweden\" disabled=\"disabled\">Sweden</option>",
122
- options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => ["<USA>", "Sweden"])
123
- )
124
- end
125
-
126
- def test_array_options_for_select_with_selection_and_disabled_value
127
- assert_dom_equal(
128
- "<option value=\"Denmark\" selected=\"selected\">Denmark</option>\n<option value=\"&lt;USA&gt;\" disabled=\"disabled\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>",
129
- options_for_select([ "Denmark", "<USA>", "Sweden" ], :selected => "Denmark", :disabled => "<USA>")
130
- )
131
- end
132
-
133
- def test_array_options_for_string_include_in_other_string_bug_fix
134
- assert_dom_equal(
135
- "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
136
- options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
137
- )
138
- assert_dom_equal(
139
- "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
140
- options_for_select([ "ruby", "rubyonrails" ], "ruby")
141
- )
142
- assert_dom_equal(
143
- %(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
144
- options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
145
- )
146
- end
147
-
148
- def test_hash_options_for_select
149
- assert_dom_equal(
150
- "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
151
- options_for_select("$" => "Dollar", "<DKR>" => "<Kroner>").split("\n").sort.join("\n")
152
- )
153
- assert_dom_equal(
154
- "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
155
- options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar").split("\n").sort.join("\n")
156
- )
157
- assert_dom_equal(
158
- "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
159
- options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]).split("\n").sort.join("\n")
160
- )
161
- end
162
-
163
- def test_ducktyped_options_for_select
164
- quack = Struct.new(:first, :last)
165
- assert_dom_equal(
166
- "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
167
- options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
168
- )
169
- assert_dom_equal(
170
- "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
171
- options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
172
- )
173
- assert_dom_equal(
174
- "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
175
- options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
176
- )
177
- end
178
-
179
- def test_option_groups_from_collection_for_select
180
- @continents = [
181
- Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
182
- Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
183
- ]
184
-
185
- assert_dom_equal(
186
- "<optgroup label=\"&lt;Africa&gt;\"><option value=\"&lt;sa&gt;\">&lt;South Africa&gt;</option>\n<option value=\"so\">Somalia</option></optgroup><optgroup label=\"Europe\"><option value=\"dk\" selected=\"selected\">Denmark</option>\n<option value=\"ie\">Ireland</option></optgroup>",
187
- option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk")
188
- )
189
- end
190
-
191
- def test_grouped_options_for_select_with_array
192
- assert_dom_equal(
193
- "<optgroup label=\"North America\"><option value=\"US\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup><optgroup label=\"Europe\"><option value=\"GB\">Great Britain</option>\n<option value=\"Germany\">Germany</option></optgroup>",
194
- grouped_options_for_select([
195
- ["North America",
196
- [['United States','US'],"Canada"]],
197
- ["Europe",
198
- [["Great Britain","GB"], "Germany"]]
199
- ])
200
- )
201
- end
202
-
203
- def test_grouped_options_for_select_with_selected_and_prompt
204
- assert_dom_equal(
205
- "<option value=\"\">Choose a product...</option><optgroup label=\"Hats\"><option value=\"Baseball Cap\">Baseball Cap</option>\n<option selected=\"selected\" value=\"Cowboy Hat\">Cowboy Hat</option></optgroup>",
206
- grouped_options_for_select([["Hats", ["Baseball Cap","Cowboy Hat"]]], "Cowboy Hat", "Choose a product...")
207
- )
208
- end
209
-
210
- def test_optgroups_with_with_options_with_hash
211
- assert_dom_equal(
212
- "<optgroup label=\"Europe\"><option value=\"Denmark\">Denmark</option>\n<option value=\"Germany\">Germany</option></optgroup><optgroup label=\"North America\"><option value=\"United States\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup>",
213
- grouped_options_for_select({'North America' => ['United States','Canada'], 'Europe' => ['Denmark','Germany']})
214
- )
215
- end
216
-
217
- def test_time_zone_options_no_parms
218
- opts = time_zone_options_for_select
219
- assert_dom_equal "<option value=\"A\">A</option>\n" +
220
- "<option value=\"B\">B</option>\n" +
221
- "<option value=\"C\">C</option>\n" +
222
- "<option value=\"D\">D</option>\n" +
223
- "<option value=\"E\">E</option>",
224
- opts
225
- end
226
-
227
- def test_time_zone_options_with_selected
228
- opts = time_zone_options_for_select( "D" )
229
- assert_dom_equal "<option value=\"A\">A</option>\n" +
230
- "<option value=\"B\">B</option>\n" +
231
- "<option value=\"C\">C</option>\n" +
232
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
233
- "<option value=\"E\">E</option>",
234
- opts
235
- end
236
-
237
- def test_time_zone_options_with_unknown_selected
238
- opts = time_zone_options_for_select( "K" )
239
- assert_dom_equal "<option value=\"A\">A</option>\n" +
240
- "<option value=\"B\">B</option>\n" +
241
- "<option value=\"C\">C</option>\n" +
242
- "<option value=\"D\">D</option>\n" +
243
- "<option value=\"E\">E</option>",
244
- opts
245
- end
246
-
247
- def test_time_zone_options_with_priority_zones
248
- zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
249
- opts = time_zone_options_for_select( nil, zones )
250
- assert_dom_equal "<option value=\"B\">B</option>\n" +
251
- "<option value=\"E\">E</option>" +
252
- "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
253
- "<option value=\"A\">A</option>\n" +
254
- "<option value=\"C\">C</option>\n" +
255
- "<option value=\"D\">D</option>",
256
- opts
257
- end
258
-
259
- def test_time_zone_options_with_selected_priority_zones
260
- zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
261
- opts = time_zone_options_for_select( "E", zones )
262
- assert_dom_equal "<option value=\"B\">B</option>\n" +
263
- "<option value=\"E\" selected=\"selected\">E</option>" +
264
- "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
265
- "<option value=\"A\">A</option>\n" +
266
- "<option value=\"C\">C</option>\n" +
267
- "<option value=\"D\">D</option>",
268
- opts
269
- end
270
-
271
- def test_time_zone_options_with_unselected_priority_zones
272
- zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
273
- opts = time_zone_options_for_select( "C", zones )
274
- assert_dom_equal "<option value=\"B\">B</option>\n" +
275
- "<option value=\"E\">E</option>" +
276
- "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
277
- "<option value=\"A\">A</option>\n" +
278
- "<option value=\"C\" selected=\"selected\">C</option>\n" +
279
- "<option value=\"D\">D</option>",
280
- opts
281
- end
282
-
283
- def test_time_zone_options_returns_html_safe_string
284
- assert time_zone_options_for_select.html_safe?
285
- end
286
-
287
- def test_select
288
- @post = Post.new
289
- @post.category = "<mus>"
290
- assert_dom_equal(
291
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
292
- select("post", "category", %w( abe <mus> hest))
293
- )
294
- end
295
-
296
- def test_select_under_fields_for
297
- @post = Post.new
298
- @post.category = "<mus>"
299
-
300
- fields_for :post, @post do |f|
301
- concat f.select(:category, %w( abe <mus> hest))
302
- end
303
-
304
- assert_dom_equal(
305
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
306
- output_buffer
307
- )
308
- end
309
-
310
- def test_select_under_fields_for_with_index
311
- @post = Post.new
312
- @post.category = "<mus>"
313
-
314
- fields_for :post, @post, :index => 108 do |f|
315
- concat f.select(:category, %w( abe <mus> hest))
316
- end
317
-
318
- assert_dom_equal(
319
- "<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
320
- output_buffer
321
- )
322
- end
323
-
324
- def test_select_under_fields_for_with_auto_index
325
- @post = Post.new
326
- @post.category = "<mus>"
327
- def @post.to_param; 108; end
328
-
329
- fields_for "post[]", @post do |f|
330
- concat f.select(:category, %w( abe <mus> hest))
331
- end
332
-
333
- assert_dom_equal(
334
- "<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
335
- output_buffer
336
- )
337
- end
338
-
339
- def test_select_under_fields_for_with_string_and_given_prompt
340
- @post = Post.new
341
- options = "<option value=\"abe\">abe</option><option value=\"mus\">mus</option><option value=\"hest\">hest</option>"
342
-
343
- fields_for :post, @post do |f|
344
- concat f.select(:category, options, :prompt => 'The prompt')
345
- end
346
-
347
- assert_dom_equal(
348
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n#{options}</select>",
349
- output_buffer
350
- )
351
- end
352
-
353
- def test_select_with_blank
354
- @post = Post.new
355
- @post.category = "<mus>"
356
- assert_dom_equal(
357
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
358
- select("post", "category", %w( abe <mus> hest), :include_blank => true)
359
- )
360
- end
361
-
362
- def test_select_with_blank_as_string
363
- @post = Post.new
364
- @post.category = "<mus>"
365
- assert_dom_equal(
366
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">None</option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
367
- select("post", "category", %w( abe <mus> hest), :include_blank => 'None')
368
- )
369
- end
370
-
371
- def test_select_with_default_prompt
372
- @post = Post.new
373
- @post.category = ""
374
- assert_dom_equal(
375
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
376
- select("post", "category", %w( abe <mus> hest), :prompt => true)
377
- )
378
- end
379
-
380
- def test_select_no_prompt_when_select_has_value
381
- @post = Post.new
382
- @post.category = "<mus>"
383
- assert_dom_equal(
384
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
385
- select("post", "category", %w( abe <mus> hest), :prompt => true)
386
- )
387
- end
388
-
389
- def test_select_with_given_prompt
390
- @post = Post.new
391
- @post.category = ""
392
- assert_dom_equal(
393
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
394
- select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
395
- )
396
- end
397
-
398
- def test_select_with_prompt_and_blank
399
- @post = Post.new
400
- @post.category = ""
401
- assert_dom_equal(
402
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
403
- select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
404
- )
405
- end
406
-
407
- def test_select_with_selected_value
408
- @post = Post.new
409
- @post.category = "<mus>"
410
- assert_dom_equal(
411
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" selected=\"selected\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
412
- select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
413
- )
414
- end
415
-
416
- def test_select_with_index_option
417
- @album = Album.new
418
- @album.id = 1
419
-
420
- expected = "<select id=\"album__genre\" name=\"album[][genre]\"><option value=\"rap\">rap</option>\n<option value=\"rock\">rock</option>\n<option value=\"country\">country</option></select>"
421
-
422
- assert_dom_equal(
423
- expected,
424
- select("album[]", "genre", %w[rap rock country], {}, { :index => nil })
425
- )
426
- end
427
-
428
- def test_select_with_selected_nil
429
- @post = Post.new
430
- @post.category = "<mus>"
431
- assert_dom_equal(
432
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>",
433
- select("post", "category", %w( abe <mus> hest ), :selected => nil)
434
- )
435
- end
436
-
437
- def test_select_with_disabled_value
438
- @post = Post.new
439
- @post.category = "<mus>"
440
- assert_dom_equal(
441
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
442
- select("post", "category", %w( abe <mus> hest ), :disabled => 'hest')
443
- )
444
- end
445
-
446
- def test_select_with_disabled_array
447
- @post = Post.new
448
- @post.category = "<mus>"
449
- assert_dom_equal(
450
- "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" disabled=\"disabled\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
451
- select("post", "category", %w( abe <mus> hest ), :disabled => ['hest', 'abe'])
452
- )
453
- end
454
-
455
- def test_collection_select
456
- @post = Post.new
457
- @post.author_name = "Babe"
458
-
459
- assert_dom_equal(
460
- "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
461
- collection_select("post", "author_name", dummy_posts, "author_name", "author_name")
462
- )
463
- end
464
-
465
- def test_collection_select_under_fields_for
466
- @post = Post.new
467
- @post.author_name = "Babe"
468
-
469
- fields_for :post, @post do |f|
470
- concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
471
- end
472
-
473
- assert_dom_equal(
474
- "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
475
- output_buffer
476
- )
477
- end
478
-
479
- def test_collection_select_under_fields_for_with_index
480
- @post = Post.new
481
- @post.author_name = "Babe"
482
-
483
- fields_for :post, @post, :index => 815 do |f|
484
- concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
485
- end
486
-
487
- assert_dom_equal(
488
- "<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
489
- output_buffer
490
- )
491
- end
492
-
493
- def test_collection_select_under_fields_for_with_auto_index
494
- @post = Post.new
495
- @post.author_name = "Babe"
496
- def @post.to_param; 815; end
497
-
498
- fields_for "post[]", @post do |f|
499
- concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
500
- end
501
-
502
- assert_dom_equal(
503
- "<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
504
- output_buffer
505
- )
506
- end
507
-
508
- def test_collection_select_with_blank_and_style
509
- @post = Post.new
510
- @post.author_name = "Babe"
511
-
512
- assert_dom_equal(
513
- "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\"></option>\n<option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
514
- collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
515
- )
516
- end
517
-
518
- def test_collection_select_with_blank_as_string_and_style
519
- @post = Post.new
520
- @post.author_name = "Babe"
521
-
522
- assert_dom_equal(
523
- "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\">No Selection</option>\n<option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
524
- collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => 'No Selection' }, "style" => "width: 200px")
525
- )
526
- end
527
-
528
- def test_collection_select_with_multiple_option_appends_array_brackets
529
- @post = Post.new
530
- @post.author_name = "Babe"
531
-
532
- expected = "<select id=\"post_author_name\" name=\"post[author_name][]\" multiple=\"multiple\"><option value=\"\"></option>\n<option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>"
533
-
534
- # Should suffix default name with [].
535
- assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
536
-
537
- # Shouldn't suffix custom name with [].
538
- assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
539
- end
540
-
541
- def test_collection_select_with_blank_and_selected
542
- @post = Post.new
543
- @post.author_name = "Babe"
544
-
545
- assert_dom_equal(
546
- %{<select id="post_author_name" name="post[author_name]"><option value=""></option>\n<option value="&lt;Abe&gt;" selected="selected">&lt;Abe&gt;</option>\n<option value="Babe">Babe</option>\n<option value="Cabe">Cabe</option></select>},
547
- collection_select("post", "author_name", dummy_posts, "author_name", "author_name", {:include_blank => true, :selected => "<Abe>"})
548
- )
549
- end
550
-
551
- def test_collection_select_with_disabled
552
- @post = Post.new
553
- @post.author_name = "Babe"
554
-
555
- assert_dom_equal(
556
- "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe</option></select>",
557
- collection_select("post", "author_name", dummy_posts, "author_name", "author_name", :disabled => 'Cabe')
558
- )
559
- end
560
-
561
- def test_time_zone_select
562
- @firm = Firm.new("D")
563
- html = time_zone_select( "firm", "time_zone" )
564
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
565
- "<option value=\"A\">A</option>\n" +
566
- "<option value=\"B\">B</option>\n" +
567
- "<option value=\"C\">C</option>\n" +
568
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
569
- "<option value=\"E\">E</option>" +
570
- "</select>",
571
- html
572
- end
573
-
574
- def test_time_zone_select_under_fields_for
575
- @firm = Firm.new("D")
576
-
577
- fields_for :firm, @firm do |f|
578
- concat f.time_zone_select(:time_zone)
579
- end
580
-
581
- assert_dom_equal(
582
- "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
583
- "<option value=\"A\">A</option>\n" +
584
- "<option value=\"B\">B</option>\n" +
585
- "<option value=\"C\">C</option>\n" +
586
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
587
- "<option value=\"E\">E</option>" +
588
- "</select>",
589
- output_buffer
590
- )
591
- end
592
-
593
- def test_time_zone_select_under_fields_for_with_index
594
- @firm = Firm.new("D")
595
-
596
- fields_for :firm, @firm, :index => 305 do |f|
597
- concat f.time_zone_select(:time_zone)
598
- end
599
-
600
- assert_dom_equal(
601
- "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
602
- "<option value=\"A\">A</option>\n" +
603
- "<option value=\"B\">B</option>\n" +
604
- "<option value=\"C\">C</option>\n" +
605
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
606
- "<option value=\"E\">E</option>" +
607
- "</select>",
608
- output_buffer
609
- )
610
- end
611
-
612
- def test_time_zone_select_under_fields_for_with_auto_index
613
- @firm = Firm.new("D")
614
- def @firm.to_param; 305; end
615
-
616
- fields_for "firm[]", @firm do |f|
617
- concat f.time_zone_select(:time_zone)
618
- end
619
-
620
- assert_dom_equal(
621
- "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
622
- "<option value=\"A\">A</option>\n" +
623
- "<option value=\"B\">B</option>\n" +
624
- "<option value=\"C\">C</option>\n" +
625
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
626
- "<option value=\"E\">E</option>" +
627
- "</select>",
628
- output_buffer
629
- )
630
- end
631
-
632
- def test_time_zone_select_with_blank
633
- @firm = Firm.new("D")
634
- html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
635
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
636
- "<option value=\"\"></option>\n" +
637
- "<option value=\"A\">A</option>\n" +
638
- "<option value=\"B\">B</option>\n" +
639
- "<option value=\"C\">C</option>\n" +
640
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
641
- "<option value=\"E\">E</option>" +
642
- "</select>",
643
- html
644
- end
645
-
646
- def test_time_zone_select_with_blank_as_string
647
- @firm = Firm.new("D")
648
- html = time_zone_select("firm", "time_zone", nil, :include_blank => 'No Zone')
649
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
650
- "<option value=\"\">No Zone</option>\n" +
651
- "<option value=\"A\">A</option>\n" +
652
- "<option value=\"B\">B</option>\n" +
653
- "<option value=\"C\">C</option>\n" +
654
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
655
- "<option value=\"E\">E</option>" +
656
- "</select>",
657
- html
658
- end
659
-
660
- def test_time_zone_select_with_style
661
- @firm = Firm.new("D")
662
- html = time_zone_select("firm", "time_zone", nil, {},
663
- "style" => "color: red")
664
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
665
- "<option value=\"A\">A</option>\n" +
666
- "<option value=\"B\">B</option>\n" +
667
- "<option value=\"C\">C</option>\n" +
668
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
669
- "<option value=\"E\">E</option>" +
670
- "</select>",
671
- html
672
- assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
673
- :style => "color: red")
674
- end
675
-
676
- def test_time_zone_select_with_blank_and_style
677
- @firm = Firm.new("D")
678
- html = time_zone_select("firm", "time_zone", nil,
679
- { :include_blank => true }, "style" => "color: red")
680
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
681
- "<option value=\"\"></option>\n" +
682
- "<option value=\"A\">A</option>\n" +
683
- "<option value=\"B\">B</option>\n" +
684
- "<option value=\"C\">C</option>\n" +
685
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
686
- "<option value=\"E\">E</option>" +
687
- "</select>",
688
- html
689
- assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
690
- { :include_blank => true }, :style => "color: red")
691
- end
692
-
693
- def test_time_zone_select_with_blank_as_string_and_style
694
- @firm = Firm.new("D")
695
- html = time_zone_select("firm", "time_zone", nil,
696
- { :include_blank => 'No Zone' }, "style" => "color: red")
697
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
698
- "<option value=\"\">No Zone</option>\n" +
699
- "<option value=\"A\">A</option>\n" +
700
- "<option value=\"B\">B</option>\n" +
701
- "<option value=\"C\">C</option>\n" +
702
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
703
- "<option value=\"E\">E</option>" +
704
- "</select>",
705
- html
706
- assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
707
- { :include_blank => 'No Zone' }, :style => "color: red")
708
- end
709
-
710
- def test_time_zone_select_with_priority_zones
711
- @firm = Firm.new("D")
712
- zones = [ ActiveSupport::TimeZone.new("A"), ActiveSupport::TimeZone.new("D") ]
713
- html = time_zone_select("firm", "time_zone", zones )
714
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
715
- "<option value=\"A\">A</option>\n" +
716
- "<option value=\"D\" selected=\"selected\">D</option>" +
717
- "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
718
- "<option value=\"B\">B</option>\n" +
719
- "<option value=\"C\">C</option>\n" +
720
- "<option value=\"E\">E</option>" +
721
- "</select>",
722
- html
723
- end
724
-
725
- def test_time_zone_select_with_priority_zones_as_regexp
726
- @firm = Firm.new("D")
727
- @fake_timezones.each_with_index do |tz, i|
728
- tz.stubs(:=~).returns(i.zero? || i == 3)
729
- end
730
-
731
- html = time_zone_select("firm", "time_zone", /A|D/)
732
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
733
- "<option value=\"A\">A</option>\n" +
734
- "<option value=\"D\" selected=\"selected\">D</option>" +
735
- "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
736
- "<option value=\"B\">B</option>\n" +
737
- "<option value=\"C\">C</option>\n" +
738
- "<option value=\"E\">E</option>" +
739
- "</select>",
740
- html
741
- end
742
-
743
- def test_time_zone_select_with_default_time_zone_and_nil_value
744
- @firm = Firm.new()
745
- @firm.time_zone = nil
746
- html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
747
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
748
- "<option value=\"A\">A</option>\n" +
749
- "<option value=\"B\" selected=\"selected\">B</option>\n" +
750
- "<option value=\"C\">C</option>\n" +
751
- "<option value=\"D\">D</option>\n" +
752
- "<option value=\"E\">E</option>" +
753
- "</select>",
754
- html
755
- end
756
-
757
- def test_time_zone_select_with_default_time_zone_and_value
758
- @firm = Firm.new('D')
759
- html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
760
- assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
761
- "<option value=\"A\">A</option>\n" +
762
- "<option value=\"B\">B</option>\n" +
763
- "<option value=\"C\">C</option>\n" +
764
- "<option value=\"D\" selected=\"selected\">D</option>\n" +
765
- "<option value=\"E\">E</option>" +
766
- "</select>",
767
- html
768
- end
769
-
770
- def test_grouped_collection_select
771
- @continents = [
772
- Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
773
- Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
774
- ]
775
-
776
- @post = Post.new
777
- @post.origin = 'dk'
778
-
779
- assert_dom_equal(
780
- %Q{<select id="post_origin" name="post[origin]"><optgroup label="&lt;Africa&gt;"><option value="&lt;sa&gt;">&lt;South Africa&gt;</option>\n<option value="so">Somalia</option></optgroup><optgroup label="Europe"><option value="dk" selected="selected">Denmark</option>\n<option value="ie">Ireland</option></optgroup></select>},
781
- grouped_collection_select("post", "origin", @continents, :countries, :continent_name, :country_id, :country_name)
782
- )
783
- end
784
-
785
- def test_grouped_collection_select_under_fields_for
786
- @continents = [
787
- Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
788
- Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
789
- ]
790
-
791
- @post = Post.new
792
- @post.origin = 'dk'
793
-
794
- fields_for :post, @post do |f|
795
- concat f.grouped_collection_select("origin", @continents, :countries, :continent_name, :country_id, :country_name)
796
- end
797
-
798
- assert_dom_equal(
799
- %Q{<select id="post_origin" name="post[origin]"><optgroup label="&lt;Africa&gt;"><option value="&lt;sa&gt;">&lt;South Africa&gt;</option>\n<option value="so">Somalia</option></optgroup><optgroup label="Europe"><option value="dk" selected="selected">Denmark</option>\n<option value="ie">Ireland</option></optgroup></select>},
800
- output_buffer
801
- )
802
- end
803
-
804
- private
805
-
806
- def dummy_posts
807
- [ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
808
- Post.new("Babe went home", "Babe", "To a little house", "shh!"),
809
- Post.new("Cabe went home", "Cabe", "To a little house", "shh!") ]
810
- end
811
- end