Skip to content

Commit

Permalink
Use Time.current to maintain consistency with AS::Duration
Browse files Browse the repository at this point in the history
In [32b82e4], the committer has switch
methods in AS::Duration to use `Time.current` to return the correct
duration based on the `Time.default_zone` instead of using `Time.now`.

[#5607 state:committed]

Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
  • Loading branch information
sikachu authored and spastorino committed Sep 19, 2010
1 parent b79a782 commit e125bf2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
4 changes: 2 additions & 2 deletions activesupport/lib/active_support/core_ext/numeric/time.rb
Expand Up @@ -60,15 +60,15 @@ def fortnights
alias :fortnight :fortnights

# Reads best without arguments: 10.minutes.ago
def ago(time = ::Time.now)
def ago(time = ::Time.current)
time - self
end

# Reads best with argument: 10.minutes.until(time)
alias :until :ago

# Reads best with argument: 10.minutes.since(time)
def since(time = ::Time.now)
def since(time = ::Time.current)
time + self
end

Expand Down
38 changes: 38 additions & 0 deletions activesupport/test/core_ext/numeric_ext_test.rb
Expand Up @@ -88,6 +88,44 @@ def test_add_one_year_to_leap_day
assert_equal Time.utc(2005,2,28,15,15,10), Time.utc(2004,2,29,15,15,10) + 1.year
assert_equal DateTime.civil(2005,2,28,15,15,10), DateTime.civil(2004,2,29,15,15,10) + 1.year
end

def test_since_and_ago_anchored_to_time_now_when_time_zone_default_not_set
Time.zone_default = nil
with_env_tz 'US/Eastern' do
Time.stubs(:now).returns Time.local(2000)
# since
assert_equal false, 5.since.is_a?(ActiveSupport::TimeWithZone)
assert_equal Time.local(2000,1,1,0,0,5), 5.since
# ago
assert_equal false, 5.ago.is_a?(ActiveSupport::TimeWithZone)
assert_equal Time.local(1999,12,31,23,59,55), 5.ago
end
end

def test_since_and_ago_anchored_to_time_zone_now_when_time_zone_default_set
Time.zone_default = ActiveSupport::TimeZone['Eastern Time (US & Canada)']
with_env_tz 'US/Eastern' do
Time.stubs(:now).returns Time.local(2000)
# since
assert_equal true, 5.since.is_a?(ActiveSupport::TimeWithZone)
assert_equal Time.utc(2000,1,1,0,0,5), 5.since.time
assert_equal 'Eastern Time (US & Canada)', 5.since.time_zone.name
# ago
assert_equal true, 5.ago.is_a?(ActiveSupport::TimeWithZone)
assert_equal Time.utc(1999,12,31,23,59,55), 5.ago.time
assert_equal 'Eastern Time (US & Canada)', 5.ago.time_zone.name
end
ensure
Time.zone_default = nil
end

protected
def with_env_tz(new_tz = 'US/Eastern')
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
yield
ensure
old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
end
end

class NumericExtDateTest < Test::Unit::TestCase
Expand Down

0 comments on commit e125bf2

Please sign in to comment.