diff --git a/app/views/budgets/ballot/_ballot.html.erb b/app/views/budgets/ballot/_ballot.html.erb new file mode 100644 index 000000000..a6529306b --- /dev/null +++ b/app/views/budgets/ballot/_ballot.html.erb @@ -0,0 +1,55 @@ +
+ + <%= render 'shared/back_link' %> + +

<%= t("budgets.ballots.show.title") %>

+ +
+

+ <%= t("budgets.ballots.show.voted_html", + count: @ballot.investments.count) %> +

+

+ + <%= t("budgets.ballots.show.voted_info_html") %> + +

+
+
+ +
+ <% @ballot.groups.each do |group| %> +
+

+ <%= group.name %> - <%= group.headings.first.name %> +

+ <% if @ballot.has_lines_in_group?(group) %> +

+ <%= t("budgets.ballots.show.amount_spent") %> + + <%= format_price(@budget, @ballot.amount_spent(@ballot.heading_for_group(group).id)) %> + +

+ <% else %> +

+ <%= t("budgets.ballots.show.zero") %>
+ <%= link_to t("budgets.ballots.show.heading_link"), + budget_investments_path(budget, heading_id: heading.id), + data: { no_turbolink: true } %> +

+ <% end %> + +
    + <%= render partial: 'budgets/ballot/investment', + collection: @ballot.investments.by_group(group.id) %> +
+ +

+ <%= t("budgets.ballots.show.remaining", + amount_city: format_price(@budget, @ballot.amount_available(@ballot.heading_for_group(group)))).html_safe %> +

+
+ <% end %> +
+
\ No newline at end of file diff --git a/app/views/budgets/ballot/_investment.html.erb b/app/views/budgets/ballot/_investment.html.erb index a2358a434..db30e4167 100644 --- a/app/views/budgets/ballot/_investment.html.erb +++ b/app/views/budgets/ballot/_investment.html.erb @@ -3,12 +3,12 @@ <%= format_price(@budget, investment.price) %> <% if @budget.balloting? %> - <%# link_to budget_ballot_line_path(budget, id: investment.id), + <%= link_to budget_ballot_line_path(@budget, id: investment.id), title: t('budgets.ballots.show.remove'), class: "remove-investment-project", method: :delete, remote: true do %> - <%# end %> + <% end %> <% end %> diff --git a/app/views/budgets/ballot/lines/destroy.js.erb b/app/views/budgets/ballot/lines/destroy.js.erb index 0e59bef9d..aaa5ea302 100644 --- a/app/views/budgets/ballot/lines/destroy.js.erb +++ b/app/views/budgets/ballot/lines/destroy.js.erb @@ -1,6 +1,6 @@ $("#progress_bar").html('<%= j render("budgets/ballot/progress_bar", ballot: @ballot) %>'); -$("#sidebar").html('<%= j render("spending_proposals/sidebar") %>'); -// $("#ballot").html('<%# j render("ballots/ballot") %>') +$("#sidebar").html('<%= j render("budgets/investments/sidebar") %>'); +$("#ballot").html('<%= j render("budgets/ballot/ballot") %>') $("#<%= dom_id(@investment) %>_ballot").html('<%= j render("budgets/investments/ballot", investment: @investment) %>'); <%= render 'refresh_ballots' %> diff --git a/app/views/budgets/ballot/show.html.erb b/app/views/budgets/ballot/show.html.erb index de48bb73f..b4aaa2d46 100644 --- a/app/views/budgets/ballot/show.html.erb +++ b/app/views/budgets/ballot/show.html.erb @@ -1,57 +1,3 @@
-
- - <%= render 'shared/back_link' %> - -

<%= t("budgets.ballots.show.title") %>

- -
-

- <%= t("budgets.ballots.show.voted_html", - count: @ballot.investments.count) %> -

-

- - <%= t("budgets.ballots.show.voted_info_html") %> - -

-
-
- -
- <% @ballot.groups.each do |group| %> -
-

- <%= group.name %> - <%= group.headings.first.name %> -

- <% if @ballot.has_lines_in_group?(group) %> -

- <%= t("budgets.ballots.show.amount_spent") %> - - <%= format_price(@budget, @ballot.amount_spent(@ballot.heading_for_group(group).id)) %> - -

- <% else %> -

- <%= t("budgets.ballots.show.zero") %>
- <%= link_to t("budgets.ballots.show.heading_link"), - budget_investments_path(budget, heading_id: heading.id), - data: { no_turbolink: true } %> -

- <% end %> - -
    - <%= render partial: 'budgets/ballot/investment', - collection: @ballot.investments.by_group(group.id) %> -
- -

- <%= t("budgets.ballots.show.remaining", - amount_city: format_price(@budget, @ballot.amount_available(@ballot.heading_for_group(group)))).html_safe %> -

-
- <% end %> -
-
+ <%= render "budgets/ballot/ballot" %>
diff --git a/spec/features/budgets/ballots_spec.rb b/spec/features/budgets/ballots_spec.rb index f75cdca77..90a89cd04 100644 --- a/spec/features/budgets/ballots_spec.rb +++ b/spec/features/budgets/ballots_spec.rb @@ -363,93 +363,56 @@ feature 'Ballots' do scenario 'Removing spending proposals from ballot', :js do user = create(:user, :level_two) - ballot = create(:ballot, user: user) - sp = create(:spending_proposal, :feasible, :finished, price: 10) - ballot.spending_proposals = [sp] + ballot = create(:budget_ballot, user: user, budget: budget) + investment = create(:budget_investment, :feasible, :finished, price: 10, heading: heading, group: group) + create(:budget_ballot_line, ballot: ballot, investment: investment, heading: heading, group: group) login_as(user) - visit ballot_path + visit budget_ballot_path(budget) - expect(page).to have_content("You voted one proposal") + expect(page).to have_content("You have voted one proposal") - within("#spending_proposal_#{sp.id}") do + within("#budget_investment_#{investment.id}") do find(".remove-investment-project").trigger('click') end - expect(current_path).to eq(ballot_path) - expect(page).to have_content("You voted 0 proposals") + expect(current_path).to eq(budget_ballot_path(budget)) + expect(page).to have_content("You have voted 0 proposals") end - scenario 'Removing spending proposals from ballot (sidebar)', :js do + scenario 'Removing spending proposals from ballot (sidebar)', :js, :focus do user = create(:user, :level_two) - sp1 = create(:spending_proposal, :feasible, :finished, price: 10000) - sp2 = create(:spending_proposal, :feasible, :finished, price: 20000) + investment1 = create(:budget_investment, :feasible, :finished, price: 10000, heading: heading) + investment2 = create(:budget_investment, :feasible, :finished, price: 20000, heading: heading) - ballot = create(:ballot, user: user, spending_proposals: [sp1, sp2]) + ballot = create(:budget_ballot, budget: budget, user: user, investments: [investment1, investment2]) login_as(user) - visit spending_proposals_path(geozone: 'all') + visit budget_investments_path(budget, heading_id: heading.id) expect(page).to have_css("#amount-spent", text: "€30,000") - expect(page).to have_css("#amount-available", text: "€23,970,000") + expect(page).to have_css("#amount-available", text: "€970,000") within("#sidebar") do - expect(page).to have_content sp1.title + expect(page).to have_content investment1.title expect(page).to have_content "€10,000" - expect(page).to have_content sp2.title + expect(page).to have_content investment2.title expect(page).to have_content "€20,000" end - within("#sidebar #spending_proposal_#{sp1.id}_sidebar") do + within("#sidebar #budget_investment_#{investment1.id}_sidebar") do find(".remove-investment-project").trigger('click') end expect(page).to have_css("#amount-spent", text: "€20,000") - expect(page).to have_css("#amount-available", text: "€23,980,000") + expect(page).to have_css("#amount-available", text: "€980,000") within("#sidebar") do - expect(page).to_not have_content sp1.title + expect(page).to_not have_content investment1.title expect(page).to_not have_content "€10,000" - expect(page).to have_content sp2.title - expect(page).to have_content "€20,000" - end - end - - scenario 'Removing spending proposals from ballot (sidebar)', :js do - user = create(:user, :level_two) - sp1 = create(:spending_proposal, :feasible, :finished, price: 10000) - sp2 = create(:spending_proposal, :feasible, :finished, price: 20000) - - ballot = create(:ballot, user: user, spending_proposals: [sp1, sp2]) - - login_as(user) - visit spending_proposals_path(geozone: 'all') - - expect(page).to have_css("#amount-spent", text: "€30,000") - expect(page).to have_css("#amount-available", text: "€23,970,000") - - within("#sidebar") do - expect(page).to have_content sp1.title - expect(page).to have_content "€10,000" - - expect(page).to have_content sp2.title - expect(page).to have_content "€20,000" - end - - within("#sidebar #spending_proposal_#{sp1.id}_sidebar") do - find(".remove-investment-project").trigger('click') - end - - expect(page).to have_css("#amount-spent", text: "€20,000") - expect(page).to have_css("#amount-available", text: "€23,980,000") - - within("#sidebar") do - expect(page).to_not have_content sp1.title - expect(page).to_not have_content "€10,000" - - expect(page).to have_content sp2.title + expect(page).to have_content investment2.title expect(page).to have_content "€20,000" end end