Skip spam check for task list updates

Task list updates should not mark users action as spam on akismet.
This commit is contained in:
Felipe Artur 2019-07-09 15:21:10 +00:00 committed by Dmitriy Zaporozhets
parent 54820ac996
commit bdbaebf87e
4 changed files with 25 additions and 4 deletions

View file

@ -182,7 +182,7 @@ class IssuableBaseService < BaseService
# To be overridden by subclasses
end
def before_update(issuable)
def before_update(issuable, skip_spam_check: false)
# To be overridden by subclasses
end
@ -257,7 +257,7 @@ class IssuableBaseService < BaseService
last_edited_at: Time.now,
last_edited_by: current_user))
before_update(issuable)
before_update(issuable, skip_spam_check: true)
if issuable.with_transaction_returning_status { issuable.save }
# We do not touch as it will affect a update on updated_at field

View file

@ -17,8 +17,8 @@ module Issues
super
end
def before_update(issue)
spam_check(issue, current_user)
def before_update(issue, skip_spam_check: false)
spam_check(issue, current_user) unless skip_spam_check
end
def handle_changes(issue, options)

View file

@ -0,0 +1,5 @@
---
title: Skip spam check for task list updates
merge_request: 30279
author:
type: fixed

View file

@ -480,6 +480,22 @@ describe Issues::UpdateService, :mailer do
update_issue(description: "- [x] Task 1\n- [X] Task 2")
end
it 'does not check for spam on task status change' do
params = {
update_task: {
index: 1,
checked: false,
line_source: '- [x] Task 1',
line_number: 1
}
}
service = described_class.new(project, user, params)
expect(service).not_to receive(:spam_check)
service.execute(issue)
end
it 'creates system note about task status change' do
note1 = find_note('marked the task **Task 1** as completed')
note2 = find_note('marked the task **Task 2** as completed')