1 require 'abstract_unit'
3 TZInfo
::Timezone.cattr_reader
:loaded_zones
5 uses_mocha
"FormOptionsHelperTest" do
6 class FormOptionsHelperTest
< ActionView
::TestCase
7 tests ActionView
::Helpers::FormOptionsHelper
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)
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
)
23 ActiveSupport
::TimeZone.stubs(:all).returns(@fake_timezones)
26 def test_collection_options
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!")
34 "<option value=\"<Abe>\"><Abe> 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")
40 def test_collection_options_with_preselected_value
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!")
48 "<option value=\"<Abe>\"><Abe> 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")
53 def test_collection_options_with_preselected_value_array
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!")
61 "<option value=\"<Abe>\"><Abe> 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" ])
66 def test_array_options_for_select
68 "<option value=\"<Denmark>\"><Denmark></option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
69 options_for_select([ "<Denmark>", "USA", "Sweden" ])
73 def test_array_options_for_select_with_selection
75 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
76 options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
80 def test_array_options_for_select_with_selection_array
82 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>",
83 options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
87 def test_array_options_for_string_include_in_other_string_bug_fix
89 "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
90 options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
93 "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
94 options_for_select([ "ruby", "rubyonrails" ], "ruby")
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")
102 def test_hash_options_for_select
104 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
105 options_for_select("$" => "Dollar", "<DKR>" => "<Kroner>").split("\n").sort.join("\n")
108 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
109 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar").split("\n").sort.join("\n")
112 "<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
113 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]).split("\n").sort.join("\n")
117 def test_ducktyped_options_for_select
118 quack = Struct.new(:first, :last)
120 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
121 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
124 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
125 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
128 "<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
129 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
133 def test_option_groups_from_collection_for_select
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")] )
140 "<optgroup label=\"<Africa>\"><option value=\"<sa>\"><South Africa></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")
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>",
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>",
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>",
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>",
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>",
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>",
213 @post.category = "<mus>"
215 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
216 select("post", "category", %w( abe <mus> hest))
220 def test_select_under_fields_for
222 @post.category = "<mus>"
224 fields_for :post, @post do |f|
225 concat f.select(:category, %w( abe <mus> hest))
229 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
234 def test_select_under_fields_for_with_index
236 @post.category = "<mus>"
238 fields_for :post, @post, :index => 108 do |f|
239 concat f.select(:category, %w( abe <mus> hest))
243 "<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
248 def test_select_under_fields_for_with_auto_index
250 @post.category = "<mus>"
251 def @post.to_param; 108; end
253 fields_for "post[]", @post do |f|
254 concat f.select(:category, %w( abe <mus> hest))
258 "<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
263 def test_select_with_blank
265 @post.category = "<mus>"
267 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
268 select("post", "category", %w( abe <mus> hest), :include_blank => true)
272 def test_select_with_blank_as_string
274 @post.category = "<mus>"
276 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">None</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
277 select("post", "category", %w( abe <mus> hest), :include_blank => 'None')
281 def test_select_with_default_prompt
285 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
286 select("post", "category", %w( abe <mus> hest), :prompt => true)
290 def test_select_no_prompt_when_select_has_value
292 @post.category = "<mus>"
294 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
295 select("post", "category", %w( abe <mus> hest), :prompt => true)
299 def test_select_with_given_prompt
303 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
304 select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
308 def test_select_with_prompt_and_blank
312 "<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=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
313 select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
317 def test_select_with_selected_value
319 @post.category = "<mus>"
321 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" selected=\"selected\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
322 select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
326 def test_select_with_index_option
330 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>"
334 select("album[]", "genre", %w[rap rock country], {}, { :index => nil })
338 def test_select_with_selected_nil
340 @post.category = "<mus>"
342 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
343 select("post", "category", %w( abe <mus> hest ), :selected => nil)
347 def test_collection_select
349 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
350 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
351 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
355 @post.author_name = "Babe"
358 "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
359 collection_select("post", "author_name", @posts, "author_name", "author_name")
363 def test_collection_select_under_fields_for
365 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
366 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
367 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
371 @post.author_name = "Babe"
373 fields_for :post, @post do |f|
374 concat f.collection_select(:author_name, @posts, :author_name, :author_name)
378 "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
383 def test_collection_select_under_fields_for_with_index
385 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
386 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
387 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
391 @post.author_name = "Babe"
393 fields_for :post, @post, :index => 815 do |f|
394 concat f.collection_select(:author_name, @posts, :author_name, :author_name)
398 "<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
403 def test_collection_select_under_fields_for_with_auto_index
405 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
406 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
407 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
411 @post.author_name = "Babe"
412 def @post.to_param; 815; end
414 fields_for "post[]", @post do |f|
415 concat f.collection_select(:author_name, @posts, :author_name, :author_name)
419 "<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
424 def test_collection_select_with_blank_and_style
426 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
427 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
428 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
432 @post.author_name = "Babe"
435 "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\"></option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
436 collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
440 def test_collection_select_with_blank_as_string_and_style
442 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
443 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
444 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
448 @post.author_name = "Babe"
451 "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\">No Selection</option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
452 collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => 'No Selection' }, "style" => "width: 200px")
456 def test_collection_select_with_multiple_option_appends_array_brackets
458 Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
459 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
460 Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
464 @post.author_name = "Babe"
466 expected = "<select id=\"post_author_name\" name=\"post[author_name][]\" multiple=\"multiple\"><option value=\"\"></option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>"
468 # Should suffix default name with [].
469 assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
471 # Shouldn't suffix custom name with [].
472 assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
475 def test_time_zone_select
476 @firm = Firm.new("D")
477 html = time_zone_select( "firm", "time_zone" )
478 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
479 "<option value=\"A\">A</option>\n" +
480 "<option value=\"B\">B</option>\n" +
481 "<option value=\"C\">C</option>\n" +
482 "<option value=\"D\" selected=\"selected\">D</option>\n" +
483 "<option value=\"E\">E</option>" +
488 def test_time_zone_select_under_fields_for
489 @firm = Firm.new("D")
491 fields_for :firm, @firm do |f|
492 concat f.time_zone_select(:time_zone)
496 "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
497 "<option value=\"A\">A</option>\n" +
498 "<option value=\"B\">B</option>\n" +
499 "<option value=\"C\">C</option>\n" +
500 "<option value=\"D\" selected=\"selected\">D</option>\n" +
501 "<option value=\"E\">E</option>" +
507 def test_time_zone_select_under_fields_for_with_index
508 @firm = Firm.new("D")
510 fields_for :firm, @firm, :index => 305 do |f|
511 concat f.time_zone_select(:time_zone)
515 "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
516 "<option value=\"A\">A</option>\n" +
517 "<option value=\"B\">B</option>\n" +
518 "<option value=\"C\">C</option>\n" +
519 "<option value=\"D\" selected=\"selected\">D</option>\n" +
520 "<option value=\"E\">E</option>" +
526 def test_time_zone_select_under_fields_for_with_auto_index
527 @firm = Firm.new("D")
528 def @firm.to_param; 305; end
530 fields_for "firm[]", @firm do |f|
531 concat f.time_zone_select(:time_zone)
535 "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
536 "<option value=\"A\">A</option>\n" +
537 "<option value=\"B\">B</option>\n" +
538 "<option value=\"C\">C</option>\n" +
539 "<option value=\"D\" selected=\"selected\">D</option>\n" +
540 "<option value=\"E\">E</option>" +
546 def test_time_zone_select_with_blank
547 @firm = Firm.new("D")
548 html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
549 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
550 "<option value=\"\"></option>\n" +
551 "<option value=\"A\">A</option>\n" +
552 "<option value=\"B\">B</option>\n" +
553 "<option value=\"C\">C</option>\n" +
554 "<option value=\"D\" selected=\"selected\">D</option>\n" +
555 "<option value=\"E\">E</option>" +
560 def test_time_zone_select_with_blank_as_string
561 @firm = Firm.new("D")
562 html = time_zone_select("firm", "time_zone", nil, :include_blank => 'No Zone')
563 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
564 "<option value=\"\">No Zone</option>\n" +
565 "<option value=\"A\">A</option>\n" +
566 "<option value=\"B\">B</option>\n" +
567 "<option value=\"C\">C</option>\n" +
568 "<option value=\"D\" selected=\"selected\">D</option>\n" +
569 "<option value=\"E\">E</option>" +
574 def test_time_zone_select_with_style
575 @firm = Firm.new("D")
576 html = time_zone_select("firm", "time_zone", nil, {},
577 "style" => "color: red")
578 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
579 "<option value=\"A\">A</option>\n" +
580 "<option value=\"B\">B</option>\n" +
581 "<option value=\"C\">C</option>\n" +
582 "<option value=\"D\" selected=\"selected\">D</option>\n" +
583 "<option value=\"E\">E</option>" +
586 assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
587 :style => "color: red")
590 def test_time_zone_select_with_blank_and_style
591 @firm = Firm.new("D")
592 html = time_zone_select("firm", "time_zone", nil,
593 { :include_blank => true }, "style" => "color: red")
594 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
595 "<option value=\"\"></option>\n" +
596 "<option value=\"A\">A</option>\n" +
597 "<option value=\"B\">B</option>\n" +
598 "<option value=\"C\">C</option>\n" +
599 "<option value=\"D\" selected=\"selected\">D</option>\n" +
600 "<option value=\"E\">E</option>" +
603 assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
604 { :include_blank => true }, :style => "color: red")
607 def test_time_zone_select_with_blank_as_string_and_style
608 @firm = Firm.new("D")
609 html = time_zone_select("firm", "time_zone", nil,
610 { :include_blank => 'No Zone' }, "style" => "color: red")
611 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
612 "<option value=\"\">No Zone</option>\n" +
613 "<option value=\"A\">A</option>\n" +
614 "<option value=\"B\">B</option>\n" +
615 "<option value=\"C\">C</option>\n" +
616 "<option value=\"D\" selected=\"selected\">D</option>\n" +
617 "<option value=\"E\">E</option>" +
620 assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
621 { :include_blank => 'No Zone' }, :style => "color: red")
624 def test_time_zone_select_with_priority_zones
625 @firm = Firm.new("D")
626 zones = [ ActiveSupport::TimeZone.new("A"), ActiveSupport::TimeZone.new("D") ]
627 html = time_zone_select("firm", "time_zone", zones )
628 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
629 "<option value=\"A\">A</option>\n" +
630 "<option value=\"D\" selected=\"selected\">D</option>" +
631 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
632 "<option value=\"B\">B</option>\n" +
633 "<option value=\"C\">C</option>\n" +
634 "<option value=\"E\">E</option>" +
639 def test_time_zone_select_with_priority_zones_as_regexp
640 @firm = Firm.new("D")
641 @fake_timezones.each_with_index do |tz, i|
642 tz.stubs(:=~).returns(i.zero? || i == 3)
645 html = time_zone_select("firm", "time_zone", /A|D/)
646 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
647 "<option value=\"A\">A</option>\n" +
648 "<option value=\"D\" selected=\"selected\">D</option>" +
649 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
650 "<option value=\"B\">B</option>\n" +
651 "<option value=\"C\">C</option>\n" +
652 "<option value=\"E\">E</option>" +
657 def test_time_zone_select_with_default_time_zone_and_nil_value
659 @firm.time_zone = nil
660 html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
661 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
662 "<option value=\"A\">A</option>\n" +
663 "<option value=\"B\" selected=\"selected\">B</option>\n" +
664 "<option value=\"C\">C</option>\n" +
665 "<option value=\"D\">D</option>\n" +
666 "<option value=\"E\">E</option>" +
671 def test_time_zone_select_with_default_time_zone_and_value
672 @firm = Firm.new('D')
673 html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
674 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
675 "<option value=\"A\">A</option>\n" +
676 "<option value=\"B\">B</option>\n" +
677 "<option value=\"C\">C</option>\n" +
678 "<option value=\"D\" selected=\"selected\">D</option>\n" +
679 "<option value=\"E\">E</option>" +