From 8e7ca16c4745ad68426ffe3895f2a08bb8dd945e Mon Sep 17 00:00:00 2001 From: rgarcia Date: Fri, 5 May 2017 20:07:24 +0200 Subject: [PATCH] makes ballot's back link point to referer --- .../budgets/ballot/lines_controller.rb | 6 ++++- app/controllers/budgets/ballots_controller.rb | 6 +++++ app/views/budgets/ballot/_ballot.html.erb | 2 +- spec/features/budgets/ballots_spec.rb | 26 +++++++++++++++++-- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/app/controllers/budgets/ballot/lines_controller.rb b/app/controllers/budgets/ballot/lines_controller.rb index 2feb83e5e..522589dfe 100644 --- a/app/controllers/budgets/ballot/lines_controller.rb +++ b/app/controllers/budgets/ballot/lines_controller.rb @@ -7,8 +7,8 @@ module Budgets before_action :load_ballot before_action :load_tag_cloud before_action :load_categories - before_action :load_investments + before_action :load_ballot_referer load_and_authorize_resource :budget load_and_authorize_resource :ballot, class: "Budget::Ballot", through: :budget @@ -73,6 +73,10 @@ module Budgets @categories = ActsAsTaggableOn::Tag.where("kind = 'category'").order(:name) end + def load_ballot_referer + @ballot_referer = session[:ballot_referer] + end + end end end diff --git a/app/controllers/budgets/ballots_controller.rb b/app/controllers/budgets/ballots_controller.rb index ce531e145..b5b63b4aa 100644 --- a/app/controllers/budgets/ballots_controller.rb +++ b/app/controllers/budgets/ballots_controller.rb @@ -3,9 +3,11 @@ module Budgets before_action :authenticate_user! load_and_authorize_resource :budget before_action :load_ballot + after_action :store_referer, only: [:show] def show authorize! :show, @ballot + session[:ballot_referer] = request.referer render template: "budgets/ballot/show" end @@ -16,5 +18,9 @@ module Budgets @ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize end + def store_referer + session[:ballot_referer] = request.referer + end + end end diff --git a/app/views/budgets/ballot/_ballot.html.erb b/app/views/budgets/ballot/_ballot.html.erb index b83005185..0bf49097f 100644 --- a/app/views/budgets/ballot/_ballot.html.erb +++ b/app/views/budgets/ballot/_ballot.html.erb @@ -1,6 +1,6 @@
- <%= render 'shared/back_link' %> + <%= back_link_to @ballot_referer %>

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

diff --git a/spec/features/budgets/ballots_spec.rb b/spec/features/budgets/ballots_spec.rb index 50670079c..b79d3c468 100644 --- a/spec/features/budgets/ballots_spec.rb +++ b/spec/features/budgets/ballots_spec.rb @@ -350,7 +350,7 @@ feature 'Ballots' do end - scenario 'Removing spending proposals from ballot', :js do + scenario 'Removing investments from ballot', :js do investment = create(:budget_investment, :selected, price: 10, heading: new_york) ballot = create(:budget_ballot, user: user, budget: budget) ballot.investments << investment @@ -368,7 +368,7 @@ feature 'Ballots' do expect(page).to have_content("You have voted 0 proposals") end - scenario 'Removing spending proposals from ballot (sidebar)', :js do + scenario 'Removing investments from ballot (sidebar)', :js do investment1 = create(:budget_investment, :selected, price: 10000, heading: new_york) investment2 = create(:budget_investment, :selected, price: 20000, heading: new_york) @@ -405,6 +405,28 @@ feature 'Ballots' do end end + scenario 'Back link after removing an investment from Ballot', :js do + investment = create(:budget_investment, :selected, heading: new_york, price: 10) + + login_as(user) + visit budget_investments_path(budget, heading_id: new_york.id) + add_to_ballot(investment) + + click_link "Check my ballot" + + expect(page).to have_content("You have voted one proposal") + + within("#budget_investment_#{investment.id}") do + find(".remove-investment-project").trigger('click') + end + + expect(page).to have_content("You have voted 0 proposals") + + click_link "Go back" + + expect(page).to have_current_path(budget_investments_path(budget, heading_id: new_york.id)) + end + context 'Permissions' do scenario 'User not logged in', :js do