From d1ebcae82e91f2cc6a98b3b789134b906b0ada11 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Fri, 9 Jun 2023 12:08:55 -0400 Subject: [PATCH 1/5] LG-9966 Spec and first (really ugly) implementation To be refactored; pushed for CI run --- app/controllers/idv/review_controller.rb | 5 +++++ spec/features/idv/steps/review_step_spec.rb | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/controllers/idv/review_controller.rb b/app/controllers/idv/review_controller.rb index 2cb7ad61914..8b556359142 100644 --- a/app/controllers/idv/review_controller.rb +++ b/app/controllers/idv/review_controller.rb @@ -92,6 +92,11 @@ def init_profile idv_session.create_profile_from_applicant_with_password(password) if idv_session.address_verification_mechanism == 'gpo' + 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 + analytics.idv_gpo_address_letter_enqueued(enqueued_at: Time.zone.now, resend: false) end 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 From 8006b033cb52b2d1607ef9a3b32ecc323ef89ff0 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Fri, 9 Jun 2023 15:42:59 -0400 Subject: [PATCH 2/5] Refactoring: Pulled common code out to User --- app/controllers/idv/gpo_controller.rb | 4 +--- app/controllers/idv/review_controller.rb | 6 +----- app/models/user.rb | 9 +++++++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/controllers/idv/gpo_controller.rb b/app/controllers/idv/gpo_controller.rb index 4e7f6d9b122..50513c659af 100644 --- a/app/controllers/idv/gpo_controller.rb +++ b/app/controllers/idv/gpo_controller.rb @@ -98,9 +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 + current_user.send_email_to_all_addresses(:letter_reminder) end end diff --git a/app/controllers/idv/review_controller.rb b/app/controllers/idv/review_controller.rb index 8b556359142..abb564e7492 100644 --- a/app/controllers/idv/review_controller.rb +++ b/app/controllers/idv/review_controller.rb @@ -92,11 +92,7 @@ def init_profile idv_session.create_profile_from_applicant_with_password(password) if idv_session.address_verification_mechanism == 'gpo' - 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) 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..962d85a1ef5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -403,6 +403,15 @@ 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 From f53cd034c4771632f19dda202234c89f2c7cf868 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Fri, 9 Jun 2023 16:17:51 -0400 Subject: [PATCH 3/5] Added email sent checks to GpoController and ReviewController specs When user enqueue a GPO letter Co-authored-by: Sonia Connolly --- app/controllers/idv/gpo_controller.rb | 1 - spec/controllers/idv/gpo_controller_spec.rb | 4 +--- spec/controllers/idv/review_controller_spec.rb | 6 ++++++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/controllers/idv/gpo_controller.rb b/app/controllers/idv/gpo_controller.rb index 50513c659af..7140bb9f87c 100644 --- a/app/controllers/idv/gpo_controller.rb +++ b/app/controllers/idv/gpo_controller.rb @@ -99,7 +99,6 @@ def confirmation_maker_perform def send_reminder current_user.send_email_to_all_addresses(:letter_reminder) - end end def pii_locked? diff --git a/spec/controllers/idv/gpo_controller_spec.rb b/spec/controllers/idv/gpo_controller_spec.rb index 7a06cc0d416..4c187e24db2 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..b962efd5480 100644 --- a/spec/controllers/idv/review_controller_spec.rb +++ b/spec/controllers/idv/review_controller_spec.rb @@ -668,6 +668,12 @@ def show expect(profile).to_not be_active end + it 'sends an email about the gpo letter' do + expect { put :create, params: { user: { password: ControllerHelper::VALID_PASSWORD } } }.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 } } From 1833e2f7acab6fddd4eb560c2a83799188f7a2b3 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Tue, 13 Jun 2023 12:05:38 -0400 Subject: [PATCH 4/5] Lint changelog: User-Facing Improvements,Verify by mail,Send an email on initial GPO letter request --- app/models/user.rb | 7 ++++--- spec/controllers/idv/review_controller_spec.rb | 9 ++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 962d85a1ef5..1f1a18c4405 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -405,9 +405,10 @@ def send_confirmation_instructions 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). + UserMailer.with( + user: self, + email_address: email_address, + ).send(user_mailer_template). deliver_now_or_later end end diff --git a/spec/controllers/idv/review_controller_spec.rb b/spec/controllers/idv/review_controller_spec.rb index b962efd5480..998331d3770 100644 --- a/spec/controllers/idv/review_controller_spec.rb +++ b/spec/controllers/idv/review_controller_spec.rb @@ -669,9 +669,12 @@ def show end it 'sends an email about the gpo letter' do - expect { put :create, params: { user: { password: ControllerHelper::VALID_PASSWORD } } }.to( - change { ActionMailer::Base.deliveries.count }.by(1), - ) + 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 From e5ed11c3fa2fe0f52c646907c5acba547f9b057c Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Tue, 13 Jun 2023 12:22:19 -0400 Subject: [PATCH 5/5] Spec fix --- spec/controllers/idv/gpo_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/idv/gpo_controller_spec.rb b/spec/controllers/idv/gpo_controller_spec.rb index 4c187e24db2..c6286253ea1 100644 --- a/spec/controllers/idv/gpo_controller_spec.rb +++ b/spec/controllers/idv/gpo_controller_spec.rb @@ -214,7 +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 - expect { put :create }.to(change { ActionMailer::Base.deliveries.count }).by(1) + expect { put :create }.to change { ActionMailer::Base.deliveries.count }.by(1) expect(response).to redirect_to idv_come_back_later_path end end