aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG4
-rwxr-xr-xactionpack/lib/action_view/helpers/date_helper.rb9
-rwxr-xr-xactionpack/test/template/date_helper_test.rb32
3 files changed, 41 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 54030047ba..baba4ae5ed 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,9 @@
*SVN*
+* InstanceTag#default_time_from_options with hash args uses Time.current as default; respects hash settings when time falls in system local spring DST gap [Geoff Buesing]
+
+* select_date defaults to Time.zone.today when config.time_zone is set [Geoff Buesing]
+
* Fixed that TextHelper#text_field would corrypt when raw HTML was used as the value (mchenryc, Kevin Glowacz) [#80]
* Added ActionController::TestCase#rescue_action_in_public! to control whether the action under test should use the regular rescue_action path instead of simply raising the exception inline (great for error testing) [DHH]
diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb
index cbd390421a..8a9c8044ae 100755
--- a/actionpack/lib/action_view/helpers/date_helper.rb
+++ b/actionpack/lib/action_view/helpers/date_helper.rb
@@ -283,7 +283,7 @@ module ActionView
# # prefixed with 'payday' rather than 'date'
# select_datetime(my_date_time, :prefix => 'payday')
#
- def select_date(date = Date.today, options = {}, html_options = {})
+ def select_date(date = Date.current, options = {}, html_options = {})
options[:order] ||= []
[:year, :month, :day].each { |o| options[:order].push(o) unless options[:order].include?(o) }
@@ -683,12 +683,13 @@ module ActionView
default[:min] ||= default[:minute]
default[:sec] ||= default[:second]
+ time = Time.current
+
[:year, :month, :day, :hour, :min, :sec].each do |key|
- default[key] ||= Time.now.send(key)
+ default[key] ||= time.send(key)
end
- Time.mktime(default[:year], default[:month], default[:day],
- default[:hour], default[:min], default[:sec])
+ Time.utc(default[:year], default[:month], default[:day], default[:hour], default[:min], default[:sec])
end
end
end
diff --git a/actionpack/test/template/date_helper_test.rb b/actionpack/test/template/date_helper_test.rb
index 2373600bfe..ae83c7bf47 100755
--- a/actionpack/test/template/date_helper_test.rb
+++ b/actionpack/test/template/date_helper_test.rb
@@ -950,6 +950,15 @@ class DateHelperTest < ActionView::TestCase
expects(:select_minute).with(time, anything, anything).returns('')
select_time
end
+
+ def test_select_date_uses_date_current_as_default
+ date = stub(:year => 2004, :month => 6, :day => 15)
+ Date.expects(:current).returns date
+ expects(:select_year).with(date, anything, anything).returns('')
+ expects(:select_month).with(date, anything, anything).returns('')
+ expects(:select_day).with(date, anything, anything).returns('')
+ select_date
+ end
end
def test_date_select
@@ -1699,4 +1708,27 @@ class DateHelperTest < ActionView::TestCase
assert_dom_equal expected, datetime_select("post", "updated_at", {}, :class => 'selector')
end
+ uses_mocha 'TestInstanceTagDefaultTimeFromOptions' do
+ def test_instance_tag_default_time_from_options_uses_time_current_as_default_when_hash_passed_as_arg
+ dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)
+ Time.expects(:current).returns Time.now
+ dummy_instance_tag.send!(:default_time_from_options, :hour => 2)
+ end
+
+ def test_instance_tag_default_time_from_options_respects_hash_arg_settings_when_time_falls_in_system_local_dst_spring_gap
+ with_env_tz('US/Central') do
+ dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)
+ Time.stubs(:now).returns Time.local(2006, 4, 2, 1)
+ assert_equal 2, dummy_instance_tag.send!(:default_time_from_options, :hour => 2).hour
+ end
+ end
+ end
+
+ protected
+ def with_env_tz(new_tz = 'US/Eastern')
+ old_tz, ENV['TZ'] = ENV['TZ'], new_tz
+ yield
+ ensure
+ old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
+ end
end