From 3e8efce360e3dadac69554d0bdebdcfde918f6e7 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sun, 10 May 2015 23:52:03 -0400 Subject: Refactor SystemNoteService.cross_reference_disallowed? --- app/services/system_note_service.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index a1de050ca5a..0614f8689a4 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -171,13 +171,20 @@ class SystemNoteService note_text.start_with?(cross_reference_note_prefix) end - # Determine if cross reference note should be created. - # eg. mentioning a commit in MR comments which exists inside a MR - # should not create "mentioned in" note. + # Check if a cross-reference is disallowed + # + # This method prevents adding a "mentioned in !1" note on every single commit + # in a merge request. + # + # noteable - Noteable object being referenced + # mentioner - Mentionable object + # + # Returns Boolean def self.cross_reference_disallowed?(noteable, mentioner) - if mentioner.kind_of?(MergeRequest) - mentioner.commits.map(&:id).include? noteable.id - end + return false unless MergeRequest === mentioner + return false unless Commit === noteable + + mentioner.commits.include?(noteable) end def self.cross_reference_exists?(noteable, mentioner) -- cgit v1.2.1