From 20f89adf3912ca3612519e74318912f283fe0ab0 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 29 Sep 2010 11:48:21 -0700 Subject: [PATCH] [#4552] Add issue counts to the Deliverable details --- app/models/deliverable.rb | 8 +++++ app/views/deliverables/_details_row.html.erb | 28 ++++++---------- test/integration/contracts_show_test.rb | 35 ++++++++++++++++++++ 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index fe117f0..3a1898b 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -128,6 +128,14 @@ class Deliverable < ActiveRecord::Base block.call end + def issues_by_status + issues.inject({}) {|grouped, issue| + grouped[issue.status] ||= [] + grouped[issue.status] << issue + grouped + } + end + def retainer? type == "RetainerDeliverable" end diff --git a/app/views/deliverables/_details_row.html.erb b/app/views/deliverables/_details_row.html.erb index c15974c..fe2015f 100644 --- a/app/views/deliverables/_details_row.html.erb +++ b/app/views/deliverables/_details_row.html.erb @@ -114,24 +114,18 @@ <%= l(:label_issue_status_plural) %> - <%# TODO: Release 2 Issue status counters + + <% deliverable.issues_by_status.each do |status, issues| %> - Proposed - 1 - - - On Hold - 1 - - - Complete - 14 - - - All - 16 - - %> + <%= h(status.name) %> + <%= h(issues.length) %> + + <% end %> + + <%= l(:label_all).capitalize %> + <%= deliverable.issues.count %> + +
diff --git a/test/integration/contracts_show_test.rb b/test/integration/contracts_show_test.rb index 2129c7c..3085ac4 100644 --- a/test/integration/contracts_show_test.rb +++ b/test/integration/contracts_show_test.rb @@ -391,6 +391,41 @@ class ContractsShowTest < ActionController::IntegrationTest end end + + should "show the count of the issues by status for the deliverable" do + configure_overhead_plugin + + @manager = User.generate! + + @deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager) + @status1 = IssueStatus.generate! + @status2 = IssueStatus.generate! + + @issue1 = Issue.generate_for_project!(@project, :status => @status1) + @issue2 = Issue.generate_for_project!(@project, :status => @status1) + @issue3 = Issue.generate_for_project!(@project, :status => @status1) + @issue4 = Issue.generate_for_project!(@project, :status => @status2) + + @deliverable1.issues = [@issue1, @issue2, @issue3, @issue4] + + assert_equal 4, @deliverable1.issues.count + + visit_contract_page(@contract) + assert_select "table#deliverables" do + assert_select "tr" do + assert_select "td", :text => /#{@status1}/ + assert_select "td.number", :text => /3/ + end + assert_select "tr" do + assert_select "td", :text => /#{@status2}/ + assert_select "td.number", :text => /1/ + end + assert_select "tr" do + assert_select "td strong", "All" + assert_select "td.number", :text => /4/ + end + end + end should "show the current period for a Retainer" do