From 03282638af9045034f50b34efa5ae45e6da1edda Mon Sep 17 00:00:00 2001 From: Katrina Owen Date: Sat, 2 Mar 2013 12:15:30 -0500 Subject: [PATCH] Move calculation out of view --- app/models/stats/time_to_complete.rb | 10 +++++++--- app/views/stats/_time_to_complete.html.erb | 4 ++-- test/unit/time_to_complete_test.rb | 16 +++++++++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/models/stats/time_to_complete.rb b/app/models/stats/time_to_complete.rb index 3407e773..f18dc9db 100644 --- a/app/models/stats/time_to_complete.rb +++ b/app/models/stats/time_to_complete.rb @@ -9,15 +9,15 @@ module Stats end def avg - @avg ||= (sum / count) / SECONDS_PER_DAY + @avg ||= to_days(sum / count) end def max - @max ||= max_in_seconds / SECONDS_PER_DAY + @max ||= to_days(max_in_seconds) end def min - @min ||= min_in_seconds / SECONDS_PER_DAY + @min ||= to_days(min_in_seconds) end def min_sec @@ -29,6 +29,10 @@ module Stats private + def to_days(value) + (value * 10 / SECONDS_PER_DAY).round / 10.0 + end + def min_in_seconds @min_in_seconds ||= durations.min || 0 end diff --git a/app/views/stats/_time_to_complete.html.erb b/app/views/stats/_time_to_complete.html.erb index e741526b..0b6e0397 100644 --- a/app/views/stats/_time_to_complete.html.erb +++ b/app/views/stats/_time_to_complete.html.erb @@ -1,4 +1,4 @@ -

<%= t('stats.actions_avg_completion_time', :count => (ttc.avg*10).round/10.0) %> -<%= t('stats.actions_min_max_completion_days', :max => (ttc.max*10).round/10.0, :min => (ttc.min*10).round/10.0) %> +

<%= t('stats.actions_avg_completion_time', :count => ttc.avg) %> +<%= t('stats.actions_min_max_completion_days', :max => ttc.max, :min => ttc.min) %> <%= t('stats.actions_min_completion_time', :time => ttc.min_sec) %>

diff --git a/test/unit/time_to_complete_test.rb b/test/unit/time_to_complete_test.rb index f1cce5d5..4a75a485 100644 --- a/test/unit/time_to_complete_test.rb +++ b/test/unit/time_to_complete_test.rb @@ -52,15 +52,15 @@ class TimeToCompleteTest < Test::Unit::TestCase end def test_minimum - assert_equal 2.127835648148148, Stats::TimeToComplete.new(fake_tasks).min + assert_equal 2.1, Stats::TimeToComplete.new(fake_tasks).min end def test_maximum - assert_equal 6.127835648148148, Stats::TimeToComplete.new(fake_tasks).max + assert_equal 6.1, Stats::TimeToComplete.new(fake_tasks).max end def test_avg - assert_equal 4.127835648148148, Stats::TimeToComplete.new(fake_tasks).avg + assert_equal 4.1, Stats::TimeToComplete.new(fake_tasks).avg end def test_min_sec @@ -71,5 +71,15 @@ class TimeToCompleteTest < Test::Unit::TestCase task = FakeTask.new(day0, now) assert_equal '03:04:05', Stats::TimeToComplete.new([task]).min_sec end + + def test_rounding + start_time = Time.utc(2012, 12, 31, 8, 0, 0) + task = FakeTask.new(start_time, now) + ttc = Stats::TimeToComplete.new([task]) + assert_equal 1.8, ttc.avg + assert_equal 1.8, ttc.min + assert_equal 1.8, ttc.max + end + end