diff options
Diffstat (limited to 'actionpack/test/template/form_options_helper_test.rb')
-rw-r--r-- | actionpack/test/template/form_options_helper_test.rb | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/actionpack/test/template/form_options_helper_test.rb b/actionpack/test/template/form_options_helper_test.rb index 8894e46865..606a5fe35b 100644 --- a/actionpack/test/template/form_options_helper_test.rb +++ b/actionpack/test/template/form_options_helper_test.rb @@ -1,6 +1,26 @@ require 'test/unit' require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_options_helper' +class TimeZone + attr_reader :name + + def initialize( name ) + @name = name + end + + def self.all + [ "A", "B", "C", "D", "E" ].map { |s| new s } + end + + def ==( z ) + z && @name == z.name + end + + def to_s + @name + end +end + class FormOptionsHelperTest < Test::Unit::TestCase include ActionView::Helpers::FormOptionsHelper @@ -8,6 +28,7 @@ class FormOptionsHelperTest < Test::Unit::TestCase Post = Struct.new('Post', :title, :author_name, :body, :secret, :written_on, :category, :origin) Continent = Struct.new('Continent', :continent_name, :countries) Country = Struct.new('Country', :country_id, :country_name) + Firm = Struct.new('Firm', :time_zone) $VERBOSE = old_verbose def test_collection_options @@ -104,6 +125,72 @@ class FormOptionsHelperTest < Test::Unit::TestCase ) end + def test_time_zone_options_no_parms + opts = time_zone_options_for_select + assert_equal "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option>D</option>\n" + + "<option>E</option>", + opts + end + + def test_time_zone_options_with_selected + opts = time_zone_options_for_select( TimeZone.new( "D" ) ) + assert_equal "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option selected=\"selected\">D</option>\n" + + "<option>E</option>", + opts + end + + def test_time_zone_options_with_unknown_selected + opts = time_zone_options_for_select( TimeZone.new( "K" ) ) + assert_equal "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option>D</option>\n" + + "<option>E</option>", + opts + end + + def test_time_zone_options_with_priority_zones + zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] + opts = time_zone_options_for_select( nil, zones ) + assert_equal "<option>B</option>\n" + + "<option>E</option>" + + "<option>-------------</option>\n" + + "<option>A</option>\n" + + "<option>C</option>\n" + + "<option>D</option>", + opts + end + + def test_time_zone_options_with_selected_priority_zones + zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] + opts = time_zone_options_for_select( TimeZone.new("E"), zones ) + assert_equal "<option>B</option>\n" + + "<option selected=\"selected\">E</option>" + + "<option>-------------</option>\n" + + "<option>A</option>\n" + + "<option>C</option>\n" + + "<option>D</option>", + opts + end + + def test_time_zone_options_with_unselected_priority_zones + zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] + opts = time_zone_options_for_select( TimeZone.new("C"), zones ) + assert_equal "<option>B</option>\n" + + "<option>E</option>" + + "<option>-------------</option>\n" + + "<option>A</option>\n" + + "<option selected=\"selected\">C</option>\n" + + "<option>D</option>", + opts + end + def test_select @post = Post.new @post.category = "<mus>" @@ -162,4 +249,75 @@ class FormOptionsHelperTest < Test::Unit::TestCase country_select("post", "origin") ) end + + def test_time_zone_select + @firm = Firm.new( TimeZone.new( "D" ) ) + html = time_zone_select( "firm", "time_zone" ) + assert_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" + + "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option selected=\"selected\">D</option>\n" + + "<option>E</option>" + + "</select>", + html + end + + def test_time_zone_select_with_blank + @firm = Firm.new(TimeZone.new("D")) + html = time_zone_select("firm", "time_zone", nil, :include_blank => true) + assert_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" + + "<option></option>\n" + + "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option selected=\"selected\">D</option>\n" + + "<option>E</option>" + + "</select>", + html + end + + def test_time_zone_select_with_style + @firm = Firm.new(TimeZone.new("D")) + html = time_zone_select("firm", "time_zone", nil, {}, + "style" => "color: red") + assert_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" + + "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option selected=\"selected\">D</option>\n" + + "<option>E</option>" + + "</select>", + html + end + + def test_time_zone_select_with_blank_and_style + @firm = Firm.new(TimeZone.new("D")) + html = time_zone_select("firm", "time_zone", nil, + { :include_blank => true }, "style" => "color: red") + assert_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" + + "<option></option>\n" + + "<option>A</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option selected=\"selected\">D</option>\n" + + "<option>E</option>" + + "</select>", + html + end + + def test_time_zone_select_with_priority_zones + @firm = Firm.new(TimeZone.new("D")) + zones = [ TimeZone.new("A"), TimeZone.new("D") ] + html = time_zone_select("firm", "time_zone", zones ) + assert_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" + + "<option>A</option>\n" + + "<option selected=\"selected\">D</option>" + + "<option>-------------</option>\n" + + "<option>B</option>\n" + + "<option>C</option>\n" + + "<option>E</option>" + + "</select>", + html + end end |