1 require 'abstract_unit'
4 TZInfo
::Timezone.cattr_reader
:loaded_zones
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 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
29 options_from_collection_for_select(dummy_posts
, "author_name", "title")
34 def test_collection_options_with_preselected_value
36 "<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>",
37 options_from_collection_for_select(dummy_posts
, "author_name", "title", "Babe")
41 def test_collection_options_with_preselected_value_array
43 "<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>",
44 options_from_collection_for_select(dummy_posts
, "author_name", "title", [ "Babe", "Cabe" ])
48 def test_collection_options_with_proc_for_selected
50 "<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>",
51 options_from_collection_for_select(dummy_posts
, "author_name", "title", lambda
{|p
| p
.author_name
== 'Babe' })
55 def test_collection_options_with_disabled_value
57 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
58 options_from_collection_for_select(dummy_posts
, "author_name", "title", :disabled => "Babe")
62 def test_collection_options_with_disabled_array
64 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
65 options_from_collection_for_select(dummy_posts
, "author_name", "title", :disabled => [ "Babe", "Cabe" ])
69 def test_collection_options_with_preselected_and_disabled_value
71 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>",
72 options_from_collection_for_select(dummy_posts
, "author_name", "title", :selected => "Cabe", :disabled => "Babe")
76 def test_collection_options_with_proc_for_disabled
78 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
79 options_from_collection_for_select(dummy_posts
, "author_name", "title", :disabled => lambda
{|p
| %w(Babe Cabe
).include? p
.author_name
})
83 def test_array_options_for_select
85 "<option value=\"<Denmark>\"><Denmark></option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
86 options_for_select([ "<Denmark>", "USA", "Sweden" ])
90 def test_array_options_for_select_with_selection
92 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
93 options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
97 def test_array_options_for_select_with_selection_array
99 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>",
100 options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
104 def test_array_options_for_select_with_disabled_value
106 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
107 options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => "<USA>")
111 def test_array_options_for_select_with_disabled_array
113 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\" disabled=\"disabled\">Sweden</option>",
114 options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => ["<USA>", "Sweden"])
118 def test_array_options_for_select_with_selection_and_disabled_value
120 "<option value=\"Denmark\" selected=\"selected\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
121 options_for_select([ "Denmark", "<USA>", "Sweden" ], :selected => "Denmark", :disabled => "<USA>")
125 def test_array_options_for_string_include_in_other_string_bug_fix
127 "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
128 options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
131 "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
132 options_for_select([ "ruby", "rubyonrails" ], "ruby")
135 %(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
136 options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
140 def test_hash_options_for_select
142 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
143 options_for_select("$" => "Dollar", "<DKR>" => "<Kroner>").split("\n").sort.join("\n")
146 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
147 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar").split("\n").sort.join("\n")
150 "<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
151 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]).split("\n").sort.join("\n")
155 def test_ducktyped_options_for_select
156 quack = Struct.new(:first, :last)
158 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
159 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
162 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
163 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
166 "<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
167 options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
171 def test_option_groups_from_collection_for_select
173 Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
174 Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
178 "<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>",
179 option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk")
183 def test_grouped_options_for_select_with_array
185 "<optgroup label=\"North America\"><option value=\"US\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup><optgroup label=\"Europe\"><option value=\"GB\">Great Britain</option>\n<option value=\"Germany\">Germany</option></optgroup>",
186 grouped_options_for_select([
188 [['United States','US'],"Canada"]],
190 [["Great Britain","GB"], "Germany"]]
195 def test_grouped_options_for_select_with_selected_and_prompt
197 "<option value=\"\">Choose a product...</option><optgroup label=\"Hats\"><option value=\"Baseball Cap\">Baseball Cap</option>\n<option selected=\"selected\" value=\"Cowboy Hat\">Cowboy Hat</option></optgroup>",
198 grouped_options_for_select([["Hats", ["Baseball Cap","Cowboy Hat"]]], "Cowboy Hat", "Choose a product...")
202 def test_optgroups_with_with_options_with_hash
204 "<optgroup label=\"Europe\"><option value=\"Denmark\">Denmark</option>\n<option value=\"Germany\">Germany</option></optgroup><optgroup label=\"North America\"><option value=\"United States\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup>",
205 grouped_options_for_select({'North America' => ['United States','Canada'], 'Europe' => ['Denmark','Germany']})
209 def test_time_zone_options_no_parms
210 opts = time_zone_options_for_select
211 assert_dom_equal "<option value=\"A\">A</option>\n" +
212 "<option value=\"B\">B</option>\n" +
213 "<option value=\"C\">C</option>\n" +
214 "<option value=\"D\">D</option>\n" +
215 "<option value=\"E\">E</option>",
219 def test_time_zone_options_with_selected
220 opts = time_zone_options_for_select( "D" )
221 assert_dom_equal "<option value=\"A\">A</option>\n" +
222 "<option value=\"B\">B</option>\n" +
223 "<option value=\"C\">C</option>\n" +
224 "<option value=\"D\" selected=\"selected\">D</option>\n" +
225 "<option value=\"E\">E</option>",
229 def test_time_zone_options_with_unknown_selected
230 opts = time_zone_options_for_select( "K" )
231 assert_dom_equal "<option value=\"A\">A</option>\n" +
232 "<option value=\"B\">B</option>\n" +
233 "<option value=\"C\">C</option>\n" +
234 "<option value=\"D\">D</option>\n" +
235 "<option value=\"E\">E</option>",
239 def test_time_zone_options_with_priority_zones
240 zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
241 opts = time_zone_options_for_select( nil, zones )
242 assert_dom_equal "<option value=\"B\">B</option>\n" +
243 "<option value=\"E\">E</option>" +
244 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
245 "<option value=\"A\">A</option>\n" +
246 "<option value=\"C\">C</option>\n" +
247 "<option value=\"D\">D</option>",
251 def test_time_zone_options_with_selected_priority_zones
252 zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
253 opts = time_zone_options_for_select( "E", zones )
254 assert_dom_equal "<option value=\"B\">B</option>\n" +
255 "<option value=\"E\" selected=\"selected\">E</option>" +
256 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
257 "<option value=\"A\">A</option>\n" +
258 "<option value=\"C\">C</option>\n" +
259 "<option value=\"D\">D</option>",
263 def test_time_zone_options_with_unselected_priority_zones
264 zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
265 opts = time_zone_options_for_select( "C", zones )
266 assert_dom_equal "<option value=\"B\">B</option>\n" +
267 "<option value=\"E\">E</option>" +
268 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
269 "<option value=\"A\">A</option>\n" +
270 "<option value=\"C\" selected=\"selected\">C</option>\n" +
271 "<option value=\"D\">D</option>",
277 @post.category = "<mus>"
279 "<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>",
280 select("post", "category", %w( abe <mus> hest))
284 def test_select_under_fields_for
286 @post.category = "<mus>"
288 fields_for :post, @post do |f|
289 concat f.select(:category, %w( abe <mus> hest))
293 "<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>",
298 def test_select_under_fields_for_with_index
300 @post.category = "<mus>"
302 fields_for :post, @post, :index => 108 do |f|
303 concat f.select(:category, %w( abe <mus> hest))
307 "<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>",
312 def test_select_under_fields_for_with_auto_index
314 @post.category = "<mus>"
315 def @post.to_param; 108; end
317 fields_for "post[]", @post do |f|
318 concat f.select(:category, %w( abe <mus> hest))
322 "<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>",
327 def test_select_with_blank
329 @post.category = "<mus>"
331 "<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>",
332 select("post", "category", %w( abe <mus> hest), :include_blank => true)
336 def test_select_with_blank_as_string
338 @post.category = "<mus>"
340 "<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>",
341 select("post", "category", %w( abe <mus> hest), :include_blank => 'None')
345 def test_select_with_default_prompt
349 "<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>",
350 select("post", "category", %w( abe <mus> hest), :prompt => true)
354 def test_select_no_prompt_when_select_has_value
356 @post.category = "<mus>"
358 "<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>",
359 select("post", "category", %w( abe <mus> hest), :prompt => true)
363 def test_select_with_given_prompt
367 "<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>",
368 select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
372 def test_select_with_prompt_and_blank
376 "<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>",
377 select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
381 def test_select_with_selected_value
383 @post.category = "<mus>"
385 "<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>",
386 select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
390 def test_select_with_index_option
394 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>"
398 select("album[]", "genre", %w[rap rock country], {}, { :index => nil })
402 def test_select_with_selected_nil
404 @post.category = "<mus>"
406 "<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>",
407 select("post", "category", %w( abe <mus> hest ), :selected => nil)
411 def test_select_with_disabled_value
413 @post.category = "<mus>"
415 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
416 select("post", "category", %w( abe <mus> hest ), :disabled => 'hest')
420 def test_select_with_disabled_array
422 @post.category = "<mus>"
424 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" disabled=\"disabled\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
425 select("post", "category", %w( abe <mus> hest ), :disabled => ['hest', 'abe'])
429 def test_collection_select
431 @post.author_name = "Babe"
434 "<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>",
435 collection_select("post", "author_name", dummy_posts, "author_name", "author_name")
439 def test_collection_select_under_fields_for
441 @post.author_name = "Babe"
443 fields_for :post, @post do |f|
444 concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
448 "<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>",
453 def test_collection_select_under_fields_for_with_index
455 @post.author_name = "Babe"
457 fields_for :post, @post, :index => 815 do |f|
458 concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
462 "<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>",
467 def test_collection_select_under_fields_for_with_auto_index
469 @post.author_name = "Babe"
470 def @post.to_param; 815; end
472 fields_for "post[]", @post do |f|
473 concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
477 "<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>",
482 def test_collection_select_with_blank_and_style
484 @post.author_name = "Babe"
487 "<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>",
488 collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
492 def test_collection_select_with_blank_as_string_and_style
494 @post.author_name = "Babe"
497 "<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>",
498 collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => 'No Selection' }, "style" => "width: 200px")
502 def test_collection_select_with_multiple_option_appends_array_brackets
504 @post.author_name = "Babe"
506 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>"
508 # Should suffix default name with [].
509 assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
511 # Shouldn't suffix custom name with [].
512 assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
515 def test_collection_select_with_blank_and_selected
517 @post.author_name = "Babe"
520 %{<select id="post_author_name" name="post[author_name]"><option value=""></option>\n<option value="<Abe>" selected="selected"><Abe></option>\n<option value="Babe">Babe</option>\n<option value="Cabe">Cabe</option></select>},
521 collection_select("post", "author_name", dummy_posts, "author_name", "author_name", {:include_blank => true, :selected => "<Abe>"})
525 def test_collection_select_with_disabled
527 @post.author_name = "Babe"
530 "<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\" disabled=\"disabled\">Cabe</option></select>",
531 collection_select("post", "author_name", dummy_posts, "author_name", "author_name", :disabled => 'Cabe')
535 def test_time_zone_select
536 @firm = Firm.new("D")
537 html = time_zone_select( "firm", "time_zone" )
538 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
539 "<option value=\"A\">A</option>\n" +
540 "<option value=\"B\">B</option>\n" +
541 "<option value=\"C\">C</option>\n" +
542 "<option value=\"D\" selected=\"selected\">D</option>\n" +
543 "<option value=\"E\">E</option>" +
548 def test_time_zone_select_under_fields_for
549 @firm = Firm.new("D")
551 fields_for :firm, @firm do |f|
552 concat f.time_zone_select(:time_zone)
556 "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
557 "<option value=\"A\">A</option>\n" +
558 "<option value=\"B\">B</option>\n" +
559 "<option value=\"C\">C</option>\n" +
560 "<option value=\"D\" selected=\"selected\">D</option>\n" +
561 "<option value=\"E\">E</option>" +
567 def test_time_zone_select_under_fields_for_with_index
568 @firm = Firm.new("D")
570 fields_for :firm, @firm, :index => 305 do |f|
571 concat f.time_zone_select(:time_zone)
575 "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
576 "<option value=\"A\">A</option>\n" +
577 "<option value=\"B\">B</option>\n" +
578 "<option value=\"C\">C</option>\n" +
579 "<option value=\"D\" selected=\"selected\">D</option>\n" +
580 "<option value=\"E\">E</option>" +
586 def test_time_zone_select_under_fields_for_with_auto_index
587 @firm = Firm.new("D")
588 def @firm.to_param; 305; end
590 fields_for "firm[]", @firm do |f|
591 concat f.time_zone_select(:time_zone)
595 "<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
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>" +
606 def test_time_zone_select_with_blank
607 @firm = Firm.new("D")
608 html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
609 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
610 "<option value=\"\"></option>\n" +
611 "<option value=\"A\">A</option>\n" +
612 "<option value=\"B\">B</option>\n" +
613 "<option value=\"C\">C</option>\n" +
614 "<option value=\"D\" selected=\"selected\">D</option>\n" +
615 "<option value=\"E\">E</option>" +
620 def test_time_zone_select_with_blank_as_string
621 @firm = Firm.new("D")
622 html = time_zone_select("firm", "time_zone", nil, :include_blank => 'No Zone')
623 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
624 "<option value=\"\">No Zone</option>\n" +
625 "<option value=\"A\">A</option>\n" +
626 "<option value=\"B\">B</option>\n" +
627 "<option value=\"C\">C</option>\n" +
628 "<option value=\"D\" selected=\"selected\">D</option>\n" +
629 "<option value=\"E\">E</option>" +
634 def test_time_zone_select_with_style
635 @firm = Firm.new("D")
636 html = time_zone_select("firm", "time_zone", nil, {},
637 "style" => "color: red")
638 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
639 "<option value=\"A\">A</option>\n" +
640 "<option value=\"B\">B</option>\n" +
641 "<option value=\"C\">C</option>\n" +
642 "<option value=\"D\" selected=\"selected\">D</option>\n" +
643 "<option value=\"E\">E</option>" +
646 assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
647 :style => "color: red")
650 def test_time_zone_select_with_blank_and_style
651 @firm = Firm.new("D")
652 html = time_zone_select("firm", "time_zone", nil,
653 { :include_blank => true }, "style" => "color: red")
654 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
655 "<option value=\"\"></option>\n" +
656 "<option value=\"A\">A</option>\n" +
657 "<option value=\"B\">B</option>\n" +
658 "<option value=\"C\">C</option>\n" +
659 "<option value=\"D\" selected=\"selected\">D</option>\n" +
660 "<option value=\"E\">E</option>" +
663 assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
664 { :include_blank => true }, :style => "color: red")
667 def test_time_zone_select_with_blank_as_string_and_style
668 @firm = Firm.new("D")
669 html = time_zone_select("firm", "time_zone", nil,
670 { :include_blank => 'No Zone' }, "style" => "color: red")
671 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
672 "<option value=\"\">No Zone</option>\n" +
673 "<option value=\"A\">A</option>\n" +
674 "<option value=\"B\">B</option>\n" +
675 "<option value=\"C\">C</option>\n" +
676 "<option value=\"D\" selected=\"selected\">D</option>\n" +
677 "<option value=\"E\">E</option>" +
680 assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
681 { :include_blank => 'No Zone' }, :style => "color: red")
684 def test_time_zone_select_with_priority_zones
685 @firm = Firm.new("D")
686 zones = [ ActiveSupport::TimeZone.new("A"), ActiveSupport::TimeZone.new("D") ]
687 html = time_zone_select("firm", "time_zone", zones )
688 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
689 "<option value=\"A\">A</option>\n" +
690 "<option value=\"D\" selected=\"selected\">D</option>" +
691 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
692 "<option value=\"B\">B</option>\n" +
693 "<option value=\"C\">C</option>\n" +
694 "<option value=\"E\">E</option>" +
699 def test_time_zone_select_with_priority_zones_as_regexp
700 @firm = Firm.new("D")
701 @fake_timezones.each_with_index do |tz, i|
702 tz.stubs(:=~).returns(i.zero? || i == 3)
705 html = time_zone_select("firm", "time_zone", /A|D/)
706 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
707 "<option value=\"A\">A</option>\n" +
708 "<option value=\"D\" selected=\"selected\">D</option>" +
709 "<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
710 "<option value=\"B\">B</option>\n" +
711 "<option value=\"C\">C</option>\n" +
712 "<option value=\"E\">E</option>" +
717 def test_time_zone_select_with_default_time_zone_and_nil_value
719 @firm.time_zone = nil
720 html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
721 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
722 "<option value=\"A\">A</option>\n" +
723 "<option value=\"B\" selected=\"selected\">B</option>\n" +
724 "<option value=\"C\">C</option>\n" +
725 "<option value=\"D\">D</option>\n" +
726 "<option value=\"E\">E</option>" +
731 def test_time_zone_select_with_default_time_zone_and_value
732 @firm = Firm.new('D')
733 html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
734 assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
735 "<option value=\"A\">A</option>\n" +
736 "<option value=\"B\">B</option>\n" +
737 "<option value=\"C\">C</option>\n" +
738 "<option value=\"D\" selected=\"selected\">D</option>\n" +
739 "<option value=\"E\">E</option>" +
747 [ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
748 Post.new("Babe went home", "Babe", "To a little house", "shh!"),
749 Post.new("Cabe went home", "Cabe", "To a little house", "shh!") ]