diff --git a/app/models/budget/result.rb b/app/models/budget/result.rb index 60a852547..661b0bd94 100644 --- a/app/models/budget/result.rb +++ b/app/models/budget/result.rb @@ -9,9 +9,13 @@ class Budget def calculate_winners reset_winners - investments.compatible.each do |investment| - @current_investment = investment - set_winner if inside_budget? + if @budget.hide_money? + investments.compatible.update_all(winner: true) + else + investments.compatible.each do |investment| + @current_investment = investment + set_winner if inside_budget? + end end end diff --git a/app/views/budgets/results/_results_table.html.erb b/app/views/budgets/results/_results_table.html.erb index 696ea2280..75adcbe9f 100644 --- a/app/views/budgets/results/_results_table.html.erb +++ b/app/views/budgets/results/_results_table.html.erb @@ -13,14 +13,16 @@ <%= t("budgets.results.ballot_lines_count") %> - - <%= t("budgets.results.price") %> - - <% if results_type == :compatible %> - - <%= t("budgets.results.amount_available") %>
- <%= @budget.formatted_amount(heading_price) %>
+ <% if @budget.show_money? %> + + <%= t("budgets.results.price") %> + <% if results_type == :compatible %> + + <%= t("budgets.results.amount_available") %>
+ <%= @budget.formatted_amount(heading_price) %>
+ + <% end %> <% end %> @@ -50,15 +52,17 @@ <%= investment.ballot_lines_count %> - - <%= @budget.formatted_amount(investment.price) %> - - <% if results_type == :compatible %> - - <%= @budget.formatted_amount(amount_available - investment.price) %> - <% amount_available -= investment.price if investment.winner? %> + <% if @budget.show_money? %> + + <%= @budget.formatted_amount(investment.price) %> + <% if results_type == :compatible %> + + <%= @budget.formatted_amount(amount_available - investment.price) %> + <% amount_available -= investment.price if investment.winner? %> + + <% end %> <% end %> <% end %> diff --git a/spec/system/budgets/results_spec.rb b/spec/system/budgets/results_spec.rb index 41d84fbf1..7c6b5f1c1 100644 --- a/spec/system/budgets/results_spec.rb +++ b/spec/system/budgets/results_spec.rb @@ -67,6 +67,41 @@ describe "Results" do end end + scenario "Does not show price and available budget when hide money" do + budget.update!(voting_style: "approval", hide_money: true) + visit budget_path(budget) + click_link "See results" + + expect(page).to have_content investment1.title + expect(page).to have_content investment2.title + expect(page).not_to have_content investment1.price + expect(page).not_to have_content investment2.price + expect(page).not_to have_content "Price" + expect(page).not_to have_content "Available budget" + expect(page).not_to have_content "€" + end + + scenario "Does not have in account the price on hide money budgets" do + budget.update!(voting_style: "approval", hide_money: true) + heading.update!(price: 0) + + inv1 = create(:budget_investment, :selected, heading: heading, price: 2000, ballot_lines_count: 1000) + inv2 = create(:budget_investment, :selected, heading: heading, price: 5000, ballot_lines_count: 1000) + + Budget::Result.new(budget, heading).calculate_winners + + visit budget_path(budget) + click_link "See results" + + expect(page).to have_content inv1.title + expect(page).to have_content inv2.title + expect(page).not_to have_content inv1.price + expect(page).not_to have_content inv2.price + expect(page).not_to have_content "Price" + expect(page).not_to have_content "Available budget" + expect(page).not_to have_content "€" + end + scenario "Does not raise error if budget (slug or id) is not found" do visit budget_results_path("wrong budget")