make #inspect if zero length duration return '0 seconds' instead of empty string [#2838 state:resolved]

Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
This commit is contained in:
Levin Alexander 2009-06-25 22:47:27 +02:00 committed by Yehuda Katz + Carl Lerche
parent cf5b2b250f
commit ab2d6abb55
2 changed files with 5 additions and 2 deletions

@ -68,10 +68,12 @@ def ago(time = ::Time.current)
def inspect #:nodoc:
consolidated = parts.inject(::Hash.new(0)) { |h,part| h[part.first] += part.last; h }
[:years, :months, :days, :minutes, :seconds].map do |length|
parts = [:years, :months, :days, :minutes, :seconds].map do |length|
n = consolidated[length]
"#{n} #{n == 1 ? length.to_s.singularize : length.to_s}" if n.nonzero?
end.compact.to_sentence(:locale => :en)
end.compact
parts = ["0 seconds"] if parts.empty?
parts.to_sentence(:locale => :en)
end
protected

@ -3,6 +3,7 @@
class DurationTest < ActiveSupport::TestCase
def test_inspect
assert_equal '0 seconds', 0.seconds.inspect
assert_equal '1 month', 1.month.inspect
assert_equal '1 month and 1 day', (1.month + 1.day).inspect
assert_equal '6 months and -2 days', (6.months - 2.days).inspect