Backport EE changes to UserExtractor to CE
This backports the changes EE made to Gitlab::UserExtractor, removing the need for an EE specific module.
This commit is contained in:
parent
96eefa7f28
commit
3eee0426c5
2 changed files with 24 additions and 1 deletions
|
@ -11,11 +11,14 @@ module Gitlab
|
|||
USERNAME_REGEXP = User.reference_pattern
|
||||
|
||||
def initialize(text)
|
||||
@text = text
|
||||
# EE passes an Array to `text` in a few places, so we want to support both
|
||||
# here.
|
||||
@text = Array(text).join(' ')
|
||||
end
|
||||
|
||||
def users
|
||||
return User.none unless @text.present?
|
||||
return User.none if references.empty?
|
||||
|
||||
@users ||= User.from_union(union_relations)
|
||||
end
|
||||
|
|
|
@ -38,6 +38,18 @@ describe Gitlab::UserExtractor do
|
|||
|
||||
expect(extractor.users).to include(user)
|
||||
end
|
||||
|
||||
context 'input as array of strings' do
|
||||
it 'is treated as one string' do
|
||||
extractor = described_class.new(text.lines)
|
||||
|
||||
user_1 = create(:user, username: "USER-1")
|
||||
user_4 = create(:user, username: "USER-4")
|
||||
user_email = create(:user, email: 'user@gitlab.org')
|
||||
|
||||
expect(extractor.users).to contain_exactly(user_1, user_4, user_email)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#matches' do
|
||||
|
@ -48,6 +60,14 @@ describe Gitlab::UserExtractor do
|
|||
it 'includes all mentioned usernames' do
|
||||
expect(extractor.matches[:usernames]).to contain_exactly('user-1', 'user-2', 'user-4')
|
||||
end
|
||||
|
||||
context 'input has no matching e-mail or usernames' do
|
||||
it 'returns an empty list of users' do
|
||||
extractor = described_class.new('My test')
|
||||
|
||||
expect(extractor.users).to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#references' do
|
||||
|
|
Loading…
Reference in a new issue