From 045adb76f2d4b98e57c528451b70b62a7401d3b4 Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Mon, 12 Apr 2021 08:03:10 -0700 Subject: [PATCH] FIX: only send user suspension emails if email message provided (#12666) This makes behavior consistent with documentation: API: > Will send an email with this message when present Web UI: > Optionally, provide more information about the suspension and it will be emailed to the user --- app/controllers/admin/users_controller.rb | 14 ++++++++------ spec/requests/admin/users_controller_spec.rb | 11 +++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 0e5567313c9..d71762b2ac4 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -124,12 +124,14 @@ class Admin::UsersController < Admin::AdminController end @user.logged_out - Jobs.enqueue( - :critical_user_email, - type: :account_suspended, - user_id: @user.id, - user_history_id: user_history.id - ) + if message && !message.empty? + Jobs.enqueue( + :critical_user_email, + type: :account_suspended, + user_id: @user.id, + user_history_id: user_history.id + ) + end DiscourseEvent.trigger( :user_suspended, diff --git a/spec/requests/admin/users_controller_spec.rb b/spec/requests/admin/users_controller_spec.rb index 68d470eb7d9..e756c6cbd26 100644 --- a/spec/requests/admin/users_controller_spec.rb +++ b/spec/requests/admin/users_controller_spec.rb @@ -133,10 +133,13 @@ RSpec.describe Admin::UsersController do it "works properly" do expect(user).not_to be_suspended - put "/admin/users/#{user.id}/suspend.json", params: { - suspend_until: 5.hours.from_now, - reason: "because I said so" - } + + expect do + put "/admin/users/#{user.id}/suspend.json", params: { + suspend_until: 5.hours.from_now, + reason: "because I said so" + } + end.to change { Jobs::CriticalUserEmail.jobs.size }.by(0) expect(response.status).to eq(200)