diff --git a/app/controllers/spending_proposals_controller.rb b/app/controllers/spending_proposals_controller.rb index 49ef0c285..9d13bbc2e 100644 --- a/app/controllers/spending_proposals_controller.rb +++ b/app/controllers/spending_proposals_controller.rb @@ -31,7 +31,7 @@ class SpendingProposalsController < ApplicationController end def destroy - spending_proposal = current_user.spending_proposals.find(params[:id]) + spending_proposal = SpendingProposal.find(params[:id]) spending_proposal.destroy redirect_to user_path(current_user, filter: 'spending_proposals'), notice: t('flash.actions.destroy.spending_proposal') end diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index 78cb60806..1b440795f 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -37,7 +37,7 @@ module Abilities can :manage, Annotation - can [:read, :update], SpendingProposal + can [:read, :update, :destroy], SpendingProposal end end end diff --git a/app/models/abilities/common.rb b/app/models/abilities/common.rb index 92eacea52..1eddb0484 100644 --- a/app/models/abilities/common.rb +++ b/app/models/abilities/common.rb @@ -44,7 +44,6 @@ module Abilities can :vote, Proposal can :vote_featured, Proposal can :create, SpendingProposal - can :destroy, SpendingProposal, author_id: user.id end can :create, Annotation diff --git a/spec/features/spending_proposals_spec.rb b/spec/features/spending_proposals_spec.rb index d63b00f30..f600a2bc9 100644 --- a/spec/features/spending_proposals_spec.rb +++ b/spec/features/spending_proposals_spec.rb @@ -132,10 +132,12 @@ feature 'Spending proposals' do context "Destroy" do - scenario "User can destroy owned spending proposals" do + scenario "Admin can destroy owned spending proposals" do + admin = create(:administrator) user = create(:user, :level_two) spending_proposal = create(:spending_proposal, author: user) - login_as(user) + + login_as(admin.user) visit user_path(user) within("#spending_proposal_#{spending_proposal.id}") do diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb index eff63b18b..93369a2c9 100644 --- a/spec/features/users_spec.rb +++ b/spec/features/users_spec.rb @@ -240,19 +240,19 @@ feature 'Users' do expect(page).to have_content('Build a school') end - scenario 'delete button is shown if logged in user is author' do + scenario 'delete button is not shown if logged in user is author' do login_as(@author) visit user_path(@author) within("#spending_proposal_#{@spending_proposal.id}") do - expect(page).to have_content('Delete') + expect(page).to_not have_content('Delete') end end - scenario 'delete button is not shown if logged in user is admin' do + scenario 'delete button is shown if logged in user is admin' do login_as(create(:administrator).user) visit user_path(@author) within("#spending_proposal_#{@spending_proposal.id}") do - expect(page).to_not have_content('Delete') + expect(page).to have_content('Delete') end end diff --git a/spec/models/abilities/administrator_spec.rb b/spec/models/abilities/administrator_spec.rb index b5ee78dd0..f9ed7a0c5 100644 --- a/spec/models/abilities/administrator_spec.rb +++ b/spec/models/abilities/administrator_spec.rb @@ -55,4 +55,5 @@ describe "Abilities::Administrator" do it { should be_able_to(:read, SpendingProposal) } it { should be_able_to(:update, SpendingProposal) } it { should be_able_to(:valuate, SpendingProposal) } + it { should be_able_to(:destroy, SpendingProposal) } end diff --git a/spec/models/abilities/common_spec.rb b/spec/models/abilities/common_spec.rb index 8c90f7cea..468173797 100644 --- a/spec/models/abilities/common_spec.rb +++ b/spec/models/abilities/common_spec.rb @@ -92,7 +92,7 @@ describe "Abilities::Common" do it { should be_able_to(:create, SpendingProposal) } it { should_not be_able_to(:destroy, create(:spending_proposal)) } - it { should be_able_to(:destroy, own_spending_proposal) } + it { should_not be_able_to(:destroy, own_spending_proposal) } end describe "when level 3 verified" do @@ -104,6 +104,6 @@ describe "Abilities::Common" do it { should be_able_to(:create, SpendingProposal) } it { should_not be_able_to(:destroy, create(:spending_proposal)) } - it { should be_able_to(:destroy, own_spending_proposal) } + it { should_not be_able_to(:destroy, own_spending_proposal) } end end