Skip to content

Commit

Permalink
Merge pull request #4641 from rafaelfranca/date_select-fix-3-2
Browse files Browse the repository at this point in the history
date_select fixes [3-2-stable]
  • Loading branch information
josevalim committed Jan 24, 2012
2 parents e0fe62b + c4b7ca0 commit 5a66d33
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
6 changes: 3 additions & 3 deletions actionpack/lib/action_view/helpers/date_helper.rb
Expand Up @@ -734,15 +734,15 @@ def select_hour


def select_day def select_day
if @options[:use_hidden] || @options[:discard_day] if @options[:use_hidden] || @options[:discard_day]
build_hidden(:day, day) build_hidden(:day, day || 1)
else else
build_options_and_select(:day, day, :start => 1, :end => 31, :leading_zeros => false, :use_two_digit_numbers => @options[:use_two_digit_numbers]) build_options_and_select(:day, day, :start => 1, :end => 31, :leading_zeros => false, :use_two_digit_numbers => @options[:use_two_digit_numbers])
end end
end end


def select_month def select_month
if @options[:use_hidden] || @options[:discard_month] if @options[:use_hidden] || @options[:discard_month]
build_hidden(:month, month) build_hidden(:month, month || 1)
else else
month_options = [] month_options = []
1.upto(12) do |month_number| 1.upto(12) do |month_number|
Expand All @@ -756,7 +756,7 @@ def select_month


def select_year def select_year
if !@datetime || @datetime == 0 if !@datetime || @datetime == 0
val = '' val = '1'
middle_year = Date.today.year middle_year = Date.today.year
else else
val = middle_year = year val = middle_year = year
Expand Down
39 changes: 38 additions & 1 deletion actionpack/test/template/date_helper_test.rb
Expand Up @@ -1587,7 +1587,7 @@ def test_date_select_with_nil_and_blank_and_order
start_year = Time.now.year-5 start_year = Time.now.year-5
end_year = Time.now.year+5 end_year = Time.now.year+5


expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n" expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i" value="1"/>' + "\n"
expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n} expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
expected << "<option value=\"\"></option>\n" expected << "<option value=\"\"></option>\n"
start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) } start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
Expand All @@ -1601,6 +1601,43 @@ def test_date_select_with_nil_and_blank_and_order
assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true) assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true)
end end


def test_date_select_with_nil_and_blank_and_discard_month
@post = Post.new

start_year = Time.now.year-5
end_year = Time.now.year+5

expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
expected << "<option value=\"\"></option>\n"
start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
expected << "</select>\n"
expected << '<input name="post[written_on(2i)]" type="hidden" id="post_written_on_2i" value="1"/>' + "\n"
expected << '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i" value="1"/>' + "\n"

assert_dom_equal expected, date_select("post", "written_on", :discard_month => true, :include_blank=>true)
end

def test_date_select_with_nil_and_blank_and_discard_year
@post = Post.new

start_year = Time.now.year-5
end_year = Time.now.year+5

expected = '<input id="post_written_on_1i" name="post[written_on(1i)]" type="hidden" value="1" />' + "\n"

expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
expected << "<option value=\"\"></option>\n"
1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
expected << "</select>\n"

expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
expected << "<option value=\"\"></option>\n"
1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
expected << "</select>\n"

assert_dom_equal expected, date_select("post", "written_on", :discard_year => true, :include_blank=>true)
end

def test_date_select_cant_override_discard_hour def test_date_select_cant_override_discard_hour
@post = Post.new @post = Post.new
@post.written_on = Date.new(2004, 6, 15) @post.written_on = Date.new(2004, 6, 15)
Expand Down

0 comments on commit 5a66d33

Please sign in to comment.