Skip to content
Snippets Groups Projects
Commit 70b926e0 authored by Jarka Kadlecova's avatar Jarka Kadlecova
Browse files

Fix cross referencing for private and internal projects

parent 667005d5
No related branches found
No related tags found
2 merge requests!12073Add RC2 changes to 9-3-stable,!11243Fix cross referencing for private and internal projects
Pipeline #
Loading
Loading
@@ -44,14 +44,15 @@ module Mentionable
end
 
def all_references(current_user = nil, extractor: nil)
@extractors ||= {}
# Use custom extractor if it's passed in the function parameters.
if extractor
@extractor = extractor
@extractors[current_user] = extractor
else
@extractor ||= Gitlab::ReferenceExtractor.
new(project, current_user)
extractor = @extractors[current_user] ||= Gitlab::ReferenceExtractor.new(project, current_user)
 
@extractor.reset_memoized_values
extractor.reset_memoized_values
end
 
self.class.mentionable_attrs.each do |attr, options|
Loading
Loading
@@ -62,10 +63,10 @@ module Mentionable
skip_project_check: skip_project_check?
)
 
@extractor.analyze(text, options)
extractor.analyze(text, options)
end
 
@extractor
extractor
end
 
def mentioned_users(current_user = nil)
Loading
Loading
---
title: Fix cross referencing for private and internal projects
merge_request: 11243
author:
require 'spec_helper'
describe 'Create notes on issues', :js, :feature do
let(:user) { create(:user) }
shared_examples 'notes with reference' do
let(:issue) { create(:issue, project: project) }
let(:note_text) { "Check #{mention.to_reference}" }
before do
project.team << [user, :developer]
login_as(user)
visit namespace_project_issue_path(project.namespace, project, issue)
fill_in 'note[note]', with: note_text
click_button 'Comment'
wait_for_ajax
end
it 'creates a note with reference and cross references the issue' do
page.within('div#notes li.note div.note-text') do
expect(page).to have_content(note_text)
expect(page.find('a')).to have_content(mention.to_reference)
end
find('div#notes li.note div.note-text a').click
page.within('div#notes li.note .system-note-message') do
expect(page).to have_content('mentioned in issue')
expect(page.find('a')).to have_content(issue.to_reference)
end
end
end
context 'mentioning issue on a private project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :private) }
let(:mention) { create(:issue, project: project) }
end
end
context 'mentioning issue on an internal project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :internal) }
let(:mention) { create(:issue, project: project) }
end
end
context 'mentioning issue on a public project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :public) }
let(:mention) { create(:issue, project: project) }
end
end
context 'mentioning merge request on a private project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :private) }
let(:mention) { create(:merge_request, source_project: project) }
end
end
context 'mentioning merge request on an internal project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :internal) }
let(:mention) { create(:merge_request, source_project: project) }
end
end
context 'mentioning merge request on a public project' do
it_behaves_like 'notes with reference' do
let(:project) { create(:project, :public) }
let(:mention) { create(:merge_request, source_project: project) }
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment