aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-01-29 22:24:48 -0200
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-01-30 10:17:47 -0200
commit6b16c2788186d45c70bd1d9fc476407e3e265439 (patch)
treedb7b781e5e1579ce703feb75f5f42abd08fce344
parent7f5466d58299db35a3d320e0b526001ae3be11a7 (diff)
downloadrails-6b16c2788186d45c70bd1d9fc476407e3e265439.tar.gz
rails-6b16c2788186d45c70bd1d9fc476407e3e265439.tar.bz2
rails-6b16c2788186d45c70bd1d9fc476407e3e265439.zip
Add `travel_back` to remove stubs from `travel` and `travel_to`
-rw-r--r--activesupport/CHANGELOG.md4
-rw-r--r--activesupport/lib/active_support/testing/time_helpers.rb17
-rw-r--r--activesupport/test/test_test.rb12
-rw-r--r--guides/source/4_1_release_notes.md3
4 files changed, 33 insertions, 3 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index 008d71701c..eecb13207c 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Add `travel_back` to remove stubs from `travel` and `travel_to`.
+
+ *Rafael Mendonça França*
+
* Remove the deprecation about the `#filter` method.
Filter objects should now rely on method corresponding to the filter type
diff --git a/activesupport/lib/active_support/testing/time_helpers.rb b/activesupport/lib/active_support/testing/time_helpers.rb
index 0ee6332d6f..b183b8d8ef 100644
--- a/activesupport/lib/active_support/testing/time_helpers.rb
+++ b/activesupport/lib/active_support/testing/time_helpers.rb
@@ -42,7 +42,7 @@ module ActiveSupport
# Containing helpers that helps you test passage of time.
module TimeHelpers
def after_teardown #:nodoc:
- simple_stubs.unstub_all!
+ travel_back
super
end
@@ -81,7 +81,7 @@ module ActiveSupport
#
# Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
# travel_to Time.new(2004, 11, 24, 01, 04, 44) do
- # User.create.created_at # => Wed, 24 Nov 2004 01:04:44 EST -05:00
+ # Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
# end
# Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
def travel_to(date_or_time, &block)
@@ -90,10 +90,21 @@ module ActiveSupport
if block_given?
block.call
- simple_stubs.unstub_all!
+ travel_back
end
end
+ # Return the current time back to its original state.
+ #
+ # Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
+ # travel_to Time.new(2004, 11, 24, 01, 04, 44)
+ # Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
+ # travel_back
+ # Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
+ def travel_back
+ simple_stubs.unstub_all!
+ end
+
private
def simple_stubs
diff --git a/activesupport/test/test_test.rb b/activesupport/test/test_test.rb
index 8a71ef4324..1e539d8d06 100644
--- a/activesupport/test/test_test.rb
+++ b/activesupport/test/test_test.rb
@@ -201,4 +201,16 @@ class TimeHelperTest < ActiveSupport::TestCase
assert_not_equal expected_time, Time.now
assert_not_equal Date.new(2004, 11, 24), Date.today
end
+
+ def test_time_helper_travel_back
+ expected_time = Time.new(2004, 11, 24, 01, 04, 44)
+
+ travel_to expected_time
+ assert_equal expected_time, Time.now
+ assert_equal Date.new(2004, 11, 24), Date.today
+ travel_back
+
+ assert_not_equal expected_time, Time.now
+ assert_not_equal Date.new(2004, 11, 24), Date.today
+ end
end
diff --git a/guides/source/4_1_release_notes.md b/guides/source/4_1_release_notes.md
index 7399bfb5de..3668ffe44c 100644
--- a/guides/source/4_1_release_notes.md
+++ b/guides/source/4_1_release_notes.md
@@ -607,6 +607,9 @@ for detailed changes.
`Time.now` and
`Date.today`. ([Pull Request](https://github.com/rails/rails/pull/12824))
+* Added `ActiveSupport::Testing::TimeHelpers#travel_back`. This method return
+ the current time to the original state. ([Pull Request](https://github.com/rails/rails/pull/13884))
+
* Added `Numeric#in_milliseconds`, like `1.hour.in_milliseconds`, so we can feed
them to JavaScript functions like
`getTime()`. ([Commit](https://github.com/rails/rails/commit/423249504a2b468d7a273cbe6accf4f21cb0e643))