@@ -12,6 +12,7 @@ def setup
12
12
@date_time = DateTime . new ( 2016 , 4 , 23 , 14 , 11 , 12 , 0 )
13
13
@utc_offset = 3600
14
14
@system_offset = -14400
15
+ @system_dst_offset = -18000
15
16
@zone = ActiveSupport ::TimeZone [ "London" ]
16
17
end
17
18
@@ -43,7 +44,7 @@ def test_time_to_time_does_not_preserve_time_zone
43
44
end
44
45
end
45
46
46
- def test_time_to_time_without_preserve_configured
47
+ def test_time_to_time_on_utc_value_without_preserve_configured
47
48
with_preserve_timezone ( nil ) do
48
49
with_env_tz "US/Eastern" do
49
50
source = Time . new ( 2016 , 4 , 23 , 15 , 11 , 12 )
@@ -60,6 +61,24 @@ def test_time_to_time_without_preserve_configured
60
61
end
61
62
end
62
63
64
+ with_preserve_timezone ( nil ) do
65
+ with_env_tz "US/Eastern" do
66
+ source = Time . new ( 2016 , 11 , 23 , 15 , 11 , 12 )
67
+ # No warning because it's already local
68
+ base_time = source . to_time
69
+
70
+ utc_time = base_time . getutc
71
+ converted_time = assert_deprecated ( ActiveSupport . deprecator ) { utc_time . to_time }
72
+
73
+ assert_equal source , base_time
74
+ assert_equal source , converted_time
75
+ assert_equal @system_dst_offset , base_time . utc_offset
76
+ assert_equal @system_dst_offset , converted_time . utc_offset
77
+ end
78
+ end
79
+ end
80
+
81
+ def test_time_to_time_on_offset_value_without_preserve_configured
63
82
with_preserve_timezone ( nil ) do
64
83
with_env_tz "US/Eastern" do
65
84
foreign_time = Time . new ( 2016 , 4 , 23 , 15 , 11 , 12 , in : "-0700" )
@@ -70,6 +89,43 @@ def test_time_to_time_without_preserve_configured
70
89
assert_not_equal foreign_time . utc_offset , converted_time . utc_offset
71
90
end
72
91
end
92
+
93
+ with_preserve_timezone ( nil ) do
94
+ with_env_tz "US/Eastern" do
95
+ foreign_time = Time . new ( 2016 , 11 , 23 , 15 , 11 , 12 , in : "-0700" )
96
+ converted_time = assert_deprecated ( ActiveSupport . deprecator ) { foreign_time . to_time }
97
+
98
+ assert_equal foreign_time , converted_time
99
+ assert_equal @system_dst_offset , converted_time . utc_offset
100
+ assert_not_equal foreign_time . utc_offset , converted_time . utc_offset
101
+ end
102
+ end
103
+ end
104
+
105
+ def test_time_to_time_on_tzinfo_value_without_preserve_configured
106
+ foreign_zone = ActiveSupport ::TimeZone [ "America/Phoenix" ]
107
+
108
+ with_preserve_timezone ( nil ) do
109
+ with_env_tz "US/Eastern" do
110
+ foreign_time = foreign_zone . tzinfo . utc_to_local ( Time . new ( 2016 , 4 , 23 , 15 , 11 , 12 , in : "-0700" ) )
111
+ converted_time = assert_deprecated ( ActiveSupport . deprecator ) { foreign_time . to_time }
112
+
113
+ assert_equal foreign_time , converted_time
114
+ assert_equal @system_offset , converted_time . utc_offset
115
+ assert_not_equal foreign_time . utc_offset , converted_time . utc_offset
116
+ end
117
+ end
118
+
119
+ with_preserve_timezone ( nil ) do
120
+ with_env_tz "US/Eastern" do
121
+ foreign_time = foreign_zone . tzinfo . utc_to_local ( Time . new ( 2016 , 11 , 23 , 15 , 11 , 12 , in : "-0700" ) )
122
+ converted_time = assert_deprecated ( ActiveSupport . deprecator ) { foreign_time . to_time }
123
+
124
+ assert_equal foreign_time , converted_time
125
+ assert_equal @system_dst_offset , converted_time . utc_offset
126
+ assert_not_equal foreign_time . utc_offset , converted_time . utc_offset
127
+ end
128
+ end
73
129
end
74
130
75
131
def test_time_to_time_frozen_preserves_timezone
0 commit comments