From b85fa628822db67a414e72d63bbe98cec2237381 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 27 May 2019 17:22:39 -0400 Subject: [PATCH] FIX: Don't send replies to flags that are ignored by expiry The `AutoQueueHandler` will ignore really old flags. In that case, don't notify the user that the moderator is looking into it. They probably never saw it because it didn't meet the reviewable minimum priority. --- app/jobs/scheduled/auto_queue_handler.rb | 2 +- app/models/reviewable_flagged_post.rb | 4 +++- spec/jobs/auto_queue_handler_spec.rb | 21 +++++++++++++++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/jobs/scheduled/auto_queue_handler.rb b/app/jobs/scheduled/auto_queue_handler.rb index bf498ad645..659aa92c64 100644 --- a/app/jobs/scheduled/auto_queue_handler.rb +++ b/app/jobs/scheduled/auto_queue_handler.rb @@ -16,7 +16,7 @@ module Jobs .each do |reviewable| if reviewable.is_a?(ReviewableFlaggedPost) - reviewable.perform(Discourse.system_user, :ignore) + reviewable.perform(Discourse.system_user, :ignore, expired: true) elsif reviewable.is_a?(ReviewableQueuedPost) reviewable.perform(Discourse.system_user, :reject_post) elsif reviewable.is_a?(ReviewableUser) diff --git a/app/models/reviewable_flagged_post.rb b/app/models/reviewable_flagged_post.rb index a8eea800d3..cd65edc415 100644 --- a/app/models/reviewable_flagged_post.rb +++ b/app/models/reviewable_flagged_post.rb @@ -101,7 +101,9 @@ class ReviewableFlaggedPost < Reviewable action.deferred_by_id = performed_by.id # so callback is called action.save - action.add_moderator_post_if_needed(performed_by, :ignored, args[:post_was_deleted]) + unless args[:expired] + action.add_moderator_post_if_needed(performed_by, :ignored, args[:post_was_deleted]) + end end if actions.first.present? diff --git a/spec/jobs/auto_queue_handler_spec.rb b/spec/jobs/auto_queue_handler_spec.rb index d073718472..771651c3f6 100644 --- a/spec/jobs/auto_queue_handler_spec.rb +++ b/spec/jobs/auto_queue_handler_spec.rb @@ -6,8 +6,24 @@ describe Jobs::AutoQueueHandler do subject { Jobs::AutoQueueHandler.new.execute({}) } - context "old flag" do - fab!(:old) { Fabricate(:reviewable_flagged_post, created_at: 61.days.ago) } + context "old flagged post" do + # fab!(:old) { Fabricate(:reviewable_flagged_post, created_at: 61.days.ago) } + + fab!(:spam_result) do + PostActionCreator.new( + Fabricate(:user), + Fabricate(:post), + PostActionType.types[:spam], + message: 'this is the initial message' + ).perform + end + + fab!(:post_action) { spam_result.post_action } + fab!(:old) { + spam_result.reviewable.update_column(:created_at, 61.days.ago) + spam_result.reviewable + } + fab!(:not_old) { Fabricate(:reviewable_flagged_post, created_at: 59.days.ago) } it "defers the old flag if auto_handle_queued_age is 60" do @@ -15,6 +31,7 @@ describe Jobs::AutoQueueHandler do subject expect(not_old.reload).to be_pending expect(old.reload).not_to be_pending + expect(post_action.related_post.topic.posts_count).to eq(1) end it "doesn't defer the old flag if auto_handle_queued_age is 0" do