aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/template/form_options_helper_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test/template/form_options_helper_test.rb')
-rw-r--r--actionpack/test/template/form_options_helper_test.rb158
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