diff --git a/app/models/budget.rb b/app/models/budget.rb index 542e2f5..a9a6edb 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -41,9 +41,8 @@ class Budget return ((self.spent / self.budget) * 100).round end - # TODO def spent - 0 + self.deliverables.collect(&:spent).inject { |sum, n| sum + n } end def left diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 4f57fea..12d89ee 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -263,3 +263,18 @@ describe Budget, '.overruns' do @budget.overruns.should eql(1500.0) end end + +describe Budget, '.spent' do + it 'should be calculated by the total spent of the deliverables' do + @deliverable1 = mock_model(HourlyDeliverable, :project_id => @project, :spent => 1000.00) + @deliverable2 = mock_model(HourlyDeliverable, :project_id => @project, :spent => 500.00) + Deliverable.stub!(:find_all_by_project_id).and_return([@deliverable1, @deliverable2]) + + @project = mock_model(Project) + Project.stub!(:find).with(@project.id).and_return(@project) + + @budget = Budget.new(@project.id) + + @budget.spent.should eql(1500.0) + end +end