From 7e9e2759b8cd2f5d7578dc306f3f23b6754adcca Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 23 May 2008 16:16:42 -0700 Subject: [PATCH] Updated Deliverable.progress * Make it return 100 if there are no issues * Get rid of sum in favor of manually adding values * Expand the progress bar to 100% #1136 --- app/models/deliverable.rb | 6 ++++-- app/views/deliverables/_deliverable.html.erb | 2 +- spec/models/deliverable_spec.rb | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index 6c8f859..2cd3bbe 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -17,9 +17,11 @@ class Deliverable < ActiveRecord::Base # TODO LATER: Shouldn't require the default_done_ratio patch def progress - total = self.issues.sum(&:estimated_hours) - balance = 0.0 + return 100 unless self.issues.count > 0 + total = self.issues.collect(&:estimated_hours).inject {|sum, n| sum + n} + balance = 0.0 + self.issues.each do |issue| balance += issue.status.default_done_ratio * issue.estimated_hours end diff --git a/app/views/deliverables/_deliverable.html.erb b/app/views/deliverables/_deliverable.html.erb index dddcfdf..9e7242e 100644 --- a/app/views/deliverables/_deliverable.html.erb +++ b/app/views/deliverables/_deliverable.html.erb @@ -5,5 +5,5 @@ <%= content_tag(:td, number_to_currency(deliverable.budget)) %> <%= content_tag(:td, number_to_currency(deliverable.spent)) %> <%= content_tag(:td, format_date(deliverable.due_date)) %> - <%= content_tag(:td, progress_bar(deliverable.progress, :width => '80px')) %> + <%= content_tag(:td, progress_bar(deliverable.progress, :width => '100%')) %> diff --git a/spec/models/deliverable_spec.rb b/spec/models/deliverable_spec.rb index a341e51..411ca1f 100644 --- a/spec/models/deliverable_spec.rb +++ b/spec/models/deliverable_spec.rb @@ -141,13 +141,15 @@ describe Deliverable, '.progress' do @issue4.should_receive(:status).and_return(@status_complete) @issue4.should_receive(:estimated_hours).twice.and_return(1.0) @issues = [@issue1, @issue2, @issue3, @issue4] + @issues.stub!(:count).and_return(4) @deliverable = Deliverable.new({ :subject => 'test' }) - @deliverable.should_receive(:issues).twice.and_return(@issues) + @deliverable.should_receive(:issues).exactly(3).times.and_return(@issues) @deliverable.progress.should eql(66) end + it 'should return 100 if there are no assigned issues' it 'should not change when hours are clocked' it 'should change if issues are assigned' it 'should change if issues are unassigned'