Skip to content

Commit a60a5d0

Browse files
authored
Merge pull request rails#49711 from fatkodima/fix-time-travel-helpers-for-separate-object
Fix time travel helpers to work when nested using with separate classes
2 parents 52b85b9 + 7fd2657 commit a60a5d0

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

activesupport/lib/active_support/testing/time_helpers.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def stub_object(object, method_name, &block)
2525
unstub_object(stub)
2626
end
2727

28-
new_name = "__simple_stub__#{method_name}"
28+
new_name = "__simple_stub__#{method_name}__#{object_id}"
2929

3030
@stubs[object.object_id][method_name] = Stub.new(object, method_name, new_name)
3131

activesupport/test/time_travel_test.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ class TimeSubclass < ::Time; end
1313
class DateSubclass < ::Date; end
1414
class DateTimeSubclass < ::DateTime; end
1515

16+
class TravelClass
17+
include ActiveSupport::Testing::TimeHelpers
18+
19+
def travel_to_no_block(date)
20+
travel_to(date)
21+
end
22+
23+
def travel_to_block(date)
24+
travel_to(date) { }
25+
end
26+
end
27+
1628
def test_time_helper_travel
1729
Time.stub(:now, Time.now) do
1830
expected_time = Time.now + 1.day
@@ -124,6 +136,31 @@ def test_time_helper_travel_to_with_string_for_time_zone
124136
end
125137
end
126138

139+
def test_time_helper_travel_to_with_separate_class
140+
travel_object = TravelClass.new
141+
date1 = Date.new(2004, 11, 24)
142+
date2 = Date.new(2005, 11, 24)
143+
144+
Time.stub(:now, now = Time.now) do
145+
travel_to(date1) do
146+
travel_object.travel_to_no_block(date2)
147+
end
148+
assert_equal now, Time.now
149+
150+
travel_to(date1) do
151+
travel_object.travel_to_no_block(date2)
152+
assert_equal date2, Date.today
153+
end
154+
assert_equal now, Time.now
155+
156+
travel_to(date1) do
157+
travel_object.travel_to_block(date2)
158+
assert_equal date1, Date.today
159+
end
160+
assert_equal now, Time.now
161+
end
162+
end
163+
127164
def test_time_helper_travel_back
128165
Time.stub(:now, Time.now) do
129166
expected_time = Time.new(2004, 11, 24, 1, 4, 44)

0 commit comments

Comments
 (0)