diff --git a/app/components/valuation/budgets/row_component.html.erb b/app/components/valuation/budgets/row_component.html.erb index 5ba9933f8..279617bd3 100644 --- a/app/components/valuation/budgets/row_component.html.erb +++ b/app/components/valuation/budgets/row_component.html.erb @@ -6,7 +6,7 @@ <%= budget.current_phase.name %> - <%= investments.count %> + <%= valuation_open_investments_count %> <% if investments.any? %> diff --git a/app/components/valuation/budgets/row_component.rb b/app/components/valuation/budgets/row_component.rb index 4b75b196e..fd9417bd2 100644 --- a/app/components/valuation/budgets/row_component.rb +++ b/app/components/valuation/budgets/row_component.rb @@ -9,8 +9,14 @@ class Valuation::Budgets::RowComponent < ApplicationComponent end def investments - return Budget::Investment.none unless budget.valuating? + return Budget::Investment.none unless budget.valuating_or_later? - budget.investments.visible_to_valuators.by_valuator(current_user.valuator).valuation_open + budget.investments.visible_to_valuators.by_valuator(current_user.valuator) + end + + def valuation_open_investments_count + return 0 unless budget.valuating? + + investments.valuation_open.count end end diff --git a/spec/components/valuation/budgets/row_component_spec.rb b/spec/components/valuation/budgets/row_component_spec.rb index 5ec3d5258..384ec05e6 100644 --- a/spec/components/valuation/budgets/row_component_spec.rb +++ b/spec/components/valuation/budgets/row_component_spec.rb @@ -17,8 +17,29 @@ describe Valuation::Budgets::RowComponent do expect(page).to have_selector ".investments-count", text: "1" end - it "displays zero when the budget is not in the valuating phase" do - budget = create(:budget, %i[accepting finished].sample) + it "does not count investments with valuation finished" do + budget = create(:budget, :valuating) + create(:budget_investment, :visible_to_valuators, + budget: budget, + valuators: [valuator], + valuation_finished: true) + + render_inline Valuation::Budgets::RowComponent.new(budget: budget) + + expect(page).to have_selector ".investments-count", text: "0" + end + + it "displays zero when the budget hasn't reached the valuating phase" do + budget = create(:budget, :accepting) + create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator]) + + render_inline Valuation::Budgets::RowComponent.new(budget: budget) + + expect(page).to have_selector ".investments-count", text: "0" + end + + it "displays zero when the valuating phase is over" do + budget = create(:budget, :finished) create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator]) render_inline Valuation::Budgets::RowComponent.new(budget: budget) @@ -37,6 +58,18 @@ describe Valuation::Budgets::RowComponent do expect(page).to have_link "Evaluate" end + it "is shown when the assigned investments have finished valuation" do + budget = create(:budget, :valuating) + create(:budget_investment, :visible_to_valuators, + budget: budget, + valuators: [valuator], + valuation_finished: true) + + render_inline Valuation::Budgets::RowComponent.new(budget: budget) + + expect(page).to have_link "Evaluate" + end + it "is not shown when the assigned investments aren't visible to valuators" do budget = create(:budget, :valuating) create(:budget_investment, :invisible_to_valuators, budget: budget, valuators: [valuator]) @@ -64,13 +97,13 @@ describe Valuation::Budgets::RowComponent do expect(page).not_to have_link "Evaluate" end - it "is not shown when the valuating phase is over" do + it "is shown when the valuating phase is over" do budget = create(:budget, :finished) create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator]) render_inline Valuation::Budgets::RowComponent.new(budget: budget) - expect(page).not_to have_link "Evaluate" + expect(page).to have_link "Evaluate" end end end