checks for verified users when creating and voting proposals

This commit is contained in:
rgarcia
2015-10-08 15:37:59 +02:00
parent e49bea806b
commit c21a78e164
2 changed files with 84 additions and 41 deletions

View File

@@ -4,6 +4,8 @@ class Management::ProposalsController < Management::BaseController
include HasOrders include HasOrders
include CommentableActions include CommentableActions
before_action :check_verified_user, except: :print
before_action :set_proposal, only: :vote before_action :set_proposal, only: :vote
before_action :parse_search_terms, only: :index before_action :parse_search_terms, only: :index
@@ -39,6 +41,12 @@ class Management::ProposalsController < Management::BaseController
Proposal Proposal
end end
def check_verified_user
unless current_user.level_two_or_three_verified?
redirect_to management_root_path, alert: 'User is not verified'
end
end
#Duplicated in application_controller. Move to a concenrn. #Duplicated in application_controller. Move to a concenrn.
def set_proposal_votes(proposals) def set_proposal_votes(proposals)
@proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {}

View File

@@ -2,61 +2,96 @@ require 'rails_helper'
feature 'Proposals' do feature 'Proposals' do
scenario 'Creating proposals on behalve of someone' do context "Create" do
####CHANGE ME
####Should identify the user being managed
managed_user = create(:user)
####
manager = create(:manager) scenario 'Creating proposals on behalve of someone' do
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) ####CHANGE ME
####Should identify the user being managed
managed_user = create(:user, :level_two)
####
visit new_management_proposal_path manager = create(:manager)
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password)
fill_in 'proposal_title', with: 'Help refugees' visit new_management_proposal_path
fill_in 'proposal_question', with: '¿Would you like to give assistance to war refugees?'
fill_in 'proposal_summary', with: 'In summary, what we want is...'
fill_in 'proposal_description', with: 'This is very important because...'
fill_in 'proposal_external_url', with: 'http://rescue.org/refugees'
fill_in 'proposal_video_url', with: 'http://youtube.com'
fill_in 'proposal_responsible_name', with: 'Isabel Garcia'
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal' fill_in 'proposal_title', with: 'Help refugees'
fill_in 'proposal_question', with: '¿Would you like to give assistance to war refugees?'
fill_in 'proposal_summary', with: 'In summary, what we want is...'
fill_in 'proposal_description', with: 'This is very important because...'
fill_in 'proposal_external_url', with: 'http://rescue.org/refugees'
fill_in 'proposal_video_url', with: 'http://youtube.com'
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
expect(page).to have_content 'Proposal was successfully created.' click_button 'Start a proposal'
expect(page).to have_content 'Help refugees' expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content '¿Would you like to give assistance to war refugees?'
expect(page).to have_content 'In summary, what we want is...' expect(page).to have_content 'Help refugees'
expect(page).to have_content 'This is very important because...' expect(page).to have_content '¿Would you like to give assistance to war refugees?'
expect(page).to have_content 'http://rescue.org/refugees' expect(page).to have_content 'In summary, what we want is...'
expect(page).to have_content 'http://youtube.com' expect(page).to have_content 'This is very important because...'
expect(page).to have_content managed_user.name expect(page).to have_content 'http://rescue.org/refugees'
expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) expect(page).to have_content 'http://youtube.com'
expect(page).to have_content managed_user.name
expect(page).to have_content I18n.l(Proposal.last.created_at.to_date)
end
scenario "Should not allow unverified users to create proposals" do
####CHANGE ME
####Should identify the user being managed
unverified_user = create(:user)
####
manager = create(:manager)
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password)
visit new_management_proposal_path
expect(page).to have_content "User is not verified"
end
end end
scenario 'Voting proposals on behalve of someone', :js do context "Voting" do
proposal = create(:proposal)
####CHANGE ME scenario 'Voting proposals on behalve of someone', :js do
####Should identify the user being managed proposal = create(:proposal)
managed_user = create(:user, :level_two)
####
manager = create(:manager) ####CHANGE ME
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) ####Should identify the user being managed
managed_user = create(:user, :level_two)
####
visit management_proposals_path manager = create(:manager)
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password)
within("#proposals") do visit management_proposals_path
find('.in-favor a').click
expect(page).to have_content "1 support" within("#proposals") do
expect(page).to have_content "You already supported this proposal, share it!" find('.in-favor a').click
expect(page).to have_content "1 support"
expect(page).to have_content "You already supported this proposal, share it!"
end
expect(URI.parse(current_url).path).to eq(management_proposals_path)
end
scenario "Should not allow unverified users to vote proposals", :focus do
proposal = create(:proposal)
####CHANGE ME
####Should identify the user being managed
unverified_user = create(:user)
####
manager = create(:manager)
visit management_sign_in_path(login: manager.username, clave_usuario: manager.password)
visit management_proposals_path
expect(page).to have_content "User is not verified"
end end
expect(URI.parse(current_url).path).to eq(management_proposals_path)
end end
scenario 'Printing proposals', :js do scenario 'Printing proposals', :js do