<% @group.headings.order_by_group_name.each_slice(7) do |slice| %>
diff --git a/app/views/budgets/index.html.erb b/app/views/budgets/index.html.erb
index dfc656a42..440f929e9 100644
--- a/app/views/budgets/index.html.erb
+++ b/app/views/budgets/index.html.erb
@@ -94,22 +94,28 @@
<%= render_map(nil, "budgets", false, nil, @budgets_coordinates) %>
diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb
index 49543417d..29620a726 100644
--- a/app/views/budgets/investments/_investment_show.html.erb
+++ b/app/views/budgets/investments/_investment_show.html.erb
@@ -150,7 +150,7 @@
<%= t("budgets.investments.show.project_unfeasible_html") %>
- <% elsif investment.winner? %>
+ <% elsif investment.winner? && @budget.finished? %>
<%= t("budgets.investments.show.project_winner") %>
diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb
index 7e5a6be03..74e063351 100644
--- a/spec/features/admin/budget_investments_spec.rb
+++ b/spec/features/admin/budget_investments_spec.rb
@@ -359,20 +359,30 @@ feature 'Admin budget investments' do
end
scenario "Disable 'Calculate winner' button if incorrect phase" do
- budget.update(phase: 'reviewing_ballots')
+ budget.update(phase: "reviewing_ballots")
visit admin_budget_budget_investments_path(budget)
- click_link 'Winners'
+ click_link "Winners"
expect(page).to have_link "Calculate Winner Investments"
- budget.update(phase: 'accepting')
+ visit edit_admin_budget_path(budget)
+
+ expect(page).to have_link "Calculate Winner Investments"
+
+ budget.update(phase: "accepting")
visit admin_budget_budget_investments_path(budget)
- click_link 'Winners'
+ click_link "Winners"
+
+ expect(page).not_to have_link "Calculate Winner Investments"
+ expect(page).to have_content 'The budget has to stay on phase "Balloting projects", '\
+ '"Reviewing Ballots" or "Finished budget" in order '\
+ "to calculate winners projects"
+
+ visit edit_admin_budget_path(budget)
expect(page).not_to have_link "Calculate Winner Investments"
- expect(page).to have_content 'The budget has to stay on phase "Balloting projects", "Reviewing Ballots" or "Finished budget" in order to calculate winners projects'
end
scenario "Filtering by minimum number of votes", :js do
diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb
index d3efb5de3..fc8479ed1 100644
--- a/spec/features/admin/budgets_spec.rb
+++ b/spec/features/admin/budgets_spec.rb
@@ -220,14 +220,33 @@ feature 'Admin budgets' do
expect(page).to have_content 'See results'
end
- scenario 'For a finished Budget' do
- budget = create(:budget, phase: 'finished')
- allow_any_instance_of(Budget).to receive(:has_winning_investments?).and_return true
+ scenario "For a finished Budget" do
+ budget = create(:budget, phase: "finished")
+ allow_any_instance_of(Budget).to receive(:has_winning_investments?).and_return(true)
visit edit_admin_budget_path(budget)
- expect(page).not_to have_content 'Calculate Winner Investments'
- expect(page).to have_content 'See results'
+ expect(page).to have_content "Calculate Winner Investments"
+ expect(page).to have_content "See results"
+ end
+
+ scenario "Recalculate for a finished Budget" do
+ budget = create(:budget, phase: "finished")
+ group = create(:budget_group, budget: budget)
+ heading = create(:budget_heading, group: group)
+ create(:budget_investment, :winner, heading: heading)
+
+ visit edit_admin_budget_path(budget)
+
+ expect(page).to have_content "Recalculate Winner Investments"
+ expect(page).to have_content "See results"
+ expect(page).not_to have_content "Calculate Winner Investments"
+
+ visit admin_budget_budget_investments_path(budget)
+ click_link "Winners"
+
+ expect(page).to have_content "Recalculate Winner Investments"
+ expect(page).not_to have_content "Calculate Winner Investments"
end
end
diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb
index 533b8d543..c07dd16c0 100644
--- a/spec/features/budgets/investments_spec.rb
+++ b/spec/features/budgets/investments_spec.rb
@@ -1073,7 +1073,8 @@ feature 'Budget Investments' do
expect(page).to have_content("This investment project has been selected for balloting phase")
end
- scenario "Show (winner budget investment)" do
+ scenario "Show (winner budget investment) only if budget is finished" do
+ budget.update(phase: "balloting")
user = create(:user)
login_as(user)
@@ -1088,6 +1089,12 @@ feature 'Budget Investments' do
visit budget_investment_path(budget_id: budget.id, id: investment.id)
+ expect(page).not_to have_content("Winning investment project")
+
+ budget.update(phase: "finished")
+
+ visit budget_investment_path(budget_id: budget.id, id: investment.id)
+
expect(page).to have_content("Winning investment project")
end
@@ -1506,6 +1513,39 @@ feature 'Budget Investments' do
end
end
+ scenario "Highlight voted heading except with unfeasible filter", :js do
+ budget.update(phase: "balloting")
+ user = create(:user, :level_two)
+
+ heading_1 = create(:budget_heading, group: group, name: "Heading 1")
+ heading_2 = create(:budget_heading, group: group, name: "Heading 2")
+ investment = create(:budget_investment, :selected, heading: heading_1)
+
+ login_as(user)
+ visit budget_path(budget)
+
+ click_link "Health"
+ click_link "Heading 1"
+
+ add_to_ballot(investment)
+
+ visit budget_group_path(budget, group)
+
+ expect(page).to have_css("#budget_heading_#{heading_1.id}.is-active")
+ expect(page).to have_css("#budget_heading_#{heading_2.id}")
+
+ visit budget_group_path(budget, group)
+
+ click_link "See unfeasible investments"
+ click_link "Health"
+
+ within("#headings") do
+ expect(page).to have_css("#budget_heading_#{heading_1.id}")
+ expect(page).to have_css("#budget_heading_#{heading_2.id}")
+ expect(page).not_to have_css(".is-active")
+ end
+ end
+
scenario 'Ballot is visible' do
login_as(author)