mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
225cd915cf
Add `ActiveSupport::Testing::TimeHelpers#travel` and `#travel_to`. These methods change current time to the given time or time difference by stubbing `Time.now` and `Date.today` to return the time or date after the difference calculation, or the time or date that got passed into the method respectively. These methods also accept a block, which will return current time back to its original state at the end of the block. Example for `#travel`: Time.now # => 2013-11-09 15:34:49 -05:00 travel 1.day Time.now # => 2013-11-10 15:34:49 -05:00 Date.today # => Sun, 10 Nov 2013 Example for `#travel_to`: Time.now # => 2013-11-09 15:34:49 -05:00 travel_to Time.new(2004, 11, 24, 01, 04, 44) Time.now # => 2004-11-24 01:04:44 -05:00 Date.today # => Wed, 24 Nov 2004 Both of these methods also accept a block, which will return the current time back to its original state at the end of the block: Time.now # => 2013-11-09 15:34:49 -05:00 travel 1.day do User.create.created_at # => Sun, 10 Nov 2013 15:34:49 EST -05:00 end 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 end Time.now # => 2013-11-09 15:34:49 -05:00 This module is included in `ActiveSupport::TestCase` automatically.
66 lines
2.1 KiB
Ruby
66 lines
2.1 KiB
Ruby
gem 'minitest' # make sure we get the gem, not stdlib
|
|
require 'minitest'
|
|
require 'active_support/testing/tagged_logging'
|
|
require 'active_support/testing/setup_and_teardown'
|
|
require 'active_support/testing/assertions'
|
|
require 'active_support/testing/deprecation'
|
|
require 'active_support/testing/declarative'
|
|
require 'active_support/testing/isolation'
|
|
require 'active_support/testing/constant_lookup'
|
|
require 'active_support/testing/time_helpers'
|
|
require 'active_support/core_ext/kernel/reporting'
|
|
require 'active_support/deprecation'
|
|
|
|
begin
|
|
silence_warnings { require 'mocha/setup' }
|
|
rescue LoadError
|
|
end
|
|
|
|
module ActiveSupport
|
|
class TestCase < ::Minitest::Test
|
|
Assertion = Minitest::Assertion
|
|
|
|
alias_method :method_name, :name
|
|
|
|
$tags = {}
|
|
def self.for_tag(tag)
|
|
yield if $tags[tag]
|
|
end
|
|
|
|
# FIXME: we have tests that depend on run order, we should fix that and
|
|
# remove this method call.
|
|
self.i_suck_and_my_tests_are_order_dependent!
|
|
|
|
include ActiveSupport::Testing::TaggedLogging
|
|
include ActiveSupport::Testing::SetupAndTeardown
|
|
include ActiveSupport::Testing::Assertions
|
|
include ActiveSupport::Testing::Deprecation
|
|
include ActiveSupport::Testing::TimeHelpers
|
|
extend ActiveSupport::Testing::Declarative
|
|
|
|
# test/unit backwards compatibility methods
|
|
alias :assert_raise :assert_raises
|
|
alias :assert_not_empty :refute_empty
|
|
alias :assert_not_equal :refute_equal
|
|
alias :assert_not_in_delta :refute_in_delta
|
|
alias :assert_not_in_epsilon :refute_in_epsilon
|
|
alias :assert_not_includes :refute_includes
|
|
alias :assert_not_instance_of :refute_instance_of
|
|
alias :assert_not_kind_of :refute_kind_of
|
|
alias :assert_no_match :refute_match
|
|
alias :assert_not_nil :refute_nil
|
|
alias :assert_not_operator :refute_operator
|
|
alias :assert_not_predicate :refute_predicate
|
|
alias :assert_not_respond_to :refute_respond_to
|
|
alias :assert_not_same :refute_same
|
|
|
|
# Fails if the block raises an exception.
|
|
#
|
|
# assert_nothing_raised do
|
|
# ...
|
|
# end
|
|
def assert_nothing_raised(*args)
|
|
yield
|
|
end
|
|
end
|
|
end
|