diff --git a/app/views/admin/budgets/_form.html.erb b/app/views/admin/budgets/_form.html.erb index 7c8175613..2755d51e0 100644 --- a/app/views/admin/budgets/_form.html.erb +++ b/app/views/admin/budgets/_form.html.erb @@ -62,8 +62,8 @@
- <% if @budget.balloting_process? %> - <%= link_to t("admin.budgets.winners.calculate"), + <% if display_calculate_winners_button?(@budget) %> + <%= link_to calculate_winner_button_text(@budget), calculate_winners_admin_budget_path(@budget), method: :put, class: "button hollow" %> 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