makes ballot's back link point to referer

This commit is contained in:
rgarcia
2017-05-05 20:07:24 +02:00
parent 135744c7a6
commit 8e7ca16c47
4 changed files with 36 additions and 4 deletions

View File

@@ -7,8 +7,8 @@ module Budgets
before_action :load_ballot before_action :load_ballot
before_action :load_tag_cloud before_action :load_tag_cloud
before_action :load_categories before_action :load_categories
before_action :load_investments before_action :load_investments
before_action :load_ballot_referer
load_and_authorize_resource :budget load_and_authorize_resource :budget
load_and_authorize_resource :ballot, class: "Budget::Ballot", through: :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) @categories = ActsAsTaggableOn::Tag.where("kind = 'category'").order(:name)
end end
def load_ballot_referer
@ballot_referer = session[:ballot_referer]
end
end end
end end
end end

View File

@@ -3,9 +3,11 @@ module Budgets
before_action :authenticate_user! before_action :authenticate_user!
load_and_authorize_resource :budget load_and_authorize_resource :budget
before_action :load_ballot before_action :load_ballot
after_action :store_referer, only: [:show]
def show def show
authorize! :show, @ballot authorize! :show, @ballot
session[:ballot_referer] = request.referer
render template: "budgets/ballot/show" render template: "budgets/ballot/show"
end end
@@ -16,5 +18,9 @@ module Budgets
@ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize @ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize
end end
def store_referer
session[:ballot_referer] = request.referer
end
end end
end end

View File

@@ -1,6 +1,6 @@
<div class="expanded budget no-margin-top padding"> <div class="expanded budget no-margin-top padding">
<div class="row"> <div class="row">
<%= render 'shared/back_link' %> <%= back_link_to @ballot_referer %>
<h1 class="text-center"><%= t("budgets.ballots.show.title") %></h1> <h1 class="text-center"><%= t("budgets.ballots.show.title") %></h1>

View File

@@ -350,7 +350,7 @@ feature 'Ballots' do
end 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) investment = create(:budget_investment, :selected, price: 10, heading: new_york)
ballot = create(:budget_ballot, user: user, budget: budget) ballot = create(:budget_ballot, user: user, budget: budget)
ballot.investments << investment ballot.investments << investment
@@ -368,7 +368,7 @@ feature 'Ballots' do
expect(page).to have_content("You have voted 0 proposals") expect(page).to have_content("You have voted 0 proposals")
end 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) investment1 = create(:budget_investment, :selected, price: 10000, heading: new_york)
investment2 = create(:budget_investment, :selected, price: 20000, heading: new_york) investment2 = create(:budget_investment, :selected, price: 20000, heading: new_york)
@@ -405,6 +405,28 @@ feature 'Ballots' do
end end
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 context 'Permissions' do
scenario 'User not logged in', :js do scenario 'User not logged in', :js do