Implemented more of the Deliverable calculations

* Added deliverable.score
* Added fixed_deliverable.score as 0
* Added deliverable.budget_ratio

  #1136
This commit is contained in:
Eric Davis
2008-05-23 16:38:27 -07:00
parent 9e743932d1
commit 1637e5cdd1
4 changed files with 38 additions and 3 deletions
+5 -1
View File
@@ -7,7 +7,7 @@ class Deliverable < ActiveRecord::Base
# TODO: mocked
def score
0
return self.progress - self.budget_ratio
end
# TODO: mocked
@@ -29,6 +29,10 @@ class Deliverable < ActiveRecord::Base
return (balance / total).round
end
def budget_ratio
return ((self.spent / self.budget) * 100).round
end
#
# These attributes can take a Dollar amount or a %
#
+5
View File
@@ -1,3 +1,8 @@
class FixedDeliverable < Deliverable
unloadable
# Fixed rate bids should always have a budget score of 0. This is because the budget is managed by the contractor.
def score
0
end
end
+20 -2
View File
@@ -110,8 +110,24 @@ describe Deliverable, '.profit' do
end
end
describe Deliverable, '.budget_ratio' do
it 'should be the whole number of the budget spent' do
@deliverable = Deliverable.new({ :subject => 'test' })
@deliverable.should_receive(:budget).and_return(3000.00)
@deliverable.should_receive(:spent).and_return(1000.00)
@deliverable.budget_ratio.should eql(33)
end
end
describe Deliverable, '.score' do
it 'should'
it 'should be calculated by the progress and the budget usage' do
@deliverable = Deliverable.new({ :subject => 'test' })
@deliverable.should_receive(:progress).and_return(75)
@deliverable.should_receive(:budget_ratio).and_return(33)
@deliverable.score.should eql(42)
end
end
describe Deliverable, '.progress' do
@@ -156,10 +172,12 @@ describe Deliverable, '.progress' do
@deliverable.progress.should eql(100)
end
it 'should not change when hours are clocked'
it 'should change if issues are assigned'
it 'should change if issues are unassigned'
it 'should change when a status changes'
end
+8
View File
@@ -0,0 +1,8 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe FixedDeliverable, '.score' do
it 'should always be 0' do
@deliverable = FixedDeliverable.new({ :subject => 'test' })
@deliverable.score.should eql(0)
end
end