1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Added time helper method freeze_time which is an alias for travel_to Time.now (#29681)

This commit is contained in:
प्रथमेश Sonpatki 2017-07-10 15:43:37 +05:30 committed by David Heinemeier Hansson
parent a35f08f038
commit b6300f3ecc
3 changed files with 47 additions and 0 deletions

View file

@ -1,3 +1,7 @@
* Add `freeze_time` helper which freezes time to `Time.now` in tests.
*Prathamesh Sonpatki*
* Default `ActiveSupport::MessageEncryptor` to use AES 256 GCM encryption.
On for new Rails 5.2 apps. Upgrading apps can find the config as a new

View file

@ -161,6 +161,27 @@ module ActiveSupport
simple_stubs.unstub_all!
end
# Calls `travel_to` with `Time.now`.
#
# Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
# freeze_time
# sleep(1)
# Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
#
# This method also accepts a block, which will return the current time back to its original
# state at the end of the block:
#
# Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
# freeze_time do
# sleep(1)
# User.create.created_at # => Sun, 09 Jul 2017 15:34:49 EST -05:00
# end
# Time.current # => Sun, 09 Jul 2017 15:34:50 EST -05:00
def freeze_time(&block)
travel_to Time.now, &block
end
private
def simple_stubs

View file

@ -163,4 +163,26 @@ class TimeTravelTest < ActiveSupport::TestCase
assert_equal DateTime.now.to_s, DateTimeSubclass.now.to_s
end
end
def test_time_helper_freeze_time
expected_time = Time.now
freeze_time
sleep(1)
assert_equal expected_time.to_s(:db), Time.now.to_s(:db)
ensure
travel_back
end
def test_time_helper_freeze_time_with_block
expected_time = Time.now
freeze_time do
sleep(1)
assert_equal expected_time.to_s(:db), Time.now.to_s(:db)
end
assert_operator expected_time.to_s(:db), :<, Time.now.to_s(:db)
end
end