users can view their own spending proposals

This commit is contained in:
rgarcia
2016-02-21 14:28:48 +01:00
parent 575b0e105f
commit 2291caa3fd
2 changed files with 30 additions and 7 deletions

View File

@@ -1,11 +1,11 @@
class SpendingProposalsController < ApplicationController class SpendingProposalsController < ApplicationController
include FeatureFlags include FeatureFlags
before_action :authenticate_user!, except: [:index]
before_action :verify_valuator, only: [:show]
load_and_authorize_resource load_and_authorize_resource
before_action :authenticate_user!, except: [:index]
before_action :verify_access, only: [:show]
feature_flag :spending_proposals feature_flag :spending_proposals
def index def index
@@ -20,7 +20,7 @@ class SpendingProposalsController < ApplicationController
@spending_proposal.author = current_user @spending_proposal.author = current_user
if @spending_proposal.save_with_captcha if @spending_proposal.save_with_captcha
redirect_to spending_proposals_path, notice: t("flash.actions.create.spending_proposal") redirect_to @spending_proposal, notice: t("flash.actions.create.spending_proposal")
else else
render :new render :new
end end
@@ -32,8 +32,8 @@ class SpendingProposalsController < ApplicationController
params.require(:spending_proposal).permit(:title, :description, :external_url, :geozone_id, :association_name, :terms_of_service, :captcha, :captcha_key) params.require(:spending_proposal).permit(:title, :description, :external_url, :geozone_id, :association_name, :terms_of_service, :captcha, :captcha_key)
end end
def verify_valuator def verify_access
raise CanCan::AccessDenied unless current_user.try(:valuator?) || current_user.try(:administrator?) raise CanCan::AccessDenied unless current_user.try(:valuator?) || current_user.try(:administrator?) || @spending_proposal.author == current_user
end end
end end

View File

@@ -2,7 +2,7 @@ require 'rails_helper'
feature 'Spending proposals' do feature 'Spending proposals' do
let(:author) { create(:user, :level_two) } let(:author) { create(:user, :level_two, username: 'Isabel') }
scenario 'Index' do scenario 'Index' do
visit spending_proposals_path visit spending_proposals_path
@@ -33,6 +33,11 @@ feature 'Spending proposals' do
click_button 'Create' click_button 'Create'
expect(page).to have_content 'Spending proposal created successfully' expect(page).to have_content 'Spending proposal created successfully'
expect(page).to have_content('Build a skyscraper')
expect(page).to have_content('I want to live in a high tower over the clouds')
expect(page).to have_content('Isabel')
expect(page).to have_content('People of the neighbourhood')
expect(page).to have_content('All city')
end end
scenario 'Captcha is required for proposal creation' do scenario 'Captcha is required for proposal creation' do
@@ -100,6 +105,24 @@ feature 'Spending proposals' do
expect(page).to have_content(spending_proposal.geozone.name) expect(page).to have_content(spending_proposal.geozone.name)
end end
scenario "Show (as author)" do
author = create(:user)
login_as(author)
spending_proposal = create(:spending_proposal,
geozone: create(:geozone),
association_name: 'People of the neighbourhood',
author: author)
visit spending_proposal_path(spending_proposal)
expect(page).to have_content(spending_proposal.title)
expect(page).to have_content(spending_proposal.description)
expect(page).to have_content(spending_proposal.author.name)
expect(page).to have_content(spending_proposal.association_name)
expect(page).to have_content(spending_proposal.geozone.name)
end
scenario "Show (as user)" do scenario "Show (as user)" do
user = create(:user) user = create(:user)
login_as(user) login_as(user)