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
|