82 lines
2.5 KiB
Ruby
82 lines
2.5 KiB
Ruby
describe Manager::GroupeGestionnairesController, type: :controller do
|
|
let(:super_admin) { create(:super_admin) }
|
|
let(:groupe_gestionnaire) { create(:groupe_gestionnaire) }
|
|
|
|
before { sign_in super_admin }
|
|
|
|
describe '#index' do
|
|
render_views
|
|
|
|
before do
|
|
groupe_gestionnaire
|
|
get :index
|
|
end
|
|
|
|
it { expect(response.body).to include(groupe_gestionnaire.name) }
|
|
end
|
|
|
|
describe '#show' do
|
|
render_views
|
|
|
|
before do
|
|
get :show, params: { id: groupe_gestionnaire.id }
|
|
end
|
|
|
|
it { expect(response.body).to include(groupe_gestionnaire.name) }
|
|
end
|
|
|
|
describe '#add_gestionnaire' do
|
|
before do
|
|
post :add_gestionnaire,
|
|
params: {
|
|
id: groupe_gestionnaire.id,
|
|
emails: new_gestionnaire_email
|
|
}
|
|
end
|
|
|
|
context 'of a new gestionnaire' do
|
|
let(:new_gestionnaire_email) { 'new_gestionnaire@mail.com' }
|
|
|
|
it { expect(groupe_gestionnaire.gestionnaires.map(&:email)).to include(new_gestionnaire_email) }
|
|
it { expect(flash.notice).to be_present }
|
|
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
|
end
|
|
end
|
|
|
|
describe '#remove_gestionnaire' do
|
|
let(:gestionnaire) { create(:gestionnaire) }
|
|
let(:new_gestionnaire) { create(:gestionnaire) }
|
|
|
|
before do
|
|
groupe_gestionnaire.gestionnaires << gestionnaire << new_gestionnaire
|
|
end
|
|
|
|
def remove_gestionnaire(gestionnaire)
|
|
delete :remove_gestionnaire,
|
|
params: {
|
|
id: groupe_gestionnaire.id,
|
|
gestionnaire: { id: gestionnaire.id }
|
|
}
|
|
end
|
|
|
|
context 'when there are many gestionnaires' do
|
|
before { remove_gestionnaire(new_gestionnaire) }
|
|
|
|
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
|
it { expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1) }
|
|
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
|
end
|
|
|
|
context 'when there is only one gestionnaire' do
|
|
before do
|
|
remove_gestionnaire(new_gestionnaire)
|
|
remove_gestionnaire(gestionnaire)
|
|
end
|
|
|
|
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
|
it { expect(groupe_gestionnaire.gestionnaires.count).to eq(1) }
|
|
it { expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine') }
|
|
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
|
end
|
|
end
|
|
end
|