one merge at a time

This commit is contained in:
simon lehericey 2021-10-26 16:18:12 +02:00
parent adfac5fb7b
commit 9041e201e8
3 changed files with 13 additions and 2 deletions

View file

@ -18,8 +18,12 @@ module Users
if requested_user.present? if requested_user.present?
current_user.ask_for_merge(requested_user) current_user.ask_for_merge(requested_user)
current_user.update(unconfirmed_email: nil)
flash.notice = t('devise.registrations.update_needs_confirmation') flash.notice = t('devise.registrations.update_needs_confirmation')
elsif current_user.update(update_email_params) elsif current_user.update(update_email_params)
current_user.update(requested_merge_into: nil)
flash.notice = t('devise.registrations.update_needs_confirmation') flash.notice = t('devise.registrations.update_needs_confirmation')
else else
flash.alert = current_user.errors.full_messages flash.alert = current_user.errors.full_messages

View file

@ -21,11 +21,12 @@
Votre email est actuellement Votre email est actuellement
%span.email-address= current_user.email %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 %p.mb-4
Changement en attente : Changement en attente :
%span.email-address= current_user.unconfirmed_email %span.email-address= waiting_email
%br %br
Pour finaliser votre changement dadresse, vérifiez vos emails et cliquez sur le lien de confirmation. Pour finaliser votre changement dadresse, vérifiez vos emails et cliquez sur le lien de confirmation.

View file

@ -49,12 +49,16 @@ describe Users::ProfilController, type: :controller do
describe 'PATCH #update_email' do describe 'PATCH #update_email' do
context 'when everything is fine' do context 'when everything is fine' do
let(:previous_request) { create(:user) }
before do before do
user.update(requested_merge_into: previous_request)
patch :update_email, params: { user: { email: 'loulou@lou.com' } } patch :update_email, params: { user: { email: 'loulou@lou.com' } }
user.reload user.reload
end end
it { expect(user.unconfirmed_email).to eq('loulou@lou.com') } 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(response).to redirect_to(profil_path) }
it { expect(flash.notice).to eq(I18n.t('devise.registrations.update_needs_confirmation')) } it { expect(flash.notice).to eq(I18n.t('devise.registrations.update_needs_confirmation')) }
end end
@ -63,6 +67,8 @@ describe Users::ProfilController, type: :controller do
let(:existing_user) { create(:user) } let(:existing_user) { create(:user) }
before do before do
user.update(unconfirmed_email: 'unconfirmed@mail.com')
expect_any_instance_of(User).to receive(:ask_for_merge).with(existing_user) expect_any_instance_of(User).to receive(:ask_for_merge).with(existing_user)
perform_enqueued_jobs do perform_enqueued_jobs do