Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 8808

Show
Ignore:
Timestamp:
02/06/08 22:26:47 (7 months ago)
Author:
nzkoz
Message:

Add uses_tzinfo to active record tests to prevent breaking the cc.rb build etc. Closes #11034 [mpalmer]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/test/cases/attribute_methods_test.rb

    r8806 r8808  
    139139  end 
    140140   
    141   def test_time_attributes_are_retrieved_in_current_time_zone 
    142     in_time_zone "Pacific Time (US & Canada)" do 
     141  uses_tzinfo "Time zone" do 
     142    def test_time_attributes_are_retrieved_in_current_time_zone 
     143      in_time_zone "Pacific Time (US & Canada)" do 
     144        utc_time = Time.utc(2008, 1, 1) 
     145        record   = @target.new 
     146        record[:written_on] = utc_time 
     147        assert_equal utc_time, record.written_on # record.written on is equal to (i.e., simultaneous with) utc_time 
     148        assert_kind_of ActiveSupport::TimeWithZone, record.written_on # but is a TimeWithZone 
     149        assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone # and is in the current Time.zone 
     150        assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time # and represents time values adjusted accordingly 
     151      end 
     152    end 
     153 
     154    def test_setting_time_zone_aware_attribute_to_utc 
     155      in_time_zone "Pacific Time (US & Canada)" do 
     156        utc_time = Time.utc(2008, 1, 1) 
     157        record   = @target.new 
     158        record.written_on = utc_time 
     159        assert_equal utc_time, record.written_on 
     160        assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
     161        assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
     162      end 
     163    end 
     164 
     165    def test_setting_time_zone_aware_attribute_in_other_time_zone 
    143166      utc_time = Time.utc(2008, 1, 1) 
    144       record   = @target.new 
    145       record[:written_on] = utc_time 
    146       assert_equal utc_time, record.written_on # record.written on is equal to (i.e., simultaneous with) utc_time 
    147       assert_kind_of ActiveSupport::TimeWithZone, record.written_on # but is a TimeWithZon
    148       assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone # and is in the current Time.zone 
    149       assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time # and represents time values adjusted accordingly 
    150     end 
    151   end 
    152    
    153   def test_setting_time_zone_aware_attribute_to_utc 
    154     in_time_zone "Pacific Time (US & Canada)" do 
     167      cst_time = utc_time.in_time_zone("Central Time (US & Canada)") 
     168      in_time_zone "Pacific Time (US & Canada)" do 
     169        record   = @target.new 
     170        record.written_on = cst_tim
     171        assert_equal utc_time, record.written_on 
     172        assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
     173        assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
     174      end 
     175    end 
     176 
     177    def test_setting_time_zone_aware_attribute_in_current_time_zone 
    155178      utc_time = Time.utc(2008, 1, 1) 
    156       record   = @target.new 
    157       record.written_on = utc_time 
    158       assert_equal utc_time, record.written_on 
    159       assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
    160       assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
    161     end 
    162   end 
    163    
    164   def test_setting_time_zone_aware_attribute_in_other_time_zone 
    165     utc_time = Time.utc(2008, 1, 1) 
    166     cst_time = utc_time.in_time_zone("Central Time (US & Canada)") 
    167     in_time_zone "Pacific Time (US & Canada)" do 
    168       record   = @target.new 
    169       record.written_on = cst_time 
    170       assert_equal utc_time, record.written_on 
    171       assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
    172       assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
    173     end 
    174   end 
    175    
    176   def test_setting_time_zone_aware_attribute_in_current_time_zone 
    177     utc_time = Time.utc(2008, 1, 1) 
    178     in_time_zone "Pacific Time (US & Canada)" do 
    179       record   = @target.new 
    180       record.written_on = utc_time.in_current_time_zone 
    181       assert_equal utc_time, record.written_on 
    182       assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
    183       assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
     179      in_time_zone "Pacific Time (US & Canada)" do 
     180        record   = @target.new 
     181        record.written_on = utc_time.in_current_time_zone 
     182        assert_equal utc_time, record.written_on 
     183        assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone 
     184        assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time 
     185      end 
    184186    end 
    185187  end 
  • trunk/activerecord/test/cases/base_test.rb

    r8806 r8808  
    938938  end 
    939939 
    940   def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes 
    941     ActiveRecord::Base.time_zone_aware_attributes = true 
    942     ActiveRecord::Base.default_timezone = :utc 
    943     Time.zone = TimeZone[-28800] 
    944     attributes = { 
    945       "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24", 
    946       "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00" 
    947     } 
    948     topic = Topic.find(1) 
    949     topic.attributes = attributes 
    950     assert_equal Time.utc(2004, 6, 24, 23, 24, 0), topic.written_on 
    951     assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time 
    952     assert_equal Time.zone, topic.written_on.time_zone 
    953   ensure 
    954     ActiveRecord::Base.time_zone_aware_attributes = false 
    955     ActiveRecord::Base.default_timezone = :local 
    956     Time.zone = nil 
    957   end 
    958    
     940  uses_tzinfo "test_multiparameter_attributes_on_time_with_time_zone_aware_attributes" do 
     941    def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes 
     942      ActiveRecord::Base.time_zone_aware_attributes = true 
     943      ActiveRecord::Base.default_timezone = :utc 
     944      Time.zone = TimeZone[-28800] 
     945      attributes = { 
     946        "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24", 
     947        "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00" 
     948      } 
     949      topic = Topic.find(1) 
     950      topic.attributes = attributes 
     951      assert_equal Time.utc(2004, 6, 24, 23, 24, 0), topic.written_on 
     952      assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time 
     953      assert_equal Time.zone, topic.written_on.time_zone 
     954    ensure 
     955      ActiveRecord::Base.time_zone_aware_attributes = false 
     956      ActiveRecord::Base.default_timezone = :local 
     957      Time.zone = nil 
     958    end 
     959  end 
     960 
    959961  def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes 
    960962    ActiveRecord::Base.time_zone_aware_attributes = true 
  • trunk/activerecord/test/cases/helper.rb

    r8690 r8808  
    3030end 
    3131 
     32def uses_tzinfo(description) 
     33  require 'rubygems' 
     34  require 'tzinfo' 
     35  yield 
     36rescue LoadError 
     37  $stderr.puts "Skipping #{description} tests.  `gem install tzinfo` and try again." 
     38end 
     39 
    3240ActiveRecord::Base.connection.class.class_eval do 
    3341  IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/]