diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index ba02e18ad..b0f25ae1a 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -1253,16 +1253,12 @@ display: inline-block; margin-bottom: $line-height / 2; - &:hover { - background: $highlight; - text-decoration: none; - } - a { display: block; padding: $line-height / 2; &:hover { + background: $highlight; text-decoration: none; } } diff --git a/app/helpers/budgets_helper.rb b/app/helpers/budgets_helper.rb index b05c0ea4c..3f13a2fcb 100644 --- a/app/helpers/budgets_helper.rb +++ b/app/helpers/budgets_helper.rb @@ -48,8 +48,8 @@ module BudgetsHelper end def css_for_ballot_heading(heading) - return '' if current_ballot.blank? - current_ballot.has_lines_in_heading?(heading) ? 'is-active' : '' + return "" if current_ballot.blank? || @current_filter == "unfeasible" + current_ballot.has_lines_in_heading?(heading) ? "is-active" : "" end def current_ballot 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/app/views/budgets/groups/show.html.erb b/app/views/budgets/groups/show.html.erb index 2d3bf6335..bd7f4bcf8 100644 --- a/app/views/budgets/groups/show.html.erb +++ b/app/views/budgets/groups/show.html.erb @@ -26,7 +26,7 @@ <% end %>
-
+
<% @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) %>
-

+

    <% show_links = show_links_to_budget_investments(current_budget) %> <% if show_links %> - <%= link_to budget_url(current_budget) do %> - <%= t("budgets.index.investment_proyects") %> - <% end %>
    +
  • + <%= link_to budget_url(current_budget) do %> + <%= t("budgets.index.investment_proyects") %> + <% end %> +
  • <% end %> - <%= link_to budget_url(current_budget, filter: 'unfeasible') do %> - <%= t("budgets.index.unfeasible_investment_proyects") %> - <% end %>
    - <% if show_links %> - <%= link_to budget_url(current_budget, filter: 'unselected') do %> - <%= t("budgets.index.not_selected_investment_proyects") %> +
  • + <%= link_to budget_url(current_budget, filter: "unfeasible") do %> + <%= t("budgets.index.unfeasible_investment_proyects") %> <% end %> +
  • + <% if show_links %> +
  • + <%= link_to budget_url(current_budget, filter: "unselected") do %> + <%= t("budgets.index.not_selected_investment_proyects") %> + <% end %> +
  • <% end %> -

    +
<% end %>
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)