From a20bcd34da97f7e5ad16205a7cef6b5d1a5d369f Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 28 Jan 2021 12:41:30 -0500 Subject: [PATCH] FIX: Approving a user was not sending an email (#11883) When we made rejection emails optional we accidentally changed the default for approval emails from true to false. --- app/controllers/reviewables_controller.rb | 2 +- spec/requests/reviewables_controller_spec.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/controllers/reviewables_controller.rb b/app/controllers/reviewables_controller.rb index 35474d8152..c83e8800ce 100644 --- a/app/controllers/reviewables_controller.rb +++ b/app/controllers/reviewables_controller.rb @@ -189,7 +189,7 @@ class ReviewablesController < ApplicationController return render_json_error(error) end - args.merge!(reject_reason: params[:reject_reason], send_email: params[:send_email] == "true") if reviewable.type == 'ReviewableUser' + args.merge!(reject_reason: params[:reject_reason], send_email: params[:send_email] != "false") if reviewable.type == 'ReviewableUser' result = reviewable.perform(current_user, params[:action_id].to_sym, args) rescue Reviewable::InvalidAction => e diff --git a/spec/requests/reviewables_controller_spec.rb b/spec/requests/reviewables_controller_spec.rb index 521a5cdefc..708add4968 100644 --- a/spec/requests/reviewables_controller_spec.rb +++ b/spec/requests/reviewables_controller_spec.rb @@ -357,6 +357,7 @@ describe ReviewablesController do it "succeeds for a valid action" do other_reviewable = Fabricate(:reviewable) + SiteSetting.must_approve_users = true put "/review/#{reviewable.id}/perform/approve_user.json?version=#{reviewable.version}" expect(response.code).to eq("200") json = response.parsed_body @@ -369,6 +370,20 @@ describe ReviewablesController do expect(reviewable.reload.version).to eq(1) expect(other_reviewable.reload.version).to eq(0) + + job = Jobs::CriticalUserEmail.jobs.first + expect(job).to be_present + expect(job['args'][0]['type']).to eq('signup_after_approval') + end + + it "doesn't send email when `send_email` is false" do + other_reviewable = Fabricate(:reviewable) + + SiteSetting.must_approve_users = true + put "/review/#{reviewable.id}/perform/approve_user.json?version=#{reviewable.version}&send_email=false" + + job = Jobs::CriticalUserEmail.jobs.first + expect(job).to be_blank end context "claims" do