[#2863] Override the deliverable rows from the budget plugin to show

labor budget spent.

* Added FixedDeliverable#labor_budget_spent
* Added HourlyDeliverable#labor_budget_spent
* Added an _deliverable_summary_row.html.erb with the new method
This commit is contained in:
Eric Davis
2009-08-07 13:27:23 -07:00
parent 10858bbd63
commit 5afafaa187
6 changed files with 138 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe FixedDeliverable, '#labor_budget_spent' do
def mock_issues_and_time_entries
@deliverable.should_receive(:issues).at_least(:once).and_return do
issue1 = mock_model(Issue, :time_entries => [
mock_model(TimeEntry, :cost => 100, :billable? => true),
mock_model(TimeEntry, :cost => 200, :billable? => false),
mock_model(TimeEntry, :cost => 50, :billable? => true)
])
issue2 = mock_model(Issue, :time_entries => [
mock_model(TimeEntry, :cost => 1000, :billable? => true),
mock_model(TimeEntry, :cost => 2000, :billable? => false),
mock_model(TimeEntry, :cost => 5000, :billable? => true)
])
[issue1, issue2]
end
end
before(:each) do
@deliverable = FixedDeliverable.new :fixed_cost => 0
end
it 'should be 0 if there are no assigned issues' do
@deliverable.should_receive(:issues).and_return([])
@deliverable.labor_budget_spent.should eql(0)
end
it 'should total all billable time entries' do
mock_issues_and_time_entries
@deliverable.labor_budget_spent.should eql(6150.0)
end
it 'should total the billable time entries to the fixed_cost' do
mock_issues_and_time_entries
@deliverable.should_receive(:fixed_cost).at_least(:once).and_return(5000)
@deliverable.labor_budget_spent.should eql(11_150.0)
end
end

View File

@@ -0,0 +1,28 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe HourlyDeliverable, '#labor_budget_spent' do
it 'should be 0 if there are no assigned issues' do
deliverable = HourlyDeliverable.new
deliverable.should_receive(:issues).and_return([])
deliverable.labor_budget_spent.should eql(0.0)
end
it 'should total all billable time entries' do
deliverable = HourlyDeliverable.new
deliverable.should_receive(:issues).at_least(:once).and_return do
issue1 = mock_model(Issue, :time_entries => [
mock_model(TimeEntry, :cost => 100, :billable? => true),
mock_model(TimeEntry, :cost => 200, :billable? => false),
mock_model(TimeEntry, :cost => 50, :billable? => true)
])
issue2 = mock_model(Issue, :time_entries => [
mock_model(TimeEntry, :cost => 1000, :billable? => true),
mock_model(TimeEntry, :cost => 2000, :billable? => false),
mock_model(TimeEntry, :cost => 5000, :billable? => true)
])
[issue1, issue2]
end
deliverable.labor_budget_spent.should eql(6150.0)
end
end