45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
|
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
|