eactionpack 2.1.2

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 (338) hide show
  1. data/CHANGELOG +7 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +469 -0
  4. data/RUNNING_UNIT_TESTS +24 -0
  5. data/Rakefile +146 -0
  6. data/install.rb +30 -0
  7. data/lib/action_controller.rb +79 -0
  8. data/lib/action_controller/assertions.rb +69 -0
  9. data/lib/action_controller/assertions/dom_assertions.rb +39 -0
  10. data/lib/action_controller/assertions/model_assertions.rb +20 -0
  11. data/lib/action_controller/assertions/response_assertions.rb +172 -0
  12. data/lib/action_controller/assertions/routing_assertions.rb +146 -0
  13. data/lib/action_controller/assertions/selector_assertions.rb +491 -0
  14. data/lib/action_controller/assertions/tag_assertions.rb +130 -0
  15. data/lib/action_controller/base.rb +1288 -0
  16. data/lib/action_controller/benchmarking.rb +94 -0
  17. data/lib/action_controller/caching.rb +72 -0
  18. data/lib/action_controller/caching/actions.rb +144 -0
  19. data/lib/action_controller/caching/fragments.rb +138 -0
  20. data/lib/action_controller/caching/pages.rb +154 -0
  21. data/lib/action_controller/caching/sql_cache.rb +18 -0
  22. data/lib/action_controller/caching/sweeping.rb +97 -0
  23. data/lib/action_controller/cgi_ext.rb +16 -0
  24. data/lib/action_controller/cgi_ext/cookie.rb +110 -0
  25. data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  26. data/lib/action_controller/cgi_ext/session.rb +73 -0
  27. data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  28. data/lib/action_controller/cgi_process.rb +223 -0
  29. data/lib/action_controller/components.rb +166 -0
  30. data/lib/action_controller/cookies.rb +96 -0
  31. data/lib/action_controller/dispatcher.rb +162 -0
  32. data/lib/action_controller/filters.rb +642 -0
  33. data/lib/action_controller/flash.rb +172 -0
  34. data/lib/action_controller/headers.rb +31 -0
  35. data/lib/action_controller/helpers.rb +221 -0
  36. data/lib/action_controller/http_authentication.rb +124 -0
  37. data/lib/action_controller/integration.rb +634 -0
  38. data/lib/action_controller/layout.rb +309 -0
  39. data/lib/action_controller/mime_responds.rb +173 -0
  40. data/lib/action_controller/mime_type.rb +186 -0
  41. data/lib/action_controller/mime_types.rb +20 -0
  42. data/lib/action_controller/polymorphic_routes.rb +191 -0
  43. data/lib/action_controller/record_identifier.rb +102 -0
  44. data/lib/action_controller/request.rb +764 -0
  45. data/lib/action_controller/request_forgery_protection.rb +140 -0
  46. data/lib/action_controller/request_profiler.rb +169 -0
  47. data/lib/action_controller/rescue.rb +258 -0
  48. data/lib/action_controller/resources.rb +572 -0
  49. data/lib/action_controller/response.rb +76 -0
  50. data/lib/action_controller/routing.rb +387 -0
  51. data/lib/action_controller/routing/builder.rb +203 -0
  52. data/lib/action_controller/routing/optimisations.rb +120 -0
  53. data/lib/action_controller/routing/recognition_optimisation.rb +162 -0
  54. data/lib/action_controller/routing/route.rb +240 -0
  55. data/lib/action_controller/routing/route_set.rb +436 -0
  56. data/lib/action_controller/routing/routing_ext.rb +46 -0
  57. data/lib/action_controller/routing/segments.rb +283 -0
  58. data/lib/action_controller/session/active_record_store.rb +340 -0
  59. data/lib/action_controller/session/cookie_store.rb +166 -0
  60. data/lib/action_controller/session/drb_server.rb +32 -0
  61. data/lib/action_controller/session/drb_store.rb +35 -0
  62. data/lib/action_controller/session/mem_cache_store.rb +98 -0
  63. data/lib/action_controller/session_management.rb +158 -0
  64. data/lib/action_controller/status_codes.rb +88 -0
  65. data/lib/action_controller/streaming.rb +155 -0
  66. data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  67. data/lib/action_controller/templates/rescues/_trace.erb +26 -0
  68. data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  69. data/lib/action_controller/templates/rescues/layout.erb +29 -0
  70. data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  71. data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  72. data/lib/action_controller/templates/rescues/template_error.erb +21 -0
  73. data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  74. data/lib/action_controller/test_case.rb +83 -0
  75. data/lib/action_controller/test_process.rb +526 -0
  76. data/lib/action_controller/url_rewriter.rb +142 -0
  77. data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  78. data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
  79. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  80. data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  81. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  82. data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  83. data/lib/action_controller/verification.rb +130 -0
  84. data/lib/action_pack.rb +24 -0
  85. data/lib/action_pack/version.rb +9 -0
  86. data/lib/action_view.rb +44 -0
  87. data/lib/action_view/base.rb +335 -0
  88. data/lib/action_view/helpers/active_record_helper.rb +276 -0
  89. data/lib/action_view/helpers/asset_tag_helper.rb +599 -0
  90. data/lib/action_view/helpers/atom_feed_helper.rb +143 -0
  91. data/lib/action_view/helpers/benchmark_helper.rb +33 -0
  92. data/lib/action_view/helpers/cache_helper.rb +40 -0
  93. data/lib/action_view/helpers/capture_helper.rb +161 -0
  94. data/lib/action_view/helpers/date_helper.rb +711 -0
  95. data/lib/action_view/helpers/debug_helper.rb +31 -0
  96. data/lib/action_view/helpers/form_helper.rb +767 -0
  97. data/lib/action_view/helpers/form_options_helper.rb +458 -0
  98. data/lib/action_view/helpers/form_tag_helper.rb +458 -0
  99. data/lib/action_view/helpers/javascript_helper.rb +148 -0
  100. data/lib/action_view/helpers/number_helper.rb +186 -0
  101. data/lib/action_view/helpers/record_identification_helper.rb +20 -0
  102. data/lib/action_view/helpers/record_tag_helper.rb +59 -0
  103. data/lib/action_view/helpers/sanitize_helper.rb +229 -0
  104. data/lib/action_view/helpers/tag_helper.rb +134 -0
  105. data/lib/action_view/helpers/text_helper.rb +507 -0
  106. data/lib/action_view/helpers/url_helper.rb +573 -0
  107. data/lib/action_view/inline_template.rb +20 -0
  108. data/lib/action_view/partial_template.rb +70 -0
  109. data/lib/action_view/partials.rb +158 -0
  110. data/lib/action_view/template.rb +125 -0
  111. data/lib/action_view/template_error.rb +110 -0
  112. data/lib/action_view/template_finder.rb +176 -0
  113. data/lib/action_view/template_handler.rb +34 -0
  114. data/lib/action_view/template_handlers/builder.rb +27 -0
  115. data/lib/action_view/template_handlers/compilable.rb +128 -0
  116. data/lib/action_view/template_handlers/erb.rb +56 -0
  117. data/lib/action_view/test_case.rb +58 -0
  118. data/lib/actionpack.rb +1 -0
  119. data/test/abstract_unit.rb +36 -0
  120. data/test/active_record_unit.rb +105 -0
  121. data/test/activerecord/active_record_store_test.rb +141 -0
  122. data/test/activerecord/render_partial_with_record_identification_test.rb +191 -0
  123. data/test/adv_attr_test.rb +20 -0
  124. data/test/controller/action_pack_assertions_test.rb +543 -0
  125. data/test/controller/addresses_render_test.rb +43 -0
  126. data/test/controller/assert_select_test.rb +331 -0
  127. data/test/controller/base_test.rb +219 -0
  128. data/test/controller/benchmark_test.rb +32 -0
  129. data/test/controller/caching_test.rb +581 -0
  130. data/test/controller/capture_test.rb +89 -0
  131. data/test/controller/cgi_test.rb +116 -0
  132. data/test/controller/components_test.rb +140 -0
  133. data/test/controller/content_type_test.rb +139 -0
  134. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  135. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  136. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  137. data/test/controller/cookie_test.rb +146 -0
  138. data/test/controller/custom_handler_test.rb +45 -0
  139. data/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
  140. data/test/controller/dispatcher_test.rb +105 -0
  141. data/test/controller/fake_controllers.rb +33 -0
  142. data/test/controller/fake_models.rb +11 -0
  143. data/test/controller/filter_params_test.rb +49 -0
  144. data/test/controller/filters_test.rb +881 -0
  145. data/test/controller/flash_test.rb +146 -0
  146. data/test/controller/header_test.rb +14 -0
  147. data/test/controller/helper_test.rb +210 -0
  148. data/test/controller/html-scanner/cdata_node_test.rb +15 -0
  149. data/test/controller/html-scanner/document_test.rb +148 -0
  150. data/test/controller/html-scanner/node_test.rb +89 -0
  151. data/test/controller/html-scanner/sanitizer_test.rb +269 -0
  152. data/test/controller/html-scanner/tag_node_test.rb +238 -0
  153. data/test/controller/html-scanner/text_node_test.rb +50 -0
  154. data/test/controller/html-scanner/tokenizer_test.rb +131 -0
  155. data/test/controller/http_authentication_test.rb +54 -0
  156. data/test/controller/integration_test.rb +252 -0
  157. data/test/controller/integration_upload_test.rb +43 -0
  158. data/test/controller/layout_test.rb +255 -0
  159. data/test/controller/mime_responds_test.rb +514 -0
  160. data/test/controller/mime_type_test.rb +84 -0
  161. data/test/controller/new_render_test.rb +843 -0
  162. data/test/controller/polymorphic_routes_test.rb +174 -0
  163. data/test/controller/record_identifier_test.rb +139 -0
  164. data/test/controller/redirect_test.rb +289 -0
  165. data/test/controller/render_test.rb +484 -0
  166. data/test/controller/request_forgery_protection_test.rb +305 -0
  167. data/test/controller/request_test.rb +928 -0
  168. data/test/controller/rescue_test.rb +517 -0
  169. data/test/controller/resources_test.rb +873 -0
  170. data/test/controller/routing_test.rb +2464 -0
  171. data/test/controller/selector_test.rb +628 -0
  172. data/test/controller/send_file_test.rb +138 -0
  173. data/test/controller/session/cookie_store_test.rb +258 -0
  174. data/test/controller/session/mem_cache_store_test.rb +181 -0
  175. data/test/controller/session_fixation_test.rb +89 -0
  176. data/test/controller/session_management_test.rb +178 -0
  177. data/test/controller/test_test.rb +695 -0
  178. data/test/controller/url_rewriter_test.rb +310 -0
  179. data/test/controller/verification_test.rb +270 -0
  180. data/test/controller/view_paths_test.rb +140 -0
  181. data/test/controller/webservice_test.rb +229 -0
  182. data/test/fixtures/addresses/list.erb +1 -0
  183. data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  184. data/test/fixtures/companies.yml +24 -0
  185. data/test/fixtures/company.rb +10 -0
  186. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  187. data/test/fixtures/content_type/render_default_for_js.js.erb +1 -0
  188. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  189. data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  190. data/test/fixtures/customers/_customer.html.erb +1 -0
  191. data/test/fixtures/db_definitions/sqlite.sql +49 -0
  192. data/test/fixtures/developer.rb +9 -0
  193. data/test/fixtures/developers.yml +21 -0
  194. data/test/fixtures/developers_projects.yml +13 -0
  195. data/test/fixtures/fun/games/hello_world.erb +1 -0
  196. data/test/fixtures/functional_caching/_partial.erb +3 -0
  197. data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  198. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  199. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  200. data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  201. data/test/fixtures/helpers/abc_helper.rb +5 -0
  202. data/test/fixtures/helpers/fun/games_helper.rb +3 -0
  203. data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  204. data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  205. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  206. data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  207. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  208. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  209. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  210. data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  211. data/test/fixtures/layouts/block_with_layout.erb +3 -0
  212. data/test/fixtures/layouts/builder.builder +3 -0
  213. data/test/fixtures/layouts/partial_with_layout.erb +3 -0
  214. data/test/fixtures/layouts/standard.erb +1 -0
  215. data/test/fixtures/layouts/talk_from_action.erb +2 -0
  216. data/test/fixtures/layouts/yield.erb +2 -0
  217. data/test/fixtures/mascot.rb +3 -0
  218. data/test/fixtures/mascots.yml +4 -0
  219. data/test/fixtures/mascots/_mascot.html.erb +1 -0
  220. data/test/fixtures/multipart/binary_file +0 -0
  221. data/test/fixtures/multipart/boundary_problem_file +10 -0
  222. data/test/fixtures/multipart/bracketed_param +5 -0
  223. data/test/fixtures/multipart/large_text_file +10 -0
  224. data/test/fixtures/multipart/mixed_files +0 -0
  225. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  226. data/test/fixtures/multipart/single_parameter +5 -0
  227. data/test/fixtures/multipart/text_file +10 -0
  228. data/test/fixtures/override/test/hello_world.erb +1 -0
  229. data/test/fixtures/override2/layouts/test/sub.erb +1 -0
  230. data/test/fixtures/post_test/layouts/post.html.erb +1 -0
  231. data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  232. data/test/fixtures/post_test/post/index.html.erb +1 -0
  233. data/test/fixtures/post_test/post/index.iphone.erb +1 -0
  234. data/test/fixtures/post_test/super_post/index.html.erb +1 -0
  235. data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  236. data/test/fixtures/project.rb +3 -0
  237. data/test/fixtures/projects.yml +7 -0
  238. data/test/fixtures/public/404.html +1 -0
  239. data/test/fixtures/public/500.html +1 -0
  240. data/test/fixtures/public/images/rails.png +0 -0
  241. data/test/fixtures/public/javascripts/application.js +1 -0
  242. data/test/fixtures/public/javascripts/bank.js +1 -0
  243. data/test/fixtures/public/javascripts/robber.js +1 -0
  244. data/test/fixtures/public/javascripts/version.1.0.js +1 -0
  245. data/test/fixtures/public/stylesheets/bank.css +1 -0
  246. data/test/fixtures/public/stylesheets/robber.css +1 -0
  247. data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  248. data/test/fixtures/replies.yml +15 -0
  249. data/test/fixtures/reply.rb +7 -0
  250. data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  251. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  252. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  253. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  254. data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  255. data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  256. data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  257. data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  258. data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  259. data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  260. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  261. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  262. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  263. data/test/fixtures/scope/test/modgreet.erb +1 -0
  264. data/test/fixtures/shared.html.erb +1 -0
  265. data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  266. data/test/fixtures/test/_customer.erb +1 -0
  267. data/test/fixtures/test/_customer_counter.erb +1 -0
  268. data/test/fixtures/test/_customer_greeting.erb +1 -0
  269. data/test/fixtures/test/_form.erb +1 -0
  270. data/test/fixtures/test/_hash_greeting.erb +1 -0
  271. data/test/fixtures/test/_hash_object.erb +2 -0
  272. data/test/fixtures/test/_hello.builder +1 -0
  273. data/test/fixtures/test/_labelling_form.erb +1 -0
  274. data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  275. data/test/fixtures/test/_partial.erb +1 -0
  276. data/test/fixtures/test/_partial.html.erb +1 -0
  277. data/test/fixtures/test/_partial.js.erb +1 -0
  278. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  279. data/test/fixtures/test/_partial_only.erb +1 -0
  280. data/test/fixtures/test/_person.erb +2 -0
  281. data/test/fixtures/test/_raise.html.erb +1 -0
  282. data/test/fixtures/test/action_talk_to_layout.erb +2 -0
  283. data/test/fixtures/test/block_content_for.erb +2 -0
  284. data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  285. data/test/fixtures/test/capturing.erb +4 -0
  286. data/test/fixtures/test/content_for.erb +2 -0
  287. data/test/fixtures/test/content_for_concatenated.erb +3 -0
  288. data/test/fixtures/test/content_for_with_parameter.erb +2 -0
  289. data/test/fixtures/test/delete_with_js.rjs +2 -0
  290. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  291. data/test/fixtures/test/enum_rjs_test.rjs +6 -0
  292. data/test/fixtures/test/erb_content_for.erb +2 -0
  293. data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  294. data/test/fixtures/test/formatted_xml_erb.builder +1 -0
  295. data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  296. data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  297. data/test/fixtures/test/greeting.erb +1 -0
  298. data/test/fixtures/test/greeting.js.rjs +1 -0
  299. data/test/fixtures/test/hello.builder +4 -0
  300. data/test/fixtures/test/hello_world.erb +1 -0
  301. data/test/fixtures/test/hello_world_container.builder +3 -0
  302. data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  303. data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  304. data/test/fixtures/test/hello_xml_world.builder +11 -0
  305. data/test/fixtures/test/list.erb +1 -0
  306. data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  307. data/test/fixtures/test/potential_conflicts.erb +4 -0
  308. data/test/fixtures/test/render_file_from_template.html.erb +1 -0
  309. data/test/fixtures/test/render_file_with_ivar.erb +1 -0
  310. data/test/fixtures/test/render_file_with_locals.erb +1 -0
  311. data/test/fixtures/test/render_to_string_test.erb +1 -0
  312. data/test/fixtures/test/update_element_with_capture.erb +9 -0
  313. data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  314. data/test/fixtures/topic.rb +3 -0
  315. data/test/fixtures/topics.yml +22 -0
  316. data/test/fixtures/topics/_topic.html.erb +1 -0
  317. data/test/template/active_record_helper_test.rb +268 -0
  318. data/test/template/asset_tag_helper_test.rb +514 -0
  319. data/test/template/atom_feed_helper_test.rb +179 -0
  320. data/test/template/benchmark_helper_test.rb +60 -0
  321. data/test/template/date_helper_test.rb +1791 -0
  322. data/test/template/deprecated_erb_variable_test.rb +9 -0
  323. data/test/template/erb_util_test.rb +24 -0
  324. data/test/template/form_helper_test.rb +885 -0
  325. data/test/template/form_options_helper_test.rb +1333 -0
  326. data/test/template/form_tag_helper_test.rb +272 -0
  327. data/test/template/javascript_helper_test.rb +73 -0
  328. data/test/template/number_helper_test.rb +97 -0
  329. data/test/template/record_tag_helper_test.rb +54 -0
  330. data/test/template/sanitize_helper_test.rb +48 -0
  331. data/test/template/tag_helper_test.rb +77 -0
  332. data/test/template/template_finder_test.rb +73 -0
  333. data/test/template/template_object_test.rb +95 -0
  334. data/test/template/test_test.rb +56 -0
  335. data/test/template/text_helper_test.rb +367 -0
  336. data/test/template/url_helper_test.rb +544 -0
  337. data/test/testing_sandbox.rb +15 -0
  338. metadata +469 -0
@@ -0,0 +1,1333 @@
1
+ require 'abstract_unit'
2
+
3
+ TZInfo::Timezone.cattr_reader :loaded_zones
4
+
5
+ uses_mocha "FormOptionsHelperTest" do
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
+ @posts = [
28
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
29
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
30
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
31
+ ]
32
+
33
+ assert_dom_equal(
34
+ "<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>",
35
+ options_from_collection_for_select(@posts, "author_name", "title")
36
+ )
37
+ end
38
+
39
+
40
+ def test_collection_options_with_preselected_value
41
+ @posts = [
42
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
43
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
44
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
45
+ ]
46
+
47
+ assert_dom_equal(
48
+ "<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>",
49
+ options_from_collection_for_select(@posts, "author_name", "title", "Babe")
50
+ )
51
+ end
52
+
53
+ def test_collection_options_with_preselected_value_array
54
+ @posts = [
55
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
56
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
57
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
58
+ ]
59
+
60
+ assert_dom_equal(
61
+ "<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>",
62
+ options_from_collection_for_select(@posts, "author_name", "title", [ "Babe", "Cabe" ])
63
+ )
64
+ end
65
+
66
+ def test_array_options_for_select
67
+ assert_dom_equal(
68
+ "<option value=\"&lt;Denmark&gt;\">&lt;Denmark&gt;</option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
69
+ options_for_select([ "<Denmark>", "USA", "Sweden" ])
70
+ )
71
+ end
72
+
73
+ def test_array_options_for_select_with_selection
74
+ assert_dom_equal(
75
+ "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>",
76
+ options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
77
+ )
78
+ end
79
+
80
+ def test_array_options_for_select_with_selection_array
81
+ assert_dom_equal(
82
+ "<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>",
83
+ options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
84
+ )
85
+ end
86
+
87
+ def test_array_options_for_string_include_in_other_string_bug_fix
88
+ assert_dom_equal(
89
+ "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
90
+ options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
91
+ )
92
+ assert_dom_equal(
93
+ "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
94
+ options_for_select([ "ruby", "rubyonrails" ], "ruby")
95
+ )
96
+ assert_dom_equal(
97
+ %(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
98
+ options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
99
+ )
100
+ end
101
+
102
+ def test_hash_options_for_select
103
+ assert_dom_equal(
104
+ "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
105
+ options_for_select("$" => "Dollar", "<DKR>" => "<Kroner>").split("\n").sort.join("\n")
106
+ )
107
+ assert_dom_equal(
108
+ "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
109
+ options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar").split("\n").sort.join("\n")
110
+ )
111
+ assert_dom_equal(
112
+ "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
113
+ options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]).split("\n").sort.join("\n")
114
+ )
115
+ end
116
+
117
+ def test_ducktyped_options_for_select
118
+ quack = Struct.new(:first, :last)
119
+ assert_dom_equal(
120
+ "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
121
+ options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
122
+ )
123
+ assert_dom_equal(
124
+ "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
125
+ options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
126
+ )
127
+ assert_dom_equal(
128
+ "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
129
+ options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
130
+ )
131
+ end
132
+
133
+ def test_option_groups_from_collection_for_select
134
+ @continents = [
135
+ Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
136
+ Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
137
+ ]
138
+
139
+ assert_dom_equal(
140
+ "<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>",
141
+ option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk")
142
+ )
143
+ end
144
+
145
+ def test_time_zone_options_no_parms
146
+ opts = time_zone_options_for_select
147
+ assert_dom_equal "<option value=\"A\">A</option>\n" +
148
+ "<option value=\"B\">B</option>\n" +
149
+ "<option value=\"C\">C</option>\n" +
150
+ "<option value=\"D\">D</option>\n" +
151
+ "<option value=\"E\">E</option>",
152
+ opts
153
+ end
154
+
155
+ def test_time_zone_options_with_selected
156
+ opts = time_zone_options_for_select( "D" )
157
+ assert_dom_equal "<option value=\"A\">A</option>\n" +
158
+ "<option value=\"B\">B</option>\n" +
159
+ "<option value=\"C\">C</option>\n" +
160
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
161
+ "<option value=\"E\">E</option>",
162
+ opts
163
+ end
164
+
165
+ def test_time_zone_options_with_unknown_selected
166
+ opts = time_zone_options_for_select( "K" )
167
+ assert_dom_equal "<option value=\"A\">A</option>\n" +
168
+ "<option value=\"B\">B</option>\n" +
169
+ "<option value=\"C\">C</option>\n" +
170
+ "<option value=\"D\">D</option>\n" +
171
+ "<option value=\"E\">E</option>",
172
+ opts
173
+ end
174
+
175
+ def test_time_zone_options_with_priority_zones
176
+ zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
177
+ opts = time_zone_options_for_select( nil, zones )
178
+ assert_dom_equal "<option value=\"B\">B</option>\n" +
179
+ "<option value=\"E\">E</option>" +
180
+ "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
181
+ "<option value=\"A\">A</option>\n" +
182
+ "<option value=\"C\">C</option>\n" +
183
+ "<option value=\"D\">D</option>",
184
+ opts
185
+ end
186
+
187
+ def test_time_zone_options_with_selected_priority_zones
188
+ zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
189
+ opts = time_zone_options_for_select( "E", zones )
190
+ assert_dom_equal "<option value=\"B\">B</option>\n" +
191
+ "<option value=\"E\" selected=\"selected\">E</option>" +
192
+ "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
193
+ "<option value=\"A\">A</option>\n" +
194
+ "<option value=\"C\">C</option>\n" +
195
+ "<option value=\"D\">D</option>",
196
+ opts
197
+ end
198
+
199
+ def test_time_zone_options_with_unselected_priority_zones
200
+ zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
201
+ opts = time_zone_options_for_select( "C", zones )
202
+ assert_dom_equal "<option value=\"B\">B</option>\n" +
203
+ "<option value=\"E\">E</option>" +
204
+ "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
205
+ "<option value=\"A\">A</option>\n" +
206
+ "<option value=\"C\" selected=\"selected\">C</option>\n" +
207
+ "<option value=\"D\">D</option>",
208
+ opts
209
+ end
210
+
211
+ def test_select
212
+ @post = Post.new
213
+ @post.category = "<mus>"
214
+ assert_dom_equal(
215
+ "<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>",
216
+ select("post", "category", %w( abe <mus> hest))
217
+ )
218
+ end
219
+
220
+ def test_select_under_fields_for
221
+ @post = Post.new
222
+ @post.category = "<mus>"
223
+
224
+ _erbout = ''
225
+
226
+ fields_for :post, @post do |f|
227
+ _erbout.concat f.select(:category, %w( abe <mus> hest))
228
+ end
229
+
230
+ assert_dom_equal(
231
+ "<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>",
232
+ _erbout
233
+ )
234
+ end
235
+
236
+ def test_select_with_blank
237
+ @post = Post.new
238
+ @post.category = "<mus>"
239
+ assert_dom_equal(
240
+ "<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>",
241
+ select("post", "category", %w( abe <mus> hest), :include_blank => true)
242
+ )
243
+ end
244
+
245
+ def test_select_with_blank_as_string
246
+ @post = Post.new
247
+ @post.category = "<mus>"
248
+ assert_dom_equal(
249
+ "<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>",
250
+ select("post", "category", %w( abe <mus> hest), :include_blank => 'None')
251
+ )
252
+ end
253
+
254
+ def test_select_with_default_prompt
255
+ @post = Post.new
256
+ @post.category = ""
257
+ assert_dom_equal(
258
+ "<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>",
259
+ select("post", "category", %w( abe <mus> hest), :prompt => true)
260
+ )
261
+ end
262
+
263
+ def test_select_no_prompt_when_select_has_value
264
+ @post = Post.new
265
+ @post.category = "<mus>"
266
+ assert_dom_equal(
267
+ "<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>",
268
+ select("post", "category", %w( abe <mus> hest), :prompt => true)
269
+ )
270
+ end
271
+
272
+ def test_select_with_given_prompt
273
+ @post = Post.new
274
+ @post.category = ""
275
+ assert_dom_equal(
276
+ "<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>",
277
+ select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
278
+ )
279
+ end
280
+
281
+ def test_select_with_prompt_and_blank
282
+ @post = Post.new
283
+ @post.category = ""
284
+ assert_dom_equal(
285
+ "<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>",
286
+ select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
287
+ )
288
+ end
289
+
290
+ def test_select_with_selected_value
291
+ @post = Post.new
292
+ @post.category = "<mus>"
293
+ assert_dom_equal(
294
+ "<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>",
295
+ select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
296
+ )
297
+ end
298
+
299
+ def test_select_with_index_option
300
+ @album = Album.new
301
+ @album.id = 1
302
+
303
+ 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>"
304
+
305
+ assert_dom_equal(
306
+ expected,
307
+ select("album[]", "genre", %w[rap rock country], {}, { :index => nil })
308
+ )
309
+ end
310
+
311
+ def test_select_with_selected_nil
312
+ @post = Post.new
313
+ @post.category = "<mus>"
314
+ assert_dom_equal(
315
+ "<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>",
316
+ select("post", "category", %w( abe <mus> hest ), :selected => nil)
317
+ )
318
+ end
319
+
320
+ def test_collection_select
321
+ @posts = [
322
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
323
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
324
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
325
+ ]
326
+
327
+ @post = Post.new
328
+ @post.author_name = "Babe"
329
+
330
+ assert_dom_equal(
331
+ "<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>",
332
+ collection_select("post", "author_name", @posts, "author_name", "author_name")
333
+ )
334
+ end
335
+
336
+ def test_collection_select_under_fields_for
337
+ @posts = [
338
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
339
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
340
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
341
+ ]
342
+
343
+ @post = Post.new
344
+ @post.author_name = "Babe"
345
+
346
+ _erbout = ''
347
+
348
+ fields_for :post, @post do |f|
349
+ _erbout.concat f.collection_select(:author_name, @posts, :author_name, :author_name)
350
+ end
351
+
352
+ assert_dom_equal(
353
+ "<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>",
354
+ _erbout
355
+ )
356
+ end
357
+
358
+ def test_collection_select_with_blank_and_style
359
+ @posts = [
360
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
361
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
362
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
363
+ ]
364
+
365
+ @post = Post.new
366
+ @post.author_name = "Babe"
367
+
368
+ assert_dom_equal(
369
+ "<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>",
370
+ collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
371
+ )
372
+ end
373
+
374
+ def test_collection_select_with_blank_as_string_and_style
375
+ @posts = [
376
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
377
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
378
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
379
+ ]
380
+
381
+ @post = Post.new
382
+ @post.author_name = "Babe"
383
+
384
+ assert_dom_equal(
385
+ "<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>",
386
+ collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => 'No Selection' }, "style" => "width: 200px")
387
+ )
388
+ end
389
+
390
+ def test_collection_select_with_multiple_option_appends_array_brackets
391
+ @posts = [
392
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
393
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
394
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
395
+ ]
396
+
397
+ @post = Post.new
398
+ @post.author_name = "Babe"
399
+
400
+ 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>"
401
+
402
+ # Should suffix default name with [].
403
+ assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
404
+
405
+ # Shouldn't suffix custom name with [].
406
+ assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
407
+ end
408
+
409
+ def test_country_select
410
+ @post = Post.new
411
+ @post.origin = "Denmark"
412
+ expected_select = <<-COUNTRIES
413
+ <select id="post_origin" name="post[origin]"><option value="Afghanistan">Afghanistan</option>
414
+ <option value="Aland Islands">Aland Islands</option>
415
+ <option value="Albania">Albania</option>
416
+ <option value="Algeria">Algeria</option>
417
+ <option value="American Samoa">American Samoa</option>
418
+ <option value="Andorra">Andorra</option>
419
+ <option value="Angola">Angola</option>
420
+ <option value="Anguilla">Anguilla</option>
421
+ <option value="Antarctica">Antarctica</option>
422
+ <option value="Antigua And Barbuda">Antigua And Barbuda</option>
423
+ <option value="Argentina">Argentina</option>
424
+ <option value="Armenia">Armenia</option>
425
+ <option value="Aruba">Aruba</option>
426
+ <option value="Australia">Australia</option>
427
+ <option value="Austria">Austria</option>
428
+ <option value="Azerbaijan">Azerbaijan</option>
429
+ <option value="Bahamas">Bahamas</option>
430
+ <option value="Bahrain">Bahrain</option>
431
+ <option value="Bangladesh">Bangladesh</option>
432
+ <option value="Barbados">Barbados</option>
433
+ <option value="Belarus">Belarus</option>
434
+ <option value="Belgium">Belgium</option>
435
+ <option value="Belize">Belize</option>
436
+ <option value="Benin">Benin</option>
437
+ <option value="Bermuda">Bermuda</option>
438
+ <option value="Bhutan">Bhutan</option>
439
+ <option value="Bolivia">Bolivia</option>
440
+ <option value="Bosnia and Herzegowina">Bosnia and Herzegowina</option>
441
+ <option value="Botswana">Botswana</option>
442
+ <option value="Bouvet Island">Bouvet Island</option>
443
+ <option value="Brazil">Brazil</option>
444
+ <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
445
+ <option value="Brunei Darussalam">Brunei Darussalam</option>
446
+ <option value="Bulgaria">Bulgaria</option>
447
+ <option value="Burkina Faso">Burkina Faso</option>
448
+ <option value="Burundi">Burundi</option>
449
+ <option value="Cambodia">Cambodia</option>
450
+ <option value="Cameroon">Cameroon</option>
451
+ <option value="Canada">Canada</option>
452
+ <option value="Cape Verde">Cape Verde</option>
453
+ <option value="Cayman Islands">Cayman Islands</option>
454
+ <option value="Central African Republic">Central African Republic</option>
455
+ <option value="Chad">Chad</option>
456
+ <option value="Chile">Chile</option>
457
+ <option value="China">China</option>
458
+ <option value="Christmas Island">Christmas Island</option>
459
+ <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
460
+ <option value="Colombia">Colombia</option>
461
+ <option value="Comoros">Comoros</option>
462
+ <option value="Congo">Congo</option>
463
+ <option value="Congo, the Democratic Republic of the">Congo, the Democratic Republic of the</option>
464
+ <option value="Cook Islands">Cook Islands</option>
465
+ <option value="Costa Rica">Costa Rica</option>
466
+ <option value="Cote d'Ivoire">Cote d'Ivoire</option>
467
+ <option value="Croatia">Croatia</option>
468
+ <option value="Cuba">Cuba</option>
469
+ <option value="Cyprus">Cyprus</option>
470
+ <option value="Czech Republic">Czech Republic</option>
471
+ <option selected="selected" value="Denmark">Denmark</option>
472
+ <option value="Djibouti">Djibouti</option>
473
+ <option value="Dominica">Dominica</option>
474
+ <option value="Dominican Republic">Dominican Republic</option>
475
+ <option value="Ecuador">Ecuador</option>
476
+ <option value="Egypt">Egypt</option>
477
+ <option value="El Salvador">El Salvador</option>
478
+ <option value="Equatorial Guinea">Equatorial Guinea</option>
479
+ <option value="Eritrea">Eritrea</option>
480
+ <option value="Estonia">Estonia</option>
481
+ <option value="Ethiopia">Ethiopia</option>
482
+ <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
483
+ <option value="Faroe Islands">Faroe Islands</option>
484
+ <option value="Fiji">Fiji</option>
485
+ <option value="Finland">Finland</option>
486
+ <option value="France">France</option>
487
+ <option value="French Guiana">French Guiana</option>
488
+ <option value="French Polynesia">French Polynesia</option>
489
+ <option value="French Southern Territories">French Southern Territories</option>
490
+ <option value="Gabon">Gabon</option>
491
+ <option value="Gambia">Gambia</option>
492
+ <option value="Georgia">Georgia</option>
493
+ <option value="Germany">Germany</option>
494
+ <option value="Ghana">Ghana</option>
495
+ <option value="Gibraltar">Gibraltar</option>
496
+ <option value="Greece">Greece</option>
497
+ <option value="Greenland">Greenland</option>
498
+ <option value="Grenada">Grenada</option>
499
+ <option value="Guadeloupe">Guadeloupe</option>
500
+ <option value="Guam">Guam</option>
501
+ <option value="Guatemala">Guatemala</option>
502
+ <option value="Guernsey">Guernsey</option>
503
+ <option value="Guinea">Guinea</option>
504
+ <option value="Guinea-Bissau">Guinea-Bissau</option>
505
+ <option value="Guyana">Guyana</option>
506
+ <option value="Haiti">Haiti</option>
507
+ <option value="Heard and McDonald Islands">Heard and McDonald Islands</option>
508
+ <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
509
+ <option value="Honduras">Honduras</option>
510
+ <option value="Hong Kong">Hong Kong</option>
511
+ <option value="Hungary">Hungary</option>
512
+ <option value="Iceland">Iceland</option>
513
+ <option value="India">India</option>
514
+ <option value="Indonesia">Indonesia</option>
515
+ <option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
516
+ <option value="Iraq">Iraq</option>
517
+ <option value="Ireland">Ireland</option>
518
+ <option value="Isle of Man">Isle of Man</option>
519
+ <option value="Israel">Israel</option>
520
+ <option value="Italy">Italy</option>
521
+ <option value="Jamaica">Jamaica</option>
522
+ <option value="Japan">Japan</option>
523
+ <option value="Jersey">Jersey</option>
524
+ <option value="Jordan">Jordan</option>
525
+ <option value="Kazakhstan">Kazakhstan</option>
526
+ <option value="Kenya">Kenya</option>
527
+ <option value="Kiribati">Kiribati</option>
528
+ <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
529
+ <option value="Korea, Republic of">Korea, Republic of</option>
530
+ <option value="Kuwait">Kuwait</option>
531
+ <option value="Kyrgyzstan">Kyrgyzstan</option>
532
+ <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
533
+ <option value="Latvia">Latvia</option>
534
+ <option value="Lebanon">Lebanon</option>
535
+ <option value="Lesotho">Lesotho</option>
536
+ <option value="Liberia">Liberia</option>
537
+ <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
538
+ <option value="Liechtenstein">Liechtenstein</option>
539
+ <option value="Lithuania">Lithuania</option>
540
+ <option value="Luxembourg">Luxembourg</option>
541
+ <option value="Macao">Macao</option>
542
+ <option value="Macedonia, The Former Yugoslav Republic Of">Macedonia, The Former Yugoslav Republic Of</option>
543
+ <option value="Madagascar">Madagascar</option>
544
+ <option value="Malawi">Malawi</option>
545
+ <option value="Malaysia">Malaysia</option>
546
+ <option value="Maldives">Maldives</option>
547
+ <option value="Mali">Mali</option>
548
+ <option value="Malta">Malta</option>
549
+ <option value="Marshall Islands">Marshall Islands</option>
550
+ <option value="Martinique">Martinique</option>
551
+ <option value="Mauritania">Mauritania</option>
552
+ <option value="Mauritius">Mauritius</option>
553
+ <option value="Mayotte">Mayotte</option>
554
+ <option value="Mexico">Mexico</option>
555
+ <option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
556
+ <option value="Moldova, Republic of">Moldova, Republic of</option>
557
+ <option value="Monaco">Monaco</option>
558
+ <option value="Mongolia">Mongolia</option>
559
+ <option value="Montenegro">Montenegro</option>
560
+ <option value="Montserrat">Montserrat</option>
561
+ <option value="Morocco">Morocco</option>
562
+ <option value="Mozambique">Mozambique</option>
563
+ <option value="Myanmar">Myanmar</option>
564
+ <option value="Namibia">Namibia</option>
565
+ <option value="Nauru">Nauru</option>
566
+ <option value="Nepal">Nepal</option>
567
+ <option value="Netherlands">Netherlands</option>
568
+ <option value="Netherlands Antilles">Netherlands Antilles</option>
569
+ <option value="New Caledonia">New Caledonia</option>
570
+ <option value="New Zealand">New Zealand</option>
571
+ <option value="Nicaragua">Nicaragua</option>
572
+ <option value="Niger">Niger</option>
573
+ <option value="Nigeria">Nigeria</option>
574
+ <option value="Niue">Niue</option>
575
+ <option value="Norfolk Island">Norfolk Island</option>
576
+ <option value="Northern Mariana Islands">Northern Mariana Islands</option>
577
+ <option value="Norway">Norway</option>
578
+ <option value="Oman">Oman</option>
579
+ <option value="Pakistan">Pakistan</option>
580
+ <option value="Palau">Palau</option>
581
+ <option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
582
+ <option value="Panama">Panama</option>
583
+ <option value="Papua New Guinea">Papua New Guinea</option>
584
+ <option value="Paraguay">Paraguay</option>
585
+ <option value="Peru">Peru</option>
586
+ <option value="Philippines">Philippines</option>
587
+ <option value="Pitcairn">Pitcairn</option>
588
+ <option value="Poland">Poland</option>
589
+ <option value="Portugal">Portugal</option>
590
+ <option value="Puerto Rico">Puerto Rico</option>
591
+ <option value="Qatar">Qatar</option>
592
+ <option value="Reunion">Reunion</option>
593
+ <option value="Romania">Romania</option>
594
+ <option value="Russian Federation">Russian Federation</option>
595
+ <option value="Rwanda">Rwanda</option>
596
+ <option value="Saint Barthelemy">Saint Barthelemy</option>
597
+ <option value="Saint Helena">Saint Helena</option>
598
+ <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
599
+ <option value="Saint Lucia">Saint Lucia</option>
600
+ <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
601
+ <option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
602
+ <option value="Samoa">Samoa</option>
603
+ <option value="San Marino">San Marino</option>
604
+ <option value="Sao Tome and Principe">Sao Tome and Principe</option>
605
+ <option value="Saudi Arabia">Saudi Arabia</option>
606
+ <option value="Senegal">Senegal</option>
607
+ <option value="Serbia">Serbia</option>
608
+ <option value="Seychelles">Seychelles</option>
609
+ <option value="Sierra Leone">Sierra Leone</option>
610
+ <option value="Singapore">Singapore</option>
611
+ <option value="Slovakia">Slovakia</option>
612
+ <option value="Slovenia">Slovenia</option>
613
+ <option value="Solomon Islands">Solomon Islands</option>
614
+ <option value="Somalia">Somalia</option>
615
+ <option value="South Africa">South Africa</option>
616
+ <option value="South Georgia and the South Sandwich Islands">South Georgia and the South Sandwich Islands</option>
617
+ <option value="Spain">Spain</option>
618
+ <option value="Sri Lanka">Sri Lanka</option>
619
+ <option value="Sudan">Sudan</option>
620
+ <option value="Suriname">Suriname</option>
621
+ <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
622
+ <option value="Swaziland">Swaziland</option>
623
+ <option value="Sweden">Sweden</option>
624
+ <option value="Switzerland">Switzerland</option>
625
+ <option value="Syrian Arab Republic">Syrian Arab Republic</option>
626
+ <option value="Taiwan, Province of China">Taiwan, Province of China</option>
627
+ <option value="Tajikistan">Tajikistan</option>
628
+ <option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
629
+ <option value="Thailand">Thailand</option>
630
+ <option value="Timor-Leste">Timor-Leste</option>
631
+ <option value="Togo">Togo</option>
632
+ <option value="Tokelau">Tokelau</option>
633
+ <option value="Tonga">Tonga</option>
634
+ <option value="Trinidad and Tobago">Trinidad and Tobago</option>
635
+ <option value="Tunisia">Tunisia</option>
636
+ <option value="Turkey">Turkey</option>
637
+ <option value="Turkmenistan">Turkmenistan</option>
638
+ <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
639
+ <option value="Tuvalu">Tuvalu</option>
640
+ <option value="Uganda">Uganda</option>
641
+ <option value="Ukraine">Ukraine</option>
642
+ <option value="United Arab Emirates">United Arab Emirates</option>
643
+ <option value="United Kingdom">United Kingdom</option>
644
+ <option value="United States">United States</option>
645
+ <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
646
+ <option value="Uruguay">Uruguay</option>
647
+ <option value="Uzbekistan">Uzbekistan</option>
648
+ <option value="Vanuatu">Vanuatu</option>
649
+ <option value="Venezuela">Venezuela</option>
650
+ <option value="Viet Nam">Viet Nam</option>
651
+ <option value="Virgin Islands, British">Virgin Islands, British</option>
652
+ <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
653
+ <option value="Wallis and Futuna">Wallis and Futuna</option>
654
+ <option value="Western Sahara">Western Sahara</option>
655
+ <option value="Yemen">Yemen</option>
656
+ <option value="Zambia">Zambia</option>
657
+ <option value="Zimbabwe">Zimbabwe</option></select>
658
+ COUNTRIES
659
+ assert_deprecated 'list-of-countries' do
660
+ assert_dom_equal(expected_select[0..-2], country_select("post", "origin"))
661
+ end
662
+ end
663
+
664
+ def test_country_select_with_priority_countries
665
+ @post = Post.new
666
+ @post.origin = "Denmark"
667
+ expected_select = <<-COUNTRIES
668
+ <select id="post_origin" name="post[origin]"><option value="New Zealand">New Zealand</option>
669
+ <option value="Nicaragua">Nicaragua</option><option value="" disabled="disabled">-------------</option>
670
+ <option value="Afghanistan">Afghanistan</option>
671
+ <option value="Aland Islands">Aland Islands</option>
672
+ <option value="Albania">Albania</option>
673
+ <option value="Algeria">Algeria</option>
674
+ <option value="American Samoa">American Samoa</option>
675
+ <option value="Andorra">Andorra</option>
676
+ <option value="Angola">Angola</option>
677
+ <option value="Anguilla">Anguilla</option>
678
+ <option value="Antarctica">Antarctica</option>
679
+ <option value="Antigua And Barbuda">Antigua And Barbuda</option>
680
+ <option value="Argentina">Argentina</option>
681
+ <option value="Armenia">Armenia</option>
682
+ <option value="Aruba">Aruba</option>
683
+ <option value="Australia">Australia</option>
684
+ <option value="Austria">Austria</option>
685
+ <option value="Azerbaijan">Azerbaijan</option>
686
+ <option value="Bahamas">Bahamas</option>
687
+ <option value="Bahrain">Bahrain</option>
688
+ <option value="Bangladesh">Bangladesh</option>
689
+ <option value="Barbados">Barbados</option>
690
+ <option value="Belarus">Belarus</option>
691
+ <option value="Belgium">Belgium</option>
692
+ <option value="Belize">Belize</option>
693
+ <option value="Benin">Benin</option>
694
+ <option value="Bermuda">Bermuda</option>
695
+ <option value="Bhutan">Bhutan</option>
696
+ <option value="Bolivia">Bolivia</option>
697
+ <option value="Bosnia and Herzegowina">Bosnia and Herzegowina</option>
698
+ <option value="Botswana">Botswana</option>
699
+ <option value="Bouvet Island">Bouvet Island</option>
700
+ <option value="Brazil">Brazil</option>
701
+ <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
702
+ <option value="Brunei Darussalam">Brunei Darussalam</option>
703
+ <option value="Bulgaria">Bulgaria</option>
704
+ <option value="Burkina Faso">Burkina Faso</option>
705
+ <option value="Burundi">Burundi</option>
706
+ <option value="Cambodia">Cambodia</option>
707
+ <option value="Cameroon">Cameroon</option>
708
+ <option value="Canada">Canada</option>
709
+ <option value="Cape Verde">Cape Verde</option>
710
+ <option value="Cayman Islands">Cayman Islands</option>
711
+ <option value="Central African Republic">Central African Republic</option>
712
+ <option value="Chad">Chad</option>
713
+ <option value="Chile">Chile</option>
714
+ <option value="China">China</option>
715
+ <option value="Christmas Island">Christmas Island</option>
716
+ <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
717
+ <option value="Colombia">Colombia</option>
718
+ <option value="Comoros">Comoros</option>
719
+ <option value="Congo">Congo</option>
720
+ <option value="Congo, the Democratic Republic of the">Congo, the Democratic Republic of the</option>
721
+ <option value="Cook Islands">Cook Islands</option>
722
+ <option value="Costa Rica">Costa Rica</option>
723
+ <option value="Cote d'Ivoire">Cote d'Ivoire</option>
724
+ <option value="Croatia">Croatia</option>
725
+ <option value="Cuba">Cuba</option>
726
+ <option value="Cyprus">Cyprus</option>
727
+ <option value="Czech Republic">Czech Republic</option>
728
+ <option selected="selected" value="Denmark">Denmark</option>
729
+ <option value="Djibouti">Djibouti</option>
730
+ <option value="Dominica">Dominica</option>
731
+ <option value="Dominican Republic">Dominican Republic</option>
732
+ <option value="Ecuador">Ecuador</option>
733
+ <option value="Egypt">Egypt</option>
734
+ <option value="El Salvador">El Salvador</option>
735
+ <option value="Equatorial Guinea">Equatorial Guinea</option>
736
+ <option value="Eritrea">Eritrea</option>
737
+ <option value="Estonia">Estonia</option>
738
+ <option value="Ethiopia">Ethiopia</option>
739
+ <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
740
+ <option value="Faroe Islands">Faroe Islands</option>
741
+ <option value="Fiji">Fiji</option>
742
+ <option value="Finland">Finland</option>
743
+ <option value="France">France</option>
744
+ <option value="French Guiana">French Guiana</option>
745
+ <option value="French Polynesia">French Polynesia</option>
746
+ <option value="French Southern Territories">French Southern Territories</option>
747
+ <option value="Gabon">Gabon</option>
748
+ <option value="Gambia">Gambia</option>
749
+ <option value="Georgia">Georgia</option>
750
+ <option value="Germany">Germany</option>
751
+ <option value="Ghana">Ghana</option>
752
+ <option value="Gibraltar">Gibraltar</option>
753
+ <option value="Greece">Greece</option>
754
+ <option value="Greenland">Greenland</option>
755
+ <option value="Grenada">Grenada</option>
756
+ <option value="Guadeloupe">Guadeloupe</option>
757
+ <option value="Guam">Guam</option>
758
+ <option value="Guatemala">Guatemala</option>
759
+ <option value="Guernsey">Guernsey</option>
760
+ <option value="Guinea">Guinea</option>
761
+ <option value="Guinea-Bissau">Guinea-Bissau</option>
762
+ <option value="Guyana">Guyana</option>
763
+ <option value="Haiti">Haiti</option>
764
+ <option value="Heard and McDonald Islands">Heard and McDonald Islands</option>
765
+ <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
766
+ <option value="Honduras">Honduras</option>
767
+ <option value="Hong Kong">Hong Kong</option>
768
+ <option value="Hungary">Hungary</option>
769
+ <option value="Iceland">Iceland</option>
770
+ <option value="India">India</option>
771
+ <option value="Indonesia">Indonesia</option>
772
+ <option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
773
+ <option value="Iraq">Iraq</option>
774
+ <option value="Ireland">Ireland</option>
775
+ <option value="Isle of Man">Isle of Man</option>
776
+ <option value="Israel">Israel</option>
777
+ <option value="Italy">Italy</option>
778
+ <option value="Jamaica">Jamaica</option>
779
+ <option value="Japan">Japan</option>
780
+ <option value="Jersey">Jersey</option>
781
+ <option value="Jordan">Jordan</option>
782
+ <option value="Kazakhstan">Kazakhstan</option>
783
+ <option value="Kenya">Kenya</option>
784
+ <option value="Kiribati">Kiribati</option>
785
+ <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
786
+ <option value="Korea, Republic of">Korea, Republic of</option>
787
+ <option value="Kuwait">Kuwait</option>
788
+ <option value="Kyrgyzstan">Kyrgyzstan</option>
789
+ <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
790
+ <option value="Latvia">Latvia</option>
791
+ <option value="Lebanon">Lebanon</option>
792
+ <option value="Lesotho">Lesotho</option>
793
+ <option value="Liberia">Liberia</option>
794
+ <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
795
+ <option value="Liechtenstein">Liechtenstein</option>
796
+ <option value="Lithuania">Lithuania</option>
797
+ <option value="Luxembourg">Luxembourg</option>
798
+ <option value="Macao">Macao</option>
799
+ <option value="Macedonia, The Former Yugoslav Republic Of">Macedonia, The Former Yugoslav Republic Of</option>
800
+ <option value="Madagascar">Madagascar</option>
801
+ <option value="Malawi">Malawi</option>
802
+ <option value="Malaysia">Malaysia</option>
803
+ <option value="Maldives">Maldives</option>
804
+ <option value="Mali">Mali</option>
805
+ <option value="Malta">Malta</option>
806
+ <option value="Marshall Islands">Marshall Islands</option>
807
+ <option value="Martinique">Martinique</option>
808
+ <option value="Mauritania">Mauritania</option>
809
+ <option value="Mauritius">Mauritius</option>
810
+ <option value="Mayotte">Mayotte</option>
811
+ <option value="Mexico">Mexico</option>
812
+ <option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
813
+ <option value="Moldova, Republic of">Moldova, Republic of</option>
814
+ <option value="Monaco">Monaco</option>
815
+ <option value="Mongolia">Mongolia</option>
816
+ <option value="Montenegro">Montenegro</option>
817
+ <option value="Montserrat">Montserrat</option>
818
+ <option value="Morocco">Morocco</option>
819
+ <option value="Mozambique">Mozambique</option>
820
+ <option value="Myanmar">Myanmar</option>
821
+ <option value="Namibia">Namibia</option>
822
+ <option value="Nauru">Nauru</option>
823
+ <option value="Nepal">Nepal</option>
824
+ <option value="Netherlands">Netherlands</option>
825
+ <option value="Netherlands Antilles">Netherlands Antilles</option>
826
+ <option value="New Caledonia">New Caledonia</option>
827
+ <option value="New Zealand">New Zealand</option>
828
+ <option value="Nicaragua">Nicaragua</option>
829
+ <option value="Niger">Niger</option>
830
+ <option value="Nigeria">Nigeria</option>
831
+ <option value="Niue">Niue</option>
832
+ <option value="Norfolk Island">Norfolk Island</option>
833
+ <option value="Northern Mariana Islands">Northern Mariana Islands</option>
834
+ <option value="Norway">Norway</option>
835
+ <option value="Oman">Oman</option>
836
+ <option value="Pakistan">Pakistan</option>
837
+ <option value="Palau">Palau</option>
838
+ <option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
839
+ <option value="Panama">Panama</option>
840
+ <option value="Papua New Guinea">Papua New Guinea</option>
841
+ <option value="Paraguay">Paraguay</option>
842
+ <option value="Peru">Peru</option>
843
+ <option value="Philippines">Philippines</option>
844
+ <option value="Pitcairn">Pitcairn</option>
845
+ <option value="Poland">Poland</option>
846
+ <option value="Portugal">Portugal</option>
847
+ <option value="Puerto Rico">Puerto Rico</option>
848
+ <option value="Qatar">Qatar</option>
849
+ <option value="Reunion">Reunion</option>
850
+ <option value="Romania">Romania</option>
851
+ <option value="Russian Federation">Russian Federation</option>
852
+ <option value="Rwanda">Rwanda</option>
853
+ <option value="Saint Barthelemy">Saint Barthelemy</option>
854
+ <option value="Saint Helena">Saint Helena</option>
855
+ <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
856
+ <option value="Saint Lucia">Saint Lucia</option>
857
+ <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
858
+ <option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
859
+ <option value="Samoa">Samoa</option>
860
+ <option value="San Marino">San Marino</option>
861
+ <option value="Sao Tome and Principe">Sao Tome and Principe</option>
862
+ <option value="Saudi Arabia">Saudi Arabia</option>
863
+ <option value="Senegal">Senegal</option>
864
+ <option value="Serbia">Serbia</option>
865
+ <option value="Seychelles">Seychelles</option>
866
+ <option value="Sierra Leone">Sierra Leone</option>
867
+ <option value="Singapore">Singapore</option>
868
+ <option value="Slovakia">Slovakia</option>
869
+ <option value="Slovenia">Slovenia</option>
870
+ <option value="Solomon Islands">Solomon Islands</option>
871
+ <option value="Somalia">Somalia</option>
872
+ <option value="South Africa">South Africa</option>
873
+ <option value="South Georgia and the South Sandwich Islands">South Georgia and the South Sandwich Islands</option>
874
+ <option value="Spain">Spain</option>
875
+ <option value="Sri Lanka">Sri Lanka</option>
876
+ <option value="Sudan">Sudan</option>
877
+ <option value="Suriname">Suriname</option>
878
+ <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
879
+ <option value="Swaziland">Swaziland</option>
880
+ <option value="Sweden">Sweden</option>
881
+ <option value="Switzerland">Switzerland</option>
882
+ <option value="Syrian Arab Republic">Syrian Arab Republic</option>
883
+ <option value="Taiwan, Province of China">Taiwan, Province of China</option>
884
+ <option value="Tajikistan">Tajikistan</option>
885
+ <option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
886
+ <option value="Thailand">Thailand</option>
887
+ <option value="Timor-Leste">Timor-Leste</option>
888
+ <option value="Togo">Togo</option>
889
+ <option value="Tokelau">Tokelau</option>
890
+ <option value="Tonga">Tonga</option>
891
+ <option value="Trinidad and Tobago">Trinidad and Tobago</option>
892
+ <option value="Tunisia">Tunisia</option>
893
+ <option value="Turkey">Turkey</option>
894
+ <option value="Turkmenistan">Turkmenistan</option>
895
+ <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
896
+ <option value="Tuvalu">Tuvalu</option>
897
+ <option value="Uganda">Uganda</option>
898
+ <option value="Ukraine">Ukraine</option>
899
+ <option value="United Arab Emirates">United Arab Emirates</option>
900
+ <option value="United Kingdom">United Kingdom</option>
901
+ <option value="United States">United States</option>
902
+ <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
903
+ <option value="Uruguay">Uruguay</option>
904
+ <option value="Uzbekistan">Uzbekistan</option>
905
+ <option value="Vanuatu">Vanuatu</option>
906
+ <option value="Venezuela">Venezuela</option>
907
+ <option value="Viet Nam">Viet Nam</option>
908
+ <option value="Virgin Islands, British">Virgin Islands, British</option>
909
+ <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
910
+ <option value="Wallis and Futuna">Wallis and Futuna</option>
911
+ <option value="Western Sahara">Western Sahara</option>
912
+ <option value="Yemen">Yemen</option>
913
+ <option value="Zambia">Zambia</option>
914
+ <option value="Zimbabwe">Zimbabwe</option></select>
915
+ COUNTRIES
916
+ assert_deprecated 'list-of-countries' do
917
+ assert_dom_equal(expected_select[0..-2], country_select("post", "origin", ["New Zealand", "Nicaragua"]))
918
+ end
919
+ end
920
+
921
+ def test_country_select_with_selected_priority_country
922
+ @post = Post.new
923
+ @post.origin = "New Zealand"
924
+ expected_select = <<-COUNTRIES
925
+ <select id="post_origin" name="post[origin]"><option selected="selected" value="New Zealand">New Zealand</option>
926
+ <option value="Nicaragua">Nicaragua</option><option value="" disabled="disabled">-------------</option>
927
+ <option value="Afghanistan">Afghanistan</option>
928
+ <option value="Aland Islands">Aland Islands</option>
929
+ <option value="Albania">Albania</option>
930
+ <option value="Algeria">Algeria</option>
931
+ <option value="American Samoa">American Samoa</option>
932
+ <option value="Andorra">Andorra</option>
933
+ <option value="Angola">Angola</option>
934
+ <option value="Anguilla">Anguilla</option>
935
+ <option value="Antarctica">Antarctica</option>
936
+ <option value="Antigua And Barbuda">Antigua And Barbuda</option>
937
+ <option value="Argentina">Argentina</option>
938
+ <option value="Armenia">Armenia</option>
939
+ <option value="Aruba">Aruba</option>
940
+ <option value="Australia">Australia</option>
941
+ <option value="Austria">Austria</option>
942
+ <option value="Azerbaijan">Azerbaijan</option>
943
+ <option value="Bahamas">Bahamas</option>
944
+ <option value="Bahrain">Bahrain</option>
945
+ <option value="Bangladesh">Bangladesh</option>
946
+ <option value="Barbados">Barbados</option>
947
+ <option value="Belarus">Belarus</option>
948
+ <option value="Belgium">Belgium</option>
949
+ <option value="Belize">Belize</option>
950
+ <option value="Benin">Benin</option>
951
+ <option value="Bermuda">Bermuda</option>
952
+ <option value="Bhutan">Bhutan</option>
953
+ <option value="Bolivia">Bolivia</option>
954
+ <option value="Bosnia and Herzegowina">Bosnia and Herzegowina</option>
955
+ <option value="Botswana">Botswana</option>
956
+ <option value="Bouvet Island">Bouvet Island</option>
957
+ <option value="Brazil">Brazil</option>
958
+ <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
959
+ <option value="Brunei Darussalam">Brunei Darussalam</option>
960
+ <option value="Bulgaria">Bulgaria</option>
961
+ <option value="Burkina Faso">Burkina Faso</option>
962
+ <option value="Burundi">Burundi</option>
963
+ <option value="Cambodia">Cambodia</option>
964
+ <option value="Cameroon">Cameroon</option>
965
+ <option value="Canada">Canada</option>
966
+ <option value="Cape Verde">Cape Verde</option>
967
+ <option value="Cayman Islands">Cayman Islands</option>
968
+ <option value="Central African Republic">Central African Republic</option>
969
+ <option value="Chad">Chad</option>
970
+ <option value="Chile">Chile</option>
971
+ <option value="China">China</option>
972
+ <option value="Christmas Island">Christmas Island</option>
973
+ <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
974
+ <option value="Colombia">Colombia</option>
975
+ <option value="Comoros">Comoros</option>
976
+ <option value="Congo">Congo</option>
977
+ <option value="Congo, the Democratic Republic of the">Congo, the Democratic Republic of the</option>
978
+ <option value="Cook Islands">Cook Islands</option>
979
+ <option value="Costa Rica">Costa Rica</option>
980
+ <option value="Cote d'Ivoire">Cote d'Ivoire</option>
981
+ <option value="Croatia">Croatia</option>
982
+ <option value="Cuba">Cuba</option>
983
+ <option value="Cyprus">Cyprus</option>
984
+ <option value="Czech Republic">Czech Republic</option>
985
+ <option value="Denmark">Denmark</option>
986
+ <option value="Djibouti">Djibouti</option>
987
+ <option value="Dominica">Dominica</option>
988
+ <option value="Dominican Republic">Dominican Republic</option>
989
+ <option value="Ecuador">Ecuador</option>
990
+ <option value="Egypt">Egypt</option>
991
+ <option value="El Salvador">El Salvador</option>
992
+ <option value="Equatorial Guinea">Equatorial Guinea</option>
993
+ <option value="Eritrea">Eritrea</option>
994
+ <option value="Estonia">Estonia</option>
995
+ <option value="Ethiopia">Ethiopia</option>
996
+ <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
997
+ <option value="Faroe Islands">Faroe Islands</option>
998
+ <option value="Fiji">Fiji</option>
999
+ <option value="Finland">Finland</option>
1000
+ <option value="France">France</option>
1001
+ <option value="French Guiana">French Guiana</option>
1002
+ <option value="French Polynesia">French Polynesia</option>
1003
+ <option value="French Southern Territories">French Southern Territories</option>
1004
+ <option value="Gabon">Gabon</option>
1005
+ <option value="Gambia">Gambia</option>
1006
+ <option value="Georgia">Georgia</option>
1007
+ <option value="Germany">Germany</option>
1008
+ <option value="Ghana">Ghana</option>
1009
+ <option value="Gibraltar">Gibraltar</option>
1010
+ <option value="Greece">Greece</option>
1011
+ <option value="Greenland">Greenland</option>
1012
+ <option value="Grenada">Grenada</option>
1013
+ <option value="Guadeloupe">Guadeloupe</option>
1014
+ <option value="Guam">Guam</option>
1015
+ <option value="Guatemala">Guatemala</option>
1016
+ <option value="Guernsey">Guernsey</option>
1017
+ <option value="Guinea">Guinea</option>
1018
+ <option value="Guinea-Bissau">Guinea-Bissau</option>
1019
+ <option value="Guyana">Guyana</option>
1020
+ <option value="Haiti">Haiti</option>
1021
+ <option value="Heard and McDonald Islands">Heard and McDonald Islands</option>
1022
+ <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
1023
+ <option value="Honduras">Honduras</option>
1024
+ <option value="Hong Kong">Hong Kong</option>
1025
+ <option value="Hungary">Hungary</option>
1026
+ <option value="Iceland">Iceland</option>
1027
+ <option value="India">India</option>
1028
+ <option value="Indonesia">Indonesia</option>
1029
+ <option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
1030
+ <option value="Iraq">Iraq</option>
1031
+ <option value="Ireland">Ireland</option>
1032
+ <option value="Isle of Man">Isle of Man</option>
1033
+ <option value="Israel">Israel</option>
1034
+ <option value="Italy">Italy</option>
1035
+ <option value="Jamaica">Jamaica</option>
1036
+ <option value="Japan">Japan</option>
1037
+ <option value="Jersey">Jersey</option>
1038
+ <option value="Jordan">Jordan</option>
1039
+ <option value="Kazakhstan">Kazakhstan</option>
1040
+ <option value="Kenya">Kenya</option>
1041
+ <option value="Kiribati">Kiribati</option>
1042
+ <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
1043
+ <option value="Korea, Republic of">Korea, Republic of</option>
1044
+ <option value="Kuwait">Kuwait</option>
1045
+ <option value="Kyrgyzstan">Kyrgyzstan</option>
1046
+ <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
1047
+ <option value="Latvia">Latvia</option>
1048
+ <option value="Lebanon">Lebanon</option>
1049
+ <option value="Lesotho">Lesotho</option>
1050
+ <option value="Liberia">Liberia</option>
1051
+ <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
1052
+ <option value="Liechtenstein">Liechtenstein</option>
1053
+ <option value="Lithuania">Lithuania</option>
1054
+ <option value="Luxembourg">Luxembourg</option>
1055
+ <option value="Macao">Macao</option>
1056
+ <option value="Macedonia, The Former Yugoslav Republic Of">Macedonia, The Former Yugoslav Republic Of</option>
1057
+ <option value="Madagascar">Madagascar</option>
1058
+ <option value="Malawi">Malawi</option>
1059
+ <option value="Malaysia">Malaysia</option>
1060
+ <option value="Maldives">Maldives</option>
1061
+ <option value="Mali">Mali</option>
1062
+ <option value="Malta">Malta</option>
1063
+ <option value="Marshall Islands">Marshall Islands</option>
1064
+ <option value="Martinique">Martinique</option>
1065
+ <option value="Mauritania">Mauritania</option>
1066
+ <option value="Mauritius">Mauritius</option>
1067
+ <option value="Mayotte">Mayotte</option>
1068
+ <option value="Mexico">Mexico</option>
1069
+ <option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
1070
+ <option value="Moldova, Republic of">Moldova, Republic of</option>
1071
+ <option value="Monaco">Monaco</option>
1072
+ <option value="Mongolia">Mongolia</option>
1073
+ <option value="Montenegro">Montenegro</option>
1074
+ <option value="Montserrat">Montserrat</option>
1075
+ <option value="Morocco">Morocco</option>
1076
+ <option value="Mozambique">Mozambique</option>
1077
+ <option value="Myanmar">Myanmar</option>
1078
+ <option value="Namibia">Namibia</option>
1079
+ <option value="Nauru">Nauru</option>
1080
+ <option value="Nepal">Nepal</option>
1081
+ <option value="Netherlands">Netherlands</option>
1082
+ <option value="Netherlands Antilles">Netherlands Antilles</option>
1083
+ <option value="New Caledonia">New Caledonia</option>
1084
+ <option selected="selected" value="New Zealand">New Zealand</option>
1085
+ <option value="Nicaragua">Nicaragua</option>
1086
+ <option value="Niger">Niger</option>
1087
+ <option value="Nigeria">Nigeria</option>
1088
+ <option value="Niue">Niue</option>
1089
+ <option value="Norfolk Island">Norfolk Island</option>
1090
+ <option value="Northern Mariana Islands">Northern Mariana Islands</option>
1091
+ <option value="Norway">Norway</option>
1092
+ <option value="Oman">Oman</option>
1093
+ <option value="Pakistan">Pakistan</option>
1094
+ <option value="Palau">Palau</option>
1095
+ <option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
1096
+ <option value="Panama">Panama</option>
1097
+ <option value="Papua New Guinea">Papua New Guinea</option>
1098
+ <option value="Paraguay">Paraguay</option>
1099
+ <option value="Peru">Peru</option>
1100
+ <option value="Philippines">Philippines</option>
1101
+ <option value="Pitcairn">Pitcairn</option>
1102
+ <option value="Poland">Poland</option>
1103
+ <option value="Portugal">Portugal</option>
1104
+ <option value="Puerto Rico">Puerto Rico</option>
1105
+ <option value="Qatar">Qatar</option>
1106
+ <option value="Reunion">Reunion</option>
1107
+ <option value="Romania">Romania</option>
1108
+ <option value="Russian Federation">Russian Federation</option>
1109
+ <option value="Rwanda">Rwanda</option>
1110
+ <option value="Saint Barthelemy">Saint Barthelemy</option>
1111
+ <option value="Saint Helena">Saint Helena</option>
1112
+ <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
1113
+ <option value="Saint Lucia">Saint Lucia</option>
1114
+ <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
1115
+ <option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
1116
+ <option value="Samoa">Samoa</option>
1117
+ <option value="San Marino">San Marino</option>
1118
+ <option value="Sao Tome and Principe">Sao Tome and Principe</option>
1119
+ <option value="Saudi Arabia">Saudi Arabia</option>
1120
+ <option value="Senegal">Senegal</option>
1121
+ <option value="Serbia">Serbia</option>
1122
+ <option value="Seychelles">Seychelles</option>
1123
+ <option value="Sierra Leone">Sierra Leone</option>
1124
+ <option value="Singapore">Singapore</option>
1125
+ <option value="Slovakia">Slovakia</option>
1126
+ <option value="Slovenia">Slovenia</option>
1127
+ <option value="Solomon Islands">Solomon Islands</option>
1128
+ <option value="Somalia">Somalia</option>
1129
+ <option value="South Africa">South Africa</option>
1130
+ <option value="South Georgia and the South Sandwich Islands">South Georgia and the South Sandwich Islands</option>
1131
+ <option value="Spain">Spain</option>
1132
+ <option value="Sri Lanka">Sri Lanka</option>
1133
+ <option value="Sudan">Sudan</option>
1134
+ <option value="Suriname">Suriname</option>
1135
+ <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
1136
+ <option value="Swaziland">Swaziland</option>
1137
+ <option value="Sweden">Sweden</option>
1138
+ <option value="Switzerland">Switzerland</option>
1139
+ <option value="Syrian Arab Republic">Syrian Arab Republic</option>
1140
+ <option value="Taiwan, Province of China">Taiwan, Province of China</option>
1141
+ <option value="Tajikistan">Tajikistan</option>
1142
+ <option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
1143
+ <option value="Thailand">Thailand</option>
1144
+ <option value="Timor-Leste">Timor-Leste</option>
1145
+ <option value="Togo">Togo</option>
1146
+ <option value="Tokelau">Tokelau</option>
1147
+ <option value="Tonga">Tonga</option>
1148
+ <option value="Trinidad and Tobago">Trinidad and Tobago</option>
1149
+ <option value="Tunisia">Tunisia</option>
1150
+ <option value="Turkey">Turkey</option>
1151
+ <option value="Turkmenistan">Turkmenistan</option>
1152
+ <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
1153
+ <option value="Tuvalu">Tuvalu</option>
1154
+ <option value="Uganda">Uganda</option>
1155
+ <option value="Ukraine">Ukraine</option>
1156
+ <option value="United Arab Emirates">United Arab Emirates</option>
1157
+ <option value="United Kingdom">United Kingdom</option>
1158
+ <option value="United States">United States</option>
1159
+ <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
1160
+ <option value="Uruguay">Uruguay</option>
1161
+ <option value="Uzbekistan">Uzbekistan</option>
1162
+ <option value="Vanuatu">Vanuatu</option>
1163
+ <option value="Venezuela">Venezuela</option>
1164
+ <option value="Viet Nam">Viet Nam</option>
1165
+ <option value="Virgin Islands, British">Virgin Islands, British</option>
1166
+ <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
1167
+ <option value="Wallis and Futuna">Wallis and Futuna</option>
1168
+ <option value="Western Sahara">Western Sahara</option>
1169
+ <option value="Yemen">Yemen</option>
1170
+ <option value="Zambia">Zambia</option>
1171
+ <option value="Zimbabwe">Zimbabwe</option></select>
1172
+ COUNTRIES
1173
+ assert_deprecated 'list-of-countries' do
1174
+ assert_dom_equal(expected_select[0..-2], country_select("post", "origin", ["New Zealand", "Nicaragua"]))
1175
+ end
1176
+ end
1177
+
1178
+ def test_time_zone_select
1179
+ @firm = Firm.new("D")
1180
+ html = time_zone_select( "firm", "time_zone" )
1181
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1182
+ "<option value=\"A\">A</option>\n" +
1183
+ "<option value=\"B\">B</option>\n" +
1184
+ "<option value=\"C\">C</option>\n" +
1185
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1186
+ "<option value=\"E\">E</option>" +
1187
+ "</select>",
1188
+ html
1189
+ end
1190
+
1191
+ def test_time_zone_select_under_fields_for
1192
+ @firm = Firm.new("D")
1193
+
1194
+ _erbout = ''
1195
+
1196
+ fields_for :firm, @firm do |f|
1197
+ _erbout.concat f.time_zone_select(:time_zone)
1198
+ end
1199
+
1200
+ assert_dom_equal(
1201
+ "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1202
+ "<option value=\"A\">A</option>\n" +
1203
+ "<option value=\"B\">B</option>\n" +
1204
+ "<option value=\"C\">C</option>\n" +
1205
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1206
+ "<option value=\"E\">E</option>" +
1207
+ "</select>",
1208
+ _erbout
1209
+ )
1210
+ end
1211
+
1212
+ def test_time_zone_select_with_blank
1213
+ @firm = Firm.new("D")
1214
+ html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
1215
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1216
+ "<option value=\"\"></option>\n" +
1217
+ "<option value=\"A\">A</option>\n" +
1218
+ "<option value=\"B\">B</option>\n" +
1219
+ "<option value=\"C\">C</option>\n" +
1220
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1221
+ "<option value=\"E\">E</option>" +
1222
+ "</select>",
1223
+ html
1224
+ end
1225
+
1226
+ def test_time_zone_select_with_blank_as_string
1227
+ @firm = Firm.new("D")
1228
+ html = time_zone_select("firm", "time_zone", nil, :include_blank => 'No Zone')
1229
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1230
+ "<option value=\"\">No Zone</option>\n" +
1231
+ "<option value=\"A\">A</option>\n" +
1232
+ "<option value=\"B\">B</option>\n" +
1233
+ "<option value=\"C\">C</option>\n" +
1234
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1235
+ "<option value=\"E\">E</option>" +
1236
+ "</select>",
1237
+ html
1238
+ end
1239
+
1240
+ def test_time_zone_select_with_style
1241
+ @firm = Firm.new("D")
1242
+ html = time_zone_select("firm", "time_zone", nil, {},
1243
+ "style" => "color: red")
1244
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
1245
+ "<option value=\"A\">A</option>\n" +
1246
+ "<option value=\"B\">B</option>\n" +
1247
+ "<option value=\"C\">C</option>\n" +
1248
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1249
+ "<option value=\"E\">E</option>" +
1250
+ "</select>",
1251
+ html
1252
+ assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
1253
+ :style => "color: red")
1254
+ end
1255
+
1256
+ def test_time_zone_select_with_blank_and_style
1257
+ @firm = Firm.new("D")
1258
+ html = time_zone_select("firm", "time_zone", nil,
1259
+ { :include_blank => true }, "style" => "color: red")
1260
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
1261
+ "<option value=\"\"></option>\n" +
1262
+ "<option value=\"A\">A</option>\n" +
1263
+ "<option value=\"B\">B</option>\n" +
1264
+ "<option value=\"C\">C</option>\n" +
1265
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1266
+ "<option value=\"E\">E</option>" +
1267
+ "</select>",
1268
+ html
1269
+ assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
1270
+ { :include_blank => true }, :style => "color: red")
1271
+ end
1272
+
1273
+ def test_time_zone_select_with_blank_as_string_and_style
1274
+ @firm = Firm.new("D")
1275
+ html = time_zone_select("firm", "time_zone", nil,
1276
+ { :include_blank => 'No Zone' }, "style" => "color: red")
1277
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
1278
+ "<option value=\"\">No Zone</option>\n" +
1279
+ "<option value=\"A\">A</option>\n" +
1280
+ "<option value=\"B\">B</option>\n" +
1281
+ "<option value=\"C\">C</option>\n" +
1282
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1283
+ "<option value=\"E\">E</option>" +
1284
+ "</select>",
1285
+ html
1286
+ assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
1287
+ { :include_blank => 'No Zone' }, :style => "color: red")
1288
+ end
1289
+
1290
+ def test_time_zone_select_with_priority_zones
1291
+ @firm = Firm.new("D")
1292
+ zones = [ ActiveSupport::TimeZone.new("A"), ActiveSupport::TimeZone.new("D") ]
1293
+ html = time_zone_select("firm", "time_zone", zones )
1294
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1295
+ "<option value=\"A\">A</option>\n" +
1296
+ "<option value=\"D\" selected=\"selected\">D</option>" +
1297
+ "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
1298
+ "<option value=\"B\">B</option>\n" +
1299
+ "<option value=\"C\">C</option>\n" +
1300
+ "<option value=\"E\">E</option>" +
1301
+ "</select>",
1302
+ html
1303
+ end
1304
+
1305
+ def test_time_zone_select_with_default_time_zone_and_nil_value
1306
+ @firm = Firm.new()
1307
+ @firm.time_zone = nil
1308
+ html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
1309
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1310
+ "<option value=\"A\">A</option>\n" +
1311
+ "<option value=\"B\" selected=\"selected\">B</option>\n" +
1312
+ "<option value=\"C\">C</option>\n" +
1313
+ "<option value=\"D\">D</option>\n" +
1314
+ "<option value=\"E\">E</option>" +
1315
+ "</select>",
1316
+ html
1317
+ end
1318
+
1319
+ def test_time_zone_select_with_default_time_zone_and_value
1320
+ @firm = Firm.new('D')
1321
+ html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
1322
+ assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
1323
+ "<option value=\"A\">A</option>\n" +
1324
+ "<option value=\"B\">B</option>\n" +
1325
+ "<option value=\"C\">C</option>\n" +
1326
+ "<option value=\"D\" selected=\"selected\">D</option>\n" +
1327
+ "<option value=\"E\">E</option>" +
1328
+ "</select>",
1329
+ html
1330
+ end
1331
+
1332
+ end
1333
+ end