@@ -122,6 +122,44 @@ def test_time_helper_travel_to_with_time_zone
122
122
end
123
123
end
124
124
125
+ def test_time_helper_travel_to_with_different_system_and_application_time_zones
126
+ with_env_tz "US/Eastern" do # system time zone: -05
127
+ expected_time_in_2021 = Time . new ( 2021 )
128
+
129
+ with_tz_default ActiveSupport ::TimeZone [ "Ekaterinburg" ] do # application time zone: +05
130
+ destination_time = Time . new ( 2023 , 12 , 1 , 5 , 6 , 7 , 5 * 3600 )
131
+
132
+ # All stubbed methods are expected to return values in system (-05) time zone
133
+ expected_utc_offset = -5 * 3600
134
+ expected_time = Time . new ( 2023 , 11 , 30 , 19 , 6 , 7 , expected_utc_offset )
135
+ expected_datetime = DateTime . new ( 2023 , 11 , 30 , 19 , 6 , 7 , -Rational ( 5 , 24 ) )
136
+ expected_date = Date . new ( 2023 , 11 , 30 )
137
+
138
+ travel_to destination_time do
139
+ assert_equal expected_time , Time . now
140
+ assert_equal expected_time . to_fs ( :db ) , Time . now . to_fs ( :db )
141
+ assert_equal expected_utc_offset , Time . now . utc_offset
142
+
143
+ assert_equal expected_datetime , DateTime . now
144
+ assert_equal expected_datetime . to_fs ( :db ) , DateTime . now . to_fs ( :db )
145
+ assert_equal expected_utc_offset , DateTime . now . utc_offset
146
+
147
+ assert_equal expected_date , Date . today
148
+
149
+ # Time.new with no args equals to Time.now
150
+ assert_equal expected_time , Time . new
151
+ assert_equal expected_time . to_fs ( :db ) , Time . new . to_fs ( :db )
152
+ assert_equal expected_utc_offset , Time . new . utc_offset
153
+
154
+ # Time.new with any args falls back to original Ruby implementation
155
+ assert_equal expected_time_in_2021 , Time . new ( 2021 )
156
+ assert_equal expected_time_in_2021 . to_fs ( :db ) , Time . new ( 2021 ) . to_fs ( :db )
157
+ assert_equal expected_time_in_2021 . utc_offset , Time . new ( 2021 ) . utc_offset
158
+ end
159
+ end
160
+ end
161
+ end
162
+
125
163
def test_time_helper_travel_to_with_string_for_time_zone
126
164
with_env_tz "US/Eastern" do
127
165
with_tz_default ActiveSupport ::TimeZone [ "UTC" ] do
0 commit comments