woo hoo - getting there with the cross-reference issue. Should fix the problem and updated spec
This commit is contained in:
parent
a5b011c9d8
commit
4089be8fed
|
@ -280,6 +280,7 @@ class SystemNoteService
|
|||
# mentioner - Mentionable object
|
||||
#
|
||||
# Returns Boolean
|
||||
|
||||
def self.cross_reference_exists?(noteable, mentioner)
|
||||
# Initial scope should be system notes of this noteable type
|
||||
notes = Note.system.where(noteable_type: noteable.class)
|
||||
|
@ -291,14 +292,20 @@ class SystemNoteService
|
|||
notes = notes.where(noteable_id: noteable.id)
|
||||
end
|
||||
|
||||
gfm_reference = mentioner.gfm_reference(nil)
|
||||
notes = notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{gfm_reference}")
|
||||
|
||||
notes.count > 0
|
||||
notes_for_mentioner(mentioner, noteable, notes).count > 0
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.notes_for_mentioner(mentioner, noteable, notes)
|
||||
if mentioner.is_a?(Commit)
|
||||
notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{mentioner.to_reference(nil)}")
|
||||
else
|
||||
gfm_reference = mentioner.gfm_reference(noteable.project)
|
||||
notes.where(note: cross_reference_note_content(gfm_reference))
|
||||
end
|
||||
end
|
||||
|
||||
def self.create_note(args = {})
|
||||
Note.create(args.merge(system: true))
|
||||
end
|
||||
|
|
|
@ -425,18 +425,20 @@ describe SystemNoteService, services: true do
|
|||
end
|
||||
end
|
||||
|
||||
context 'commit from fork' do
|
||||
context 'commit with cross-reference from fork' do
|
||||
let(:author2) { create(:user) }
|
||||
let(:forked_project) { Projects::ForkService.new(project, author2).execute }
|
||||
let(:commit2) { forked_project.commit }
|
||||
|
||||
before do
|
||||
described_class.cross_reference(noteable, commit2, author2)
|
||||
allow(commit0).to receive(:to_reference) { noteable.project.to_reference +
|
||||
commit0.class.reference_prefix + commit0.id}
|
||||
described_class.cross_reference(noteable, commit0, author2)
|
||||
end
|
||||
|
||||
it 'is falsey when is a fork mentioning an external issue' do
|
||||
it 'is true when a fork mentions an external issue' do
|
||||
expect(described_class.cross_reference_exists?(noteable, commit2)).
|
||||
to be_falsey
|
||||
to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue