aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/template
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2012-12-04 14:13:15 +0000
committerAndrew White <andyw@pixeltrix.co.uk>2012-12-04 14:21:52 +0000
commitfbf23ed9338f935736dd840ea973fd6372b6ab7d (patch)
tree30c6f25c3158d979a80bb9ac7582175838b8d568 /actionpack/test/template
parent18e12273121d5d46be9d87b07cd9935edc58472a (diff)
downloadrails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.tar.gz
rails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.tar.bz2
rails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.zip
Make distance_of_time_in_words work with DateTime offsets
Because DateTime#to_time returns self when it has a non-zero offset and subtracting two DateTime instances returns a Rational then the distance_of_time_in_words methods outputs an incorrect value. This is fixed in master because we can rely on Ruby 1.9.3's implementation of to_time but it can't be fixed on Ruby 1.8.7 as there is no way to map the DateTime to a Time with a non-zero offset. We can workaround the problem by casting to Float before doing the subtraction in the distance_of_time_in_words method. Closes #8390
Diffstat (limited to 'actionpack/test/template')
-rw-r--r--actionpack/test/template/date_helper_test.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/actionpack/test/template/date_helper_test.rb b/actionpack/test/template/date_helper_test.rb
index dd0aad7119..e4f84f8dd7 100644
--- a/actionpack/test/template/date_helper_test.rb
+++ b/actionpack/test/template/date_helper_test.rb
@@ -151,6 +151,16 @@ class DateHelperTest < ActionView::TestCase
assert_equal "1 minute", distance_of_time_in_words(60.seconds, 0, true)
end
+ def test_distance_in_words_with_offset_datetimes
+ start_date = DateTime.new 1975, 1, 31, 0, 0, 0, '+6'
+ end_date = DateTime.new 1977, 1, 31, 0, 0, 0, '+6'
+ assert_equal("about 2 years", distance_of_time_in_words(start_date, end_date))
+
+ start_date = DateTime.new 1982, 12, 3, 0, 0, 0, '+6'
+ end_date = DateTime.new 2010, 11, 30, 0, 0, 0, '+6'
+ assert_equal("almost 28 years", distance_of_time_in_words(start_date, end_date))
+ end
+
def test_time_ago_in_words
assert_equal "about 1 year", time_ago_in_words(1.year.ago - 1.day)
end