diff --git a/app/controllers/new_gestionnaire/avis_controller.rb b/app/controllers/new_gestionnaire/avis_controller.rb index 3fd9b2376..2ca36e4c6 100644 --- a/app/controllers/new_gestionnaire/avis_controller.rb +++ b/app/controllers/new_gestionnaire/avis_controller.rb @@ -87,7 +87,14 @@ module NewGestionnaire gestionnaire = Gestionnaire.new(email: email, password: password) if gestionnaire.save + user = User.find_by(email: email) + if user.blank? + user = User.create(email: email, password: password) + end + + sign_in(user) sign_in(gestionnaire, scope: :gestionnaire) + Avis.link_avis_to_gestionnaire(gestionnaire) avis = Avis.find(params[:id]) redirect_to url_for(gestionnaire_avis_index_path) diff --git a/spec/controllers/new_gestionnaire/avis_controller_spec.rb b/spec/controllers/new_gestionnaire/avis_controller_spec.rb index 684c5717b..1e429cc2a 100644 --- a/spec/controllers/new_gestionnaire/avis_controller_spec.rb +++ b/spec/controllers/new_gestionnaire/avis_controller_spec.rb @@ -216,6 +216,8 @@ describe NewGestionnaire::AvisController, type: :controller do end describe '#create_gestionnaire' do + let(:existing_user_mail) { 'dummy@example.org' } + let!(:existing_user) { create(:user, email: existing_user_mail) } let(:invited_email) { 'invited@avis.com' } let(:dossier) { create(:dossier) } let!(:avis) { create(:avis, email: invited_email, dossier: dossier) } @@ -254,6 +256,19 @@ describe NewGestionnaire::AvisController, type: :controller do it { expect(subject.current_gestionnaire).to eq(created_gestionnaire) } it { is_expected.to redirect_to gestionnaire_avis_index_path } + + it 'creates a corresponding user account for the email' do + user = User.find_by(email: invited_email) + expect(user).to be_present + end + + context 'when there already is a user account with the same email' do + let(:existing_user_mail) { invited_email } + + it 'still creates a gestionnaire account' do + expect(created_gestionnaire).to be_present + end + end end context 'when the gestionnaire creation fails' do