Account deletion email: serialize only user's details (#9752)
* Account deletion email: serialize only user's details * Fix specs and mailer preview
This commit is contained in:
parent
c18b0f1ba1
commit
8b60a18735
5 changed files with 18 additions and 12 deletions
|
|
@ -104,11 +104,10 @@ class NotifyMailer < ApplicationMailer
|
|||
end
|
||||
|
||||
def account_deleted_email
|
||||
user = params[:user]
|
||||
@name = user.name
|
||||
@name = params[:name]
|
||||
|
||||
subject = "#{ApplicationConfig['COMMUNITY_NAME']} - Account Deletion Confirmation"
|
||||
mail(to: user.email, subject: subject)
|
||||
mail(to: params[:email], subject: subject)
|
||||
end
|
||||
|
||||
def account_deletion_requested_email
|
||||
|
|
|
|||
|
|
@ -11,7 +11,10 @@ module Users
|
|||
Users::Delete.call(user)
|
||||
return if admin_delete || user.email.blank?
|
||||
|
||||
NotifyMailer.with(user: user).account_deleted_email.deliver_now
|
||||
# at this point the user object is already destroyed on the DB,
|
||||
# thus we pass the data we need to render to deliver the email, not the
|
||||
# whole object
|
||||
NotifyMailer.with(name: user.name, email: user.email).account_deleted_email.deliver_now
|
||||
rescue StandardError => e
|
||||
DatadogStatsClient.count("users.delete", 1, tags: ["action:failed", "user_id:#{user.id}"])
|
||||
Honeybadger.context({ user_id: user.id })
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ RSpec.describe NotifyMailer, type: :mailer do
|
|||
end
|
||||
|
||||
describe "#account_deleted_email" do
|
||||
let(:email) { described_class.with(user: user).account_deleted_email }
|
||||
let(:email) { described_class.with(name: user.name, email: user.email).account_deleted_email }
|
||||
|
||||
it "renders proper subject" do
|
||||
expect(email.subject).to eq("#{ApplicationConfig['COMMUNITY_NAME']} - Account Deletion Confirmation")
|
||||
|
|
|
|||
|
|
@ -77,7 +77,8 @@ class NotifyMailerPreview < ActionMailer::Preview
|
|||
end
|
||||
|
||||
def account_deleted_email
|
||||
NotifyMailer.with(user: User.last).account_deleted_email
|
||||
user = User.last
|
||||
NotifyMailer.with(name: user.name, email: user.email).account_deleted_email
|
||||
end
|
||||
|
||||
def export_email
|
||||
|
|
|
|||
|
|
@ -7,15 +7,18 @@ RSpec.describe Users::DeleteWorker, type: :worker do
|
|||
let(:message_delivery) { double }
|
||||
|
||||
describe "#perform" do
|
||||
let(:user) { create(:user) }
|
||||
let!(:user) { create(:user) }
|
||||
let(:delete) { Users::Delete }
|
||||
|
||||
before do
|
||||
allow(delete).to receive(:call)
|
||||
end
|
||||
|
||||
context "when user is found" do
|
||||
it "deletes the user correctly" do
|
||||
worker.perform(user.id)
|
||||
|
||||
expect(User.exists?(id: user.id)).to be(false)
|
||||
end
|
||||
|
||||
it "calls the service when a user is found" do
|
||||
allow(delete).to receive(:call)
|
||||
worker.perform(user.id)
|
||||
expect(delete).to have_received(:call).with(user)
|
||||
end
|
||||
|
|
@ -39,7 +42,7 @@ RSpec.describe Users::DeleteWorker, type: :worker do
|
|||
|
||||
worker.perform(user.id)
|
||||
|
||||
expect(mailer_class).to have_received(:with).with(user: user)
|
||||
expect(mailer_class).to have_received(:with).with(name: user.name, email: user.email)
|
||||
expect(mailer).to have_received(:account_deleted_email)
|
||||
expect(message_delivery).to have_received(:deliver_now)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue