require 'spec_helper' describe NewGestionnaire::ProceduresController, type: :controller do describe 'before_action: ensure_ownership!' do it 'is present' do before_actions = NewGestionnaire::ProceduresController ._process_action_callbacks .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} .map(&:filter) expect(before_actions).to include(:ensure_ownership!) end end describe 'ensure_ownership!' do let(:gestionnaire) { create(:gestionnaire) } before do @controller.params[:procedure_id] = asked_procedure.id expect(@controller).to receive(:current_gestionnaire).and_return(gestionnaire) allow(@controller).to receive(:redirect_to) @controller.send(:ensure_ownership!) end context 'when a gestionnaire asks for its procedure' do let(:asked_procedure) { create(:procedure, gestionnaires: [gestionnaire]) } it 'does not redirects nor flash' do expect(@controller).not_to have_received(:redirect_to) expect(flash.alert).to eq(nil) end end context 'when a gestionnaire asks for another procedure' do let(:asked_procedure) { create(:procedure) } it 'redirects and flash' do expect(@controller).to have_received(:redirect_to).with(root_path) expect(flash.alert).to eq("Vous n'avez pas accès à cette procédure") end end end end