diff --git a/app/controllers/users/profil_controller.rb b/app/controllers/users/profil_controller.rb index 3d68ccfe9..8af489871 100644 --- a/app/controllers/users/profil_controller.rb +++ b/app/controllers/users/profil_controller.rb @@ -18,8 +18,12 @@ module Users if requested_user.present? current_user.ask_for_merge(requested_user) + current_user.update(unconfirmed_email: nil) + flash.notice = t('devise.registrations.update_needs_confirmation') elsif current_user.update(update_email_params) + current_user.update(requested_merge_into: nil) + flash.notice = t('devise.registrations.update_needs_confirmation') else flash.alert = current_user.errors.full_messages diff --git a/app/views/users/profil/show.html.haml b/app/views/users/profil/show.html.haml index 4bb8e0932..d7946c721 100644 --- a/app/views/users/profil/show.html.haml +++ b/app/views/users/profil/show.html.haml @@ -21,11 +21,12 @@ Votre email est actuellement %span.email-address= current_user.email - - if current_user.unconfirmed_email.present? + - waiting_email = current_user.unconfirmed_email || current_user.requested_merge_into&.email + - if waiting_email.present? %p.mb-4 Changement en attente : - %span.email-address= current_user.unconfirmed_email + %span.email-address= waiting_email %br Pour finaliser votre changement d’adresse, vérifiez vos emails et cliquez sur le lien de confirmation. diff --git a/spec/controllers/users/profil_controller_spec.rb b/spec/controllers/users/profil_controller_spec.rb index 89baac76e..6e3bd3779 100644 --- a/spec/controllers/users/profil_controller_spec.rb +++ b/spec/controllers/users/profil_controller_spec.rb @@ -49,12 +49,16 @@ describe Users::ProfilController, type: :controller do describe 'PATCH #update_email' do context 'when everything is fine' do + let(:previous_request) { create(:user) } + before do + user.update(requested_merge_into: previous_request) patch :update_email, params: { user: { email: 'loulou@lou.com' } } user.reload end it { expect(user.unconfirmed_email).to eq('loulou@lou.com') } + it { expect(user.requested_merge_into).to be_nil } it { expect(response).to redirect_to(profil_path) } it { expect(flash.notice).to eq(I18n.t('devise.registrations.update_needs_confirmation')) } end @@ -63,6 +67,8 @@ describe Users::ProfilController, type: :controller do let(:existing_user) { create(:user) } before do + user.update(unconfirmed_email: 'unconfirmed@mail.com') + expect_any_instance_of(User).to receive(:ask_for_merge).with(existing_user) perform_enqueued_jobs do