From a308e2a44560affe3691e1998e1f72456d13f760 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Fri, 4 Jan 2019 21:24:08 +0100 Subject: [PATCH] FIX: Do not assign the same user more than once This prevents resending assignment notification emails. --- lib/topic_assigner.rb | 2 ++ spec/lib/topic_assigner_spec.rb | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/topic_assigner.rb b/lib/topic_assigner.rb index 1513fd3..7a80de6 100644 --- a/lib/topic_assigner.rb +++ b/lib/topic_assigner.rb @@ -131,6 +131,8 @@ SQL end def assign(assign_to, silent: false) + return false if @topic.custom_fields[ASSIGNED_TO_ID] == assign_to.id.to_s + @topic.custom_fields[ASSIGNED_TO_ID] = assign_to.id @topic.custom_fields[ASSIGNED_BY_ID] = @assigned_by.id @topic.save_custom_fields diff --git a/spec/lib/topic_assigner_spec.rb b/spec/lib/topic_assigner_spec.rb index c32341e..9863bcf 100644 --- a/spec/lib/topic_assigner_spec.rb +++ b/spec/lib/topic_assigner_spec.rb @@ -114,6 +114,19 @@ RSpec.describe TopicAssigner do .to eq(moderator.id) end end + + it "doesn't assign the same user more than once" do + SiteSetting.assign_mailer_enabled = true + + Email::Sender.any_instance.expects(:send).once + expect(assigner.assign(moderator)).to eq(true) + + Email::Sender.any_instance.expects(:send).never + expect(assigner.assign(moderator)).to eq(false) + + Email::Sender.any_instance.expects(:send).once + expect(assigner.assign(Fabricate(:moderator))).to eq(true) + end end context "unassign_on_close" do