62 lines
2.2 KiB
Ruby
62 lines
2.2 KiB
Ruby
|
describe Gestionnaires::GroupeGestionnaireGestionnairesController, type: :controller do
|
||
|
let(:gestionnaire) { create(:gestionnaire).tap { _1.user.update(last_sign_in_at: Time.zone.now) } }
|
||
|
let(:groupe_gestionnaire) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) }
|
||
|
|
||
|
before { sign_in gestionnaire.user }
|
||
|
|
||
|
describe '#create' do
|
||
|
before do
|
||
|
post :create,
|
||
|
params: {
|
||
|
groupe_gestionnaire_id: groupe_gestionnaire.id,
|
||
|
gestionnaire: { email: new_gestionnaire_email }
|
||
|
},
|
||
|
format: :turbo_stream
|
||
|
end
|
||
|
|
||
|
context 'of a new gestionnaire' do
|
||
|
let(:new_gestionnaire_email) { 'new_gestionnaire@mail.com' }
|
||
|
|
||
|
it { expect(groupe_gestionnaire.reload.gestionnaires.map(&:email)).to include(new_gestionnaire_email) }
|
||
|
it { expect(flash.notice).to eq("Les gestionnaires ont bien été affectés au groupe d'administrateurs") }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#destroy' do
|
||
|
let(:gestionnaire) { create(:gestionnaire) }
|
||
|
let(:new_gestionnaire) { create(:gestionnaire) }
|
||
|
|
||
|
before do
|
||
|
groupe_gestionnaire.gestionnaires << gestionnaire << new_gestionnaire
|
||
|
end
|
||
|
|
||
|
def remove_gestionnaire(gestionnaire)
|
||
|
delete :destroy,
|
||
|
params: {
|
||
|
groupe_gestionnaire_id: groupe_gestionnaire.id,
|
||
|
id: gestionnaire.id
|
||
|
},
|
||
|
format: :turbo_stream
|
||
|
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(flash.notice).to eq("Le gestionnaire « #{new_gestionnaire.email} » a été retiré du groupe.") }
|
||
|
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') }
|
||
|
end
|
||
|
end
|
||
|
end
|