PageRenderTime 47ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/rails/actionpack/test/template/form_options_helper_test.rb

http://github.com/benburkert/cruisecontrolrb
Ruby | 489 lines | 429 code | 58 blank | 2 comment | 2 complexity | 99caa1f6d0bd9c9055a24afe95b7e21b MD5 | raw file
Possible License(s): Apache-2.0
  1. require File.dirname(__FILE__) + '/../abstract_unit'
  2. class MockTimeZone
  3. attr_reader :name
  4. def initialize( name )
  5. @name = name
  6. end
  7. def self.all
  8. [ "A", "B", "C", "D", "E" ].map { |s| new s }
  9. end
  10. def ==( z )
  11. z && @name == z.name
  12. end
  13. def to_s
  14. @name
  15. end
  16. end
  17. ActionView::Helpers::FormOptionsHelper::TimeZone = MockTimeZone
  18. class FormOptionsHelperTest < Test::Unit::TestCase
  19. include ActionView::Helpers::FormHelper
  20. include ActionView::Helpers::FormOptionsHelper
  21. silence_warnings do
  22. Post = Struct.new('Post', :title, :author_name, :body, :secret, :written_on, :category, :origin)
  23. Continent = Struct.new('Continent', :continent_name, :countries)
  24. Country = Struct.new('Country', :country_id, :country_name)
  25. Firm = Struct.new('Firm', :time_zone)
  26. end
  27. def test_collection_options
  28. @posts = [
  29. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  30. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  31. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  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. def test_collection_options_with_preselected_value
  39. @posts = [
  40. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  41. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  42. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  43. ]
  44. assert_dom_equal(
  45. "<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>",
  46. options_from_collection_for_select(@posts, "author_name", "title", "Babe")
  47. )
  48. end
  49. def test_collection_options_with_preselected_value_array
  50. @posts = [
  51. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  52. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  53. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  54. ]
  55. assert_dom_equal(
  56. "<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>",
  57. options_from_collection_for_select(@posts, "author_name", "title", [ "Babe", "Cabe" ])
  58. )
  59. end
  60. def test_array_options_for_select
  61. assert_dom_equal(
  62. "<option value=\"&lt;Denmark&gt;\">&lt;Denmark&gt;</option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
  63. options_for_select([ "<Denmark>", "USA", "Sweden" ])
  64. )
  65. end
  66. def test_array_options_for_select_with_selection
  67. assert_dom_equal(
  68. "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>",
  69. options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
  70. )
  71. end
  72. def test_array_options_for_select_with_selection_array
  73. assert_dom_equal(
  74. "<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>",
  75. options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
  76. )
  77. end
  78. def test_array_options_for_string_include_in_other_string_bug_fix
  79. assert_dom_equal(
  80. "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
  81. options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
  82. )
  83. assert_dom_equal(
  84. "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
  85. options_for_select([ "ruby", "rubyonrails" ], "ruby")
  86. )
  87. assert_dom_equal(
  88. %(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
  89. options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
  90. )
  91. end
  92. def test_hash_options_for_select
  93. assert_dom_equal(
  94. "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
  95. options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" })
  96. )
  97. assert_dom_equal(
  98. "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
  99. options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar")
  100. )
  101. assert_dom_equal(
  102. "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
  103. options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ])
  104. )
  105. end
  106. def test_ducktyped_options_for_select
  107. quack = Struct.new(:first, :last)
  108. assert_dom_equal(
  109. "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>",
  110. options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
  111. )
  112. assert_dom_equal(
  113. "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
  114. options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
  115. )
  116. assert_dom_equal(
  117. "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
  118. options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
  119. )
  120. end
  121. def test_html_option_groups_from_collection
  122. @continents = [
  123. Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
  124. Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
  125. ]
  126. assert_dom_equal(
  127. "<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>",
  128. option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk")
  129. )
  130. end
  131. def test_time_zone_options_no_parms
  132. opts = time_zone_options_for_select
  133. assert_dom_equal "<option value=\"A\">A</option>\n" +
  134. "<option value=\"B\">B</option>\n" +
  135. "<option value=\"C\">C</option>\n" +
  136. "<option value=\"D\">D</option>\n" +
  137. "<option value=\"E\">E</option>",
  138. opts
  139. end
  140. def test_time_zone_options_with_selected
  141. opts = time_zone_options_for_select( "D" )
  142. assert_dom_equal "<option value=\"A\">A</option>\n" +
  143. "<option value=\"B\">B</option>\n" +
  144. "<option value=\"C\">C</option>\n" +
  145. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  146. "<option value=\"E\">E</option>",
  147. opts
  148. end
  149. def test_time_zone_options_with_unknown_selected
  150. opts = time_zone_options_for_select( "K" )
  151. assert_dom_equal "<option value=\"A\">A</option>\n" +
  152. "<option value=\"B\">B</option>\n" +
  153. "<option value=\"C\">C</option>\n" +
  154. "<option value=\"D\">D</option>\n" +
  155. "<option value=\"E\">E</option>",
  156. opts
  157. end
  158. def test_time_zone_options_with_priority_zones
  159. zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ]
  160. opts = time_zone_options_for_select( nil, zones )
  161. assert_dom_equal "<option value=\"B\">B</option>\n" +
  162. "<option value=\"E\">E</option>" +
  163. "<option value=\"\">-------------</option>\n" +
  164. "<option value=\"A\">A</option>\n" +
  165. "<option value=\"C\">C</option>\n" +
  166. "<option value=\"D\">D</option>",
  167. opts
  168. end
  169. def test_time_zone_options_with_selected_priority_zones
  170. zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ]
  171. opts = time_zone_options_for_select( "E", zones )
  172. assert_dom_equal "<option value=\"B\">B</option>\n" +
  173. "<option value=\"E\" selected=\"selected\">E</option>" +
  174. "<option value=\"\">-------------</option>\n" +
  175. "<option value=\"A\">A</option>\n" +
  176. "<option value=\"C\">C</option>\n" +
  177. "<option value=\"D\">D</option>",
  178. opts
  179. end
  180. def test_time_zone_options_with_unselected_priority_zones
  181. zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ]
  182. opts = time_zone_options_for_select( "C", zones )
  183. assert_dom_equal "<option value=\"B\">B</option>\n" +
  184. "<option value=\"E\">E</option>" +
  185. "<option value=\"\">-------------</option>\n" +
  186. "<option value=\"A\">A</option>\n" +
  187. "<option value=\"C\" selected=\"selected\">C</option>\n" +
  188. "<option value=\"D\">D</option>",
  189. opts
  190. end
  191. def test_select
  192. @post = Post.new
  193. @post.category = "<mus>"
  194. assert_dom_equal(
  195. "<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>",
  196. select("post", "category", %w( abe <mus> hest))
  197. )
  198. end
  199. def test_select_under_fields_for
  200. @post = Post.new
  201. @post.category = "<mus>"
  202. _erbout = ''
  203. fields_for :post, @post do |f|
  204. _erbout.concat f.select(:category, %w( abe <mus> hest))
  205. end
  206. assert_dom_equal(
  207. "<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>",
  208. _erbout
  209. )
  210. end
  211. def test_select_with_blank
  212. @post = Post.new
  213. @post.category = "<mus>"
  214. assert_dom_equal(
  215. "<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>",
  216. select("post", "category", %w( abe <mus> hest), :include_blank => true)
  217. )
  218. end
  219. def test_select_with_default_prompt
  220. @post = Post.new
  221. @post.category = ""
  222. assert_dom_equal(
  223. "<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>",
  224. select("post", "category", %w( abe <mus> hest), :prompt => true)
  225. )
  226. end
  227. def test_select_no_prompt_when_select_has_value
  228. @post = Post.new
  229. @post.category = "<mus>"
  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. select("post", "category", %w( abe <mus> hest), :prompt => true)
  233. )
  234. end
  235. def test_select_with_given_prompt
  236. @post = Post.new
  237. @post.category = ""
  238. assert_dom_equal(
  239. "<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>",
  240. select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
  241. )
  242. end
  243. def test_select_with_prompt_and_blank
  244. @post = Post.new
  245. @post.category = ""
  246. assert_dom_equal(
  247. "<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>",
  248. select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
  249. )
  250. end
  251. def test_select_with_selected_value
  252. @post = Post.new
  253. @post.category = "<mus>"
  254. assert_dom_equal(
  255. "<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>",
  256. select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
  257. )
  258. end
  259. def test_select_with_selected_nil
  260. @post = Post.new
  261. @post.category = "<mus>"
  262. assert_dom_equal(
  263. "<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>",
  264. select("post", "category", %w( abe <mus> hest ), :selected => nil)
  265. )
  266. end
  267. def test_collection_select
  268. @posts = [
  269. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  270. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  271. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  272. ]
  273. @post = Post.new
  274. @post.author_name = "Babe"
  275. assert_dom_equal(
  276. "<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>",
  277. collection_select("post", "author_name", @posts, "author_name", "author_name")
  278. )
  279. end
  280. def test_collection_select_under_fields_for
  281. @posts = [
  282. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  283. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  284. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  285. ]
  286. @post = Post.new
  287. @post.author_name = "Babe"
  288. _erbout = ''
  289. fields_for :post, @post do |f|
  290. _erbout.concat f.collection_select(:author_name, @posts, :author_name, :author_name)
  291. end
  292. assert_dom_equal(
  293. "<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>",
  294. _erbout
  295. )
  296. end
  297. def test_collection_select_with_blank_and_style
  298. @posts = [
  299. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  300. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  301. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  302. ]
  303. @post = Post.new
  304. @post.author_name = "Babe"
  305. assert_dom_equal(
  306. "<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>",
  307. collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
  308. )
  309. end
  310. def test_collection_select_with_multiple_option_appends_array_brackets
  311. @posts = [
  312. Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
  313. Post.new("Babe went home", "Babe", "To a little house", "shh!"),
  314. Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
  315. ]
  316. @post = Post.new
  317. @post.author_name = "Babe"
  318. 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>"
  319. # Should suffix default name with [].
  320. assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
  321. # Shouldn't suffix custom name with [].
  322. assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
  323. end
  324. def test_country_select
  325. @post = Post.new
  326. @post.origin = "Denmark"
  327. assert_dom_equal(
  328. "<select id=\"post_origin\" name=\"post[origin]\"><option value=\"Afghanistan\">Afghanistan</option>\n<option value=\"Albania\">Albania</option>\n<option value=\"Algeria\">Algeria</option>\n<option value=\"American Samoa\">American Samoa</option>\n<option value=\"Andorra\">Andorra</option>\n<option value=\"Angola\">Angola</option>\n<option value=\"Anguilla\">Anguilla</option>\n<option value=\"Antarctica\">Antarctica</option>\n<option value=\"Antigua And Barbuda\">Antigua And Barbuda</option>\n<option value=\"Argentina\">Argentina</option>\n<option value=\"Armenia\">Armenia</option>\n<option value=\"Aruba\">Aruba</option>\n<option value=\"Australia\">Australia</option>\n<option value=\"Austria\">Austria</option>\n<option value=\"Azerbaijan\">Azerbaijan</option>\n<option value=\"Bahamas\">Bahamas</option>\n<option value=\"Bahrain\">Bahrain</option>\n<option value=\"Bangladesh\">Bangladesh</option>\n<option value=\"Barbados\">Barbados</option>\n<option value=\"Belarus\">Belarus</option>\n<option value=\"Belgium\">Belgium</option>\n<option value=\"Belize\">Belize</option>\n<option value=\"Benin\">Benin</option>\n<option value=\"Bermuda\">Bermuda</option>\n<option value=\"Bhutan\">Bhutan</option>\n<option value=\"Bolivia\">Bolivia</option>\n<option value=\"Bosnia and Herzegowina\">Bosnia and Herzegowina</option>\n<option value=\"Botswana\">Botswana</option>\n<option value=\"Bouvet Island\">Bouvet Island</option>\n<option value=\"Brazil\">Brazil</option>\n<option value=\"British Indian Ocean Territory\">British Indian Ocean Territory</option>\n<option value=\"Brunei Darussalam\">Brunei Darussalam</option>\n<option value=\"Bulgaria\">Bulgaria</option>\n<option value=\"Burkina Faso\">Burkina Faso</option>\n<option value=\"Burma\">Burma</option>\n<option value=\"Burundi\">Burundi</option>\n<option value=\"Cambodia\">Cambodia</option>\n<option value=\"Cameroon\">Cameroon</option>\n<option value=\"Canada\">Canada</option>\n<option value=\"Cape Verde\">Cape Verde</option>\n<option value=\"Cayman Islands\">Cayman Islands</option>\n<option value=\"Central African Republic\">Central African Republic</option>\n<option value=\"Chad\">Chad</option>\n<option value=\"Chile\">Chile</option>\n<option value=\"China\">China</option>\n<option value=\"Christmas Island\">Christmas Island</option>\n<option value=\"Cocos (Keeling) Islands\">Cocos (Keeling) Islands</option>\n<option value=\"Colombia\">Colombia</option>\n<option value=\"Comoros\">Comoros</option>\n<option value=\"Congo\">Congo</option>\n<option value=\"Congo, the Democratic Republic of the\">Congo, the Democratic Republic of the</option>\n<option value=\"Cook Islands\">Cook Islands</option>\n<option value=\"Costa Rica\">Costa Rica</option>\n<option value=\"Cote d'Ivoire\">Cote d'Ivoire</option>\n<option value=\"Croatia\">Croatia</option>\n<option value=\"Cuba\">Cuba</option>\n<option value=\"Cyprus\">Cyprus</option>\n<option value=\"Czech Republic\">Czech Republic</option>\n<option value=\"Denmark\" selected=\"selected\">Denmark</option>\n<option value=\"Djibouti\">Djibouti</option>\n<option value=\"Dominica\">Dominica</option>\n<option value=\"Dominican Republic\">Dominican Republic</option>\n<option value=\"East Timor\">East Timor</option>\n<option value=\"Ecuador\">Ecuador</option>\n<option value=\"Egypt\">Egypt</option>\n<option value=\"El Salvador\">El Salvador</option>\n<option value=\"England\">England" +
  329. "</option>\n<option value=\"Equatorial Guinea\">Equatorial Guinea</option>\n<option value=\"Eritrea\">Eritrea</option>\n<option value=\"Espana\">Espana</option>\n<option value=\"Estonia\">Estonia</option>\n<option value=\"Ethiopia\">Ethiopia</option>\n<option value=\"Falkland Islands\">Falkland Islands</option>\n<option value=\"Faroe Islands\">Faroe Islands</option>\n<option value=\"Fiji\">Fiji</option>\n<option value=\"Finland\">Finland</option>\n<option value=\"France\">France</option>\n<option value=\"French Guiana\">French Guiana</option>\n<option value=\"French Polynesia\">French Polynesia</option>\n<option value=\"French Southern Territories\">French Southern Territories</option>\n<option value=\"Gabon\">Gabon</option>\n<option value=\"Gambia\">Gambia</option>\n<option value=\"Georgia\">Georgia</option>\n<option value=\"Germany\">Germany</option>\n<option value=\"Ghana\">Ghana</option>\n<option value=\"Gibraltar\">Gibraltar</option>\n<option value=\"Great Britain\">Great Britain</option>\n<option value=\"Greece\">Greece</option>\n<option value=\"Greenland\">Greenland</option>\n<option value=\"Grenada\">Grenada</option>\n<option value=\"Guadeloupe\">Guadeloupe</option>\n<option value=\"Guam\">Guam</option>\n<option value=\"Guatemala\">Guatemala</option>\n<option value=\"Guinea\">Guinea</option>\n<option value=\"Guinea-Bissau\">Guinea-Bissau</option>\n<option value=\"Guyana\">Guyana</option>\n<option value=\"Haiti\">Haiti</option>\n<option value=\"Heard and Mc Donald Islands\">Heard and Mc Donald Islands</option>\n<option value=\"Honduras\">Honduras</option>\n<option value=\"Hong Kong\">Hong Kong</option>\n<option value=\"Hungary\">Hungary</option>\n<option value=\"Iceland\">Iceland</option>\n<option value=\"India\">India</option>\n<option value=\"Indonesia\">Indonesia</option>\n<option value=\"Ireland\">Ireland</option>\n<option value=\"Israel\">Israel</option>\n<option value=\"Italy\">Italy</option>\n<option value=\"Iran\">Iran</option>\n<option value=\"Iraq\">Iraq</option>\n<option value=\"Jamaica\">Jamaica</option>\n<option value=\"Japan\">Japan</option>\n<option value=\"Jordan\">Jordan</option>\n<option value=\"Kazakhstan\">Kazakhstan</option>\n<option value=\"Kenya\">Kenya</option>\n<option value=\"Kiribati\">Kiribati</option>\n<option value=\"Korea, Republic of\">Korea, Republic of</option>\n<option value=\"Korea (South)\">Korea (South)</option>\n<option value=\"Kuwait\">Kuwait</option>\n<option value=\"Kyrgyzstan\">Kyrgyzstan</option>\n<option value=\"Lao People's Democratic Republic\">Lao People's Democratic Republic</option>\n<option value=\"Latvia\">Latvia</option>\n<option value=\"Lebanon\">Lebanon</option>\n<option value=\"Lesotho\">Lesotho</option>\n<option value=\"Liberia\">Liberia</option>\n<option value=\"Liechtenstein\">Liechtenstein</option>\n<option value=\"Lithuania\">Lithuania</option>\n<option value=\"Luxembourg\">Luxembourg</option>\n<option value=\"Macau\">Macau</option>\n<option value=\"Macedonia\">Macedonia</option>\n<option value=\"Madagascar\">Madagascar</option>\n<option value=\"Malawi\">Malawi</option>\n<option value=\"Malaysia\">Malaysia</option>\n<option value=\"Maldives\">Maldives</option>\n<option value=\"Mali\">Mali</option>\n<option value=\"Malta\">Malta</option>\n<option value=\"Marshall Islands\">Marshall Islands</option>\n<option value=\"Martinique\">Martinique</option>\n<option value=\"Mauritania\">Mauritania</option>\n<option value=\"Mauritius\">Mauritius</option>\n<option value=\"Mayotte\">Mayotte</option>\n<option value=\"Mexico\">Mexico</option>\n<option value=\"Micronesia, Federated States of\">Micronesia, Federated States of</option>\n<option value=\"Moldova, Republic of\">Moldova, Republic of</option>\n<option value=\"Monaco\">Monaco</option>\n<option value=\"Mongolia\">Mongolia</option>\n<option value=\"Montserrat\">Montserrat</option>\n<option value=\"Morocco\">Morocco</option>\n<option value=\"Mozambique\">Mozambique</option>\n<option value=\"Myanmar\">Myanmar</option>\n<option value=\"Namibia\">Namibia</option>\n<option value=\"Nauru\">Nauru</option>\n<option value=\"Nepal\">Nepal</option>\n<option value=\"Netherlands\">Netherlands</option>\n<option value=\"Netherlands Antilles\">Netherlands Antilles</option>\n<option value=\"New Caledonia\">New Caledonia</option>" +
  330. "\n<option value=\"New Zealand\">New Zealand</option>\n<option value=\"Nicaragua\">Nicaragua</option>\n<option value=\"Niger\">Niger</option>\n<option value=\"Nigeria\">Nigeria</option>\n<option value=\"Niue\">Niue</option>\n<option value=\"Norfolk Island\">Norfolk Island</option>\n<option value=\"Northern Ireland\">Northern Ireland</option>\n<option value=\"Northern Mariana Islands\">Northern Mariana Islands</option>\n<option value=\"Norway\">Norway</option>\n<option value=\"Oman\">Oman</option>\n<option value=\"Pakistan\">Pakistan</option>\n<option value=\"Palau\">Palau</option>\n<option value=\"Panama\">Panama</option>\n<option value=\"Papua New Guinea\">Papua New Guinea</option>\n<option value=\"Paraguay\">Paraguay</option>\n<option value=\"Peru\">Peru</option>\n<option value=\"Philippines\">Philippines</option>\n<option value=\"Pitcairn\">Pitcairn</option>\n<option value=\"Poland\">Poland</option>\n<option value=\"Portugal\">Portugal</option>\n<option value=\"Puerto Rico\">Puerto Rico</option>\n<option value=\"Qatar\">Qatar</option>\n<option value=\"Reunion\">Reunion</option>\n<option value=\"Romania\">Romania</option>\n<option value=\"Russia\">Russia</option>\n<option value=\"Rwanda\">Rwanda</option>\n<option value=\"Saint Kitts and Nevis\">Saint Kitts and Nevis</option>\n<option value=\"Saint Lucia\">Saint Lucia</option>\n<option value=\"Saint Vincent and the Grenadines\">Saint Vincent and the Grenadines</option>\n<option value=\"Samoa (Independent)\">Samoa (Independent)</option>\n<option value=\"San Marino\">San Marino</option>\n<option value=\"Sao Tome and Principe\">Sao Tome and Principe</option>\n<option value=\"Saudi Arabia\">Saudi Arabia</option>\n<option value=\"Scotland\">Scotland</option>\n<option value=\"Senegal\">Senegal</option>\n<option value=\"Serbia and Montenegro\">Serbia and Montenegro</option>\n<option value=\"Seychelles\">Seychelles</option>\n<option value=\"Sierra Leone\">Sierra Leone</option>\n<option value=\"Singapore\">Singapore</option>\n<option value=\"Slovakia\">Slovakia</option>\n<option value=\"Slovenia\">Slovenia</option>\n<option value=\"Solomon Islands\">Solomon Islands</option>\n<option value=\"Somalia\">Somalia</option>\n<option value=\"South Africa\">South Africa</option>\n<option value=\"South Georgia and the South Sandwich Islands\">South Georgia and the South Sandwich Islands</option>\n<option value=\"South Korea\">South Korea</option>\n<option value=\"Spain\">Spain</option>\n<option value=\"Sri Lanka\">Sri Lanka</option>\n<option value=\"St. Helena\">St. Helena</option>\n<option value=\"St. Pierre and Miquelon\">St. Pierre and Miquelon</option>\n<option value=\"Suriname\">Suriname</option>\n<option value=\"Svalbard and Jan Mayen Islands\">Svalbard and Jan Mayen Islands</option>\n<option value=\"Swaziland\">Swaziland</option>\n<option value=\"Sweden\">Sweden</option>\n<option value=\"Switzerland\">Switzerland</option>\n<option value=\"Taiwan\">Taiwan</option>\n<option value=\"Tajikistan\">Tajikistan</option>\n<option value=\"Tanzania\">Tanzania</option>\n<option value=\"Thailand\">Thailand</option>\n<option value=\"Togo\">Togo</option>\n<option value=\"Tokelau\">Tokelau</option>\n<option value=\"Tonga\">Tonga</option>\n<option value=\"Trinidad\">Trinidad</option>\n<option value=\"Trinidad and Tobago\">Trinidad and Tobago</option>\n<option value=\"Tunisia\">Tunisia</option>\n<option value=\"Turkey\">Turkey</option>\n<option value=\"Turkmenistan\">" +
  331. "Turkmenistan</option>\n<option value=\"Turks and Caicos Islands\">Turks and Caicos Islands</option>\n<option value=\"Tuvalu\">Tuvalu</option>\n<option value=\"Uganda\">Uganda</option>\n<option value=\"Ukraine\">Ukraine</option>\n<option value=\"United Arab Emirates\">United Arab Emirates</option>\n<option value=\"United Kingdom\">United Kingdom</option>\n<option value=\"United States\">United States</option>\n<option value=\"United States Minor Outlying Islands\">United States Minor Outlying Islands</option>\n<option value=\"Uruguay\">Uruguay</option>\n<option value=\"Uzbekistan\">Uzbekistan</option>\n<option value=\"Vanuatu\">Vanuatu</option>\n<option value=\"Vatican City State (Holy See)\">Vatican City State (Holy See)</option>\n<option value=\"Venezuela\">Venezuela</option>\n<option value=\"Viet Nam\">Viet Nam</option>\n<option value=\"Virgin Islands (British)\">Virgin Islands (British)</option>\n<option value=\"Virgin Islands (U.S.)\">Virgin Islands (U.S.)</option>\n<option value=\"Wales\">Wales</option>\n<option value=\"Wallis and Futuna Islands\">Wallis and Futuna Islands</option>\n<option value=\"Western Sahara\">Western Sahara</option>\n<option value=\"Yemen\">Yemen</option>\n<option value=\"Zambia\">Zambia</option>\n<option value=\"Zimbabwe\">Zimbabwe</option></select>",
  332. country_select("post", "origin")
  333. )
  334. end
  335. def test_time_zone_select
  336. @firm = Firm.new("D")
  337. html = time_zone_select( "firm", "time_zone" )
  338. assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
  339. "<option value=\"A\">A</option>\n" +
  340. "<option value=\"B\">B</option>\n" +
  341. "<option value=\"C\">C</option>\n" +
  342. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  343. "<option value=\"E\">E</option>" +
  344. "</select>",
  345. html
  346. end
  347. def test_time_zone_select_under_fields_for
  348. @firm = Firm.new("D")
  349. _erbout = ''
  350. fields_for :firm, @firm do |f|
  351. _erbout.concat f.time_zone_select(:time_zone)
  352. end
  353. assert_dom_equal(
  354. "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
  355. "<option value=\"A\">A</option>\n" +
  356. "<option value=\"B\">B</option>\n" +
  357. "<option value=\"C\">C</option>\n" +
  358. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  359. "<option value=\"E\">E</option>" +
  360. "</select>",
  361. _erbout
  362. )
  363. end
  364. def test_time_zone_select_with_blank
  365. @firm = Firm.new("D")
  366. html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
  367. assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
  368. "<option value=\"\"></option>\n" +
  369. "<option value=\"A\">A</option>\n" +
  370. "<option value=\"B\">B</option>\n" +
  371. "<option value=\"C\">C</option>\n" +
  372. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  373. "<option value=\"E\">E</option>" +
  374. "</select>",
  375. html
  376. end
  377. def test_time_zone_select_with_style
  378. @firm = Firm.new("D")
  379. html = time_zone_select("firm", "time_zone", nil, {},
  380. "style" => "color: red")
  381. assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
  382. "<option value=\"A\">A</option>\n" +
  383. "<option value=\"B\">B</option>\n" +
  384. "<option value=\"C\">C</option>\n" +
  385. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  386. "<option value=\"E\">E</option>" +
  387. "</select>",
  388. html
  389. assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
  390. :style => "color: red")
  391. end
  392. def test_time_zone_select_with_blank_and_style
  393. @firm = Firm.new("D")
  394. html = time_zone_select("firm", "time_zone", nil,
  395. { :include_blank => true }, "style" => "color: red")
  396. assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
  397. "<option value=\"\"></option>\n" +
  398. "<option value=\"A\">A</option>\n" +
  399. "<option value=\"B\">B</option>\n" +
  400. "<option value=\"C\">C</option>\n" +
  401. "<option value=\"D\" selected=\"selected\">D</option>\n" +
  402. "<option value=\"E\">E</option>" +
  403. "</select>",
  404. html
  405. assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
  406. { :include_blank => true }, :style => "color: red")
  407. end
  408. def test_time_zone_select_with_priority_zones
  409. @firm = Firm.new("D")
  410. zones = [ TimeZone.new("A"), TimeZone.new("D") ]
  411. html = time_zone_select("firm", "time_zone", zones )
  412. assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
  413. "<option value=\"A\">A</option>\n" +
  414. "<option value=\"D\" selected=\"selected\">D</option>" +
  415. "<option value=\"\">-------------</option>\n" +
  416. "<option value=\"B\">B</option>\n" +
  417. "<option value=\"C\">C</option>\n" +
  418. "<option value=\"E\">E</option>" +
  419. "</select>",
  420. html
  421. end
  422. end