From bf999170d77b95e42495483141d3f3384f8c8f27 Mon Sep 17 00:00:00 2001 From: Adam Meehan Date: Fri, 5 Dec 2008 16:34:28 +1100 Subject: [PATCH] fix timezone issue for to_dummy_time as per normal Rails which uses AR default_timezone --- lib/validates_timeliness.rb | 6 ++++-- lib/validates_timeliness/core_ext/date.rb | 2 +- lib/validates_timeliness/core_ext/date_time.rb | 2 +- lib/validates_timeliness/core_ext/time.rb | 2 +- spec/core_ext/dummy_time_spec.rb | 12 ++++++------ spec/spec_helper.rb | 9 ++++----- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/validates_timeliness.rb b/lib/validates_timeliness.rb index bb400c1..a9bab6c 100644 --- a/lib/validates_timeliness.rb +++ b/lib/validates_timeliness.rb @@ -14,10 +14,11 @@ require 'validates_timeliness/core_ext/date_time' module ValidatesTimeliness mattr_accessor :ignore_restriction_errors + mattr_accessor :default_timezone mattr_accessor :error_value_formats - + self.ignore_restriction_errors = false - + self.default_timezone = :utc self.error_value_formats = { :time => '%H:%M:%S', :date => '%Y-%m-%d', @@ -61,6 +62,7 @@ module ValidatesTimeliness def setup_for_rails major, minor = Rails::VERSION::MAJOR, Rails::VERSION::MINOR self.send("setup_for_rails_#{major}_#{minor}") + self.default_timezone = ::ActiveRecord::Base.default_timezone rescue raise "Rails version #{Rails::VERSION::STRING} not yet supported by validates_timeliness plugin" end diff --git a/lib/validates_timeliness/core_ext/date.rb b/lib/validates_timeliness/core_ext/date.rb index 50e7a93..96babdd 100644 --- a/lib/validates_timeliness/core_ext/date.rb +++ b/lib/validates_timeliness/core_ext/date.rb @@ -3,7 +3,7 @@ module ValidatesTimeliness module Date def to_dummy_time - ::Time.mktime(2000, 1, 1, 0, 0, 0) + ::Time.send(ValidatesTimeliness.default_timezone, 2000, 1, 1, 0, 0, 0) end end diff --git a/lib/validates_timeliness/core_ext/date_time.rb b/lib/validates_timeliness/core_ext/date_time.rb index f8bb093..b5f7fc9 100644 --- a/lib/validates_timeliness/core_ext/date_time.rb +++ b/lib/validates_timeliness/core_ext/date_time.rb @@ -3,7 +3,7 @@ module ValidatesTimeliness module DateTime def to_dummy_time - ::Time.mktime(2000, 1, 1, hour, min, sec) + ::Time.send(ValidatesTimeliness.default_timezone, 2000, 1, 1, hour, min, sec) end end diff --git a/lib/validates_timeliness/core_ext/time.rb b/lib/validates_timeliness/core_ext/time.rb index c4e898a..f011641 100644 --- a/lib/validates_timeliness/core_ext/time.rb +++ b/lib/validates_timeliness/core_ext/time.rb @@ -3,7 +3,7 @@ module ValidatesTimeliness module Time def to_dummy_time - self.class.mktime(2000, 1, 1, hour, min, sec) + self.class.send(ValidatesTimeliness.default_timezone, 2000, 1, 1, hour, min, sec) end end diff --git a/spec/core_ext/dummy_time_spec.rb b/spec/core_ext/dummy_time_spec.rb index 6a269b1..5871d4e 100644 --- a/spec/core_ext/dummy_time_spec.rb +++ b/spec/core_ext/dummy_time_spec.rb @@ -5,8 +5,8 @@ describe ValidatesTimeliness::CoreExtensions::Date do @a_date = Date.new(2008, 7, 1) end - it "should " do - @a_date.to_dummy_time.should == Time.mktime(2000,1,1,0,0,0) + it "should make a date value into a dummy time value" do + @a_date.to_dummy_time.should == Time.utc(2000,1,1,0,0,0) end end @@ -15,8 +15,8 @@ describe ValidatesTimeliness::CoreExtensions::Time do @a_time = Time.mktime(2008, 7, 1, 2, 3, 4) end - it "should " do - @a_time.to_dummy_time.should == Time.mktime(2000,1,1,2,3,4) + it "should make a time value into a dummy time value" do + @a_time.to_dummy_time.should == Time.utc(2000,1,1,2,3,4) end end @@ -25,7 +25,7 @@ describe ValidatesTimeliness::CoreExtensions::DateTime do @a_datetime = DateTime.new(2008, 7, 1, 2, 3, 4) end - it "should " do - @a_datetime.to_dummy_time.should == Time.mktime(2000,1,1,2,3,4) + it "should make a datetime value into a dummy time value" do + @a_datetime.to_dummy_time.should == Time.utc(2000,1,1,2,3,4) end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f8885ce..44c1f3e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -29,13 +29,12 @@ require 'action_view' require 'spec/rails' require 'time_travel/time_travel' -require 'validates_timeliness' - -RAILS_VER = Rails::VERSION::STRING - -puts "Using #{vendored ? 'vendored' : 'gem'} Rails version #{RAILS_VER} (ActiveRecord version #{ActiveRecord::VERSION::STRING})" ActiveRecord::Base.default_timezone = :utc +RAILS_VER = Rails::VERSION::STRING +puts "Using #{vendored ? 'vendored' : 'gem'} Rails version #{RAILS_VER} (ActiveRecord version #{ActiveRecord::VERSION::STRING})" + +require 'validates_timeliness' if RAILS_VER >= '2.1' Time.zone_default = ActiveSupport::TimeZone['UTC']