Changeset 8808
- Timestamp:
- 02/06/08 22:26:47 (7 months ago)
- Files:
-
- trunk/activerecord/test/cases/attribute_methods_test.rb (modified) (1 diff)
- trunk/activerecord/test/cases/base_test.rb (modified) (1 diff)
- trunk/activerecord/test/cases/helper.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activerecord/test/cases/attribute_methods_test.rb
r8806 r8808 139 139 end 140 140 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 143 166 utc_time = Time.utc(2008, 1, 1) 144 record = @target.new145 record[:written_on] = utc_time146 assert_equal utc_time, record.written_on # record.written on is equal to (i.e., simultaneous with) utc_time147 assert_kind_of ActiveSupport::TimeWithZone, record.written_on # but is a TimeWithZone148 assert_equal TimeZone["Pacific Time (US & Canada)"], record.written_on.time_zone # and is in the current Time.zone149 assert_equal Time.utc(2007, 12, 31, 16), record.written_on.time # and represents time values adjusted accordingly150 end151 end152 153 def test_setting_time_zone_aware_attribute_to_utc 154 in_time_zone "Pacific Time (US & Canada)" do167 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_time 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 155 178 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 184 186 end 185 187 end trunk/activerecord/test/cases/base_test.rb
r8806 r8808 938 938 end 939 939 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 959 961 def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes 960 962 ActiveRecord::Base.time_zone_aware_attributes = true trunk/activerecord/test/cases/helper.rb
r8690 r8808 30 30 end 31 31 32 def uses_tzinfo(description) 33 require 'rubygems' 34 require 'tzinfo' 35 yield 36 rescue LoadError 37 $stderr.puts "Skipping #{description} tests. `gem install tzinfo` and try again." 38 end 39 32 40 ActiveRecord::Base.connection.class.class_eval do 33 41 IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/]