feat: remove_gestionnaire
This commit is contained in:
parent
b100c8380e
commit
d5637ac7aa
55 changed files with 400 additions and 537 deletions
|
@ -0,0 +1,82 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue