90 lines
2.5 KiB
Ruby
90 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
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 do
|
|
expect(groupe_gestionnaire.gestionnaires.map(&:email)).to include(new_gestionnaire_email)
|
|
expect(flash.notice).to be_present
|
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
|
end
|
|
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 do
|
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
|
expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1)
|
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
|
end
|
|
end
|
|
|
|
context 'when there is only one gestionnaire' do
|
|
before do
|
|
remove_gestionnaire(new_gestionnaire)
|
|
remove_gestionnaire(gestionnaire)
|
|
end
|
|
|
|
it do
|
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
|
expect(groupe_gestionnaire.gestionnaires.count).to eq(1)
|
|
expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine')
|
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
|
end
|
|
end
|
|
end
|
|
end
|