demarches-normaliennes/spec/controllers/manager/groupe_gestionnaires_controller_spec.rb
2023-12-21 18:40:36 +01:00

88 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 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