diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 8b9850bca..a2d233ecc 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -4,6 +4,8 @@ class Management::ProposalsController < Management::BaseController include HasOrders include CommentableActions + before_action :check_verified_user, except: :print + before_action :set_proposal, only: :vote before_action :parse_search_terms, only: :index @@ -39,6 +41,12 @@ class Management::ProposalsController < Management::BaseController Proposal 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. def set_proposal_votes(proposals) @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 2603d9297..bf629990f 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -2,61 +2,96 @@ require 'rails_helper' feature 'Proposals' do - scenario 'Creating proposals on behalve of someone' do - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user) - #### + context "Create" do - manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + scenario 'Creating proposals on behalve of someone' do + ####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' - 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' + visit new_management_proposal_path - 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 '¿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 'This is very important because...' - expect(page).to have_content 'http://rescue.org/refugees' - 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) + expect(page).to have_content 'Proposal was successfully created.' + + expect(page).to have_content 'Help refugees' + 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 'This is very important because...' + expect(page).to have_content 'http://rescue.org/refugees' + 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 - scenario 'Voting proposals on behalve of someone', :js do - proposal = create(:proposal) + context "Voting" do - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### + scenario 'Voting proposals on behalve of someone', :js do + proposal = create(:proposal) - manager = create(:manager) - 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 management_proposals_path + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) - within("#proposals") do - find('.in-favor a').click + visit management_proposals_path - expect(page).to have_content "1 support" - expect(page).to have_content "You already supported this proposal, share it!" + within("#proposals") do + 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 - expect(URI.parse(current_url).path).to eq(management_proposals_path) end scenario 'Printing proposals', :js do