diff --git a/app/controllers/idv/gpo_controller.rb b/app/controllers/idv/gpo_controller.rb index 4e7f6d9b122..7140bb9f87c 100644 --- a/app/controllers/idv/gpo_controller.rb +++ b/app/controllers/idv/gpo_controller.rb @@ -98,10 +98,7 @@ def confirmation_maker_perform end def send_reminder - current_user.confirmed_email_addresses.each do |email_address| - UserMailer.with(user: current_user, email_address: email_address). - letter_reminder.deliver_now_or_later - end + current_user.send_email_to_all_addresses(:letter_reminder) end def pii_locked? diff --git a/app/controllers/idv/review_controller.rb b/app/controllers/idv/review_controller.rb index 2cb7ad61914..abb564e7492 100644 --- a/app/controllers/idv/review_controller.rb +++ b/app/controllers/idv/review_controller.rb @@ -92,6 +92,7 @@ def init_profile idv_session.create_profile_from_applicant_with_password(password) if idv_session.address_verification_mechanism == 'gpo' + current_user.send_email_to_all_addresses(:letter_reminder) analytics.idv_gpo_address_letter_enqueued(enqueued_at: Time.zone.now, resend: false) end diff --git a/app/models/user.rb b/app/models/user.rb index 1cebb21ba08..1f1a18c4405 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -403,6 +403,16 @@ def send_confirmation_instructions add_method_tracer :send_devise_notification, "Custom/#{name}/send_devise_notification" + def send_email_to_all_addresses(user_mailer_template) + confirmed_email_addresses.each do |email_address| + UserMailer.with( + user: self, + email_address: email_address, + ).send(user_mailer_template). + deliver_now_or_later + end + end + private def lockout_period diff --git a/spec/controllers/idv/gpo_controller_spec.rb b/spec/controllers/idv/gpo_controller_spec.rb index 7a06cc0d416..c6286253ea1 100644 --- a/spec/controllers/idv/gpo_controller_spec.rb +++ b/spec/controllers/idv/gpo_controller_spec.rb @@ -214,9 +214,7 @@ def expect_resend_letter_to_send_letter_and_redirect(otp:) expect(gpo_confirmation_maker).to receive(:perform) expect(gpo_confirmation_maker).to receive(:otp) if otp - - put :create - + expect { put :create }.to change { ActionMailer::Base.deliveries.count }.by(1) expect(response).to redirect_to idv_come_back_later_path end end diff --git a/spec/controllers/idv/review_controller_spec.rb b/spec/controllers/idv/review_controller_spec.rb index e7a0d2c6d80..998331d3770 100644 --- a/spec/controllers/idv/review_controller_spec.rb +++ b/spec/controllers/idv/review_controller_spec.rb @@ -668,6 +668,15 @@ def show expect(profile).to_not be_active end + it 'sends an email about the gpo letter' do + expect do + put :create, + params: { + user: { password: ControllerHelper::VALID_PASSWORD }, + } + end.to(change { ActionMailer::Base.deliveries.count }.by(1)) + end + it 'redirects to come back later page' do put :create, params: { user: { password: ControllerHelper::VALID_PASSWORD } } diff --git a/spec/features/idv/steps/review_step_spec.rb b/spec/features/idv/steps/review_step_spec.rb index 99a0ff02841..7f8c11d543f 100644 --- a/spec/features/idv/steps/review_step_spec.rb +++ b/spec/features/idv/steps/review_step_spec.rb @@ -59,12 +59,17 @@ complete_idv_steps_with_gpo_before_review_step(user) end - it 'sends a letter and creates an unverified profile' do + it 'sends a letter, creates an unverified profile, and sends an email' do fill_in 'Password', with: user_password + email_count_before_continue = ActionMailer::Base.deliveries.count + expect { click_continue }. to change { GpoConfirmation.count }.from(0).to(1) + expect_delivered_email_count(email_count_before_continue + 1) + expect(last_email.subject).to eq(t('user_mailer.letter_reminder.subject')) + expect(user.events.account_verified.size).to be(0) expect(user.profiles.count).to eq 1