diff options
Diffstat (limited to 'spec/finders/autocomplete')
-rw-r--r-- | spec/finders/autocomplete/users_finder_spec.rb | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/spec/finders/autocomplete/users_finder_spec.rb b/spec/finders/autocomplete/users_finder_spec.rb index 28bd7e12916..9b3421d1b4f 100644 --- a/spec/finders/autocomplete/users_finder_spec.rb +++ b/spec/finders/autocomplete/users_finder_spec.rb @@ -3,16 +3,20 @@ require 'spec_helper' RSpec.describe Autocomplete::UsersFinder do + # TODO update when multiple owners are possible in projects + # https://gitlab.com/gitlab-org/gitlab/-/issues/21432 + describe '#execute' do - let!(:user1) { create(:user, username: 'johndoe') } - let!(:user2) { create(:user, :blocked, username: 'notsorandom') } - let!(:external_user) { create(:user, :external) } - let!(:omniauth_user) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } + let_it_be(:user1) { create(:user, name: 'zzzzzname', username: 'johndoe') } + let_it_be(:user2) { create(:user, :blocked, username: 'notsorandom') } + let_it_be(:external_user) { create(:user, :external) } + let_it_be(:omniauth_user) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } + let(:current_user) { create(:user) } let(:params) { {} } - let(:project) { nil } - let(:group) { nil } + let_it_be(:project) { nil } + let_it_be(:group) { nil } subject { described_class.new(params: params, current_user: current_user, project: project, group: group).execute.to_a } @@ -23,33 +27,53 @@ RSpec.describe Autocomplete::UsersFinder do end context 'when project passed' do - let(:project) { create(:project) } + let_it_be(:project) { create(:project) } - it { is_expected.to match_array([project.owner]) } + it { is_expected.to match_array([project.first_owner]) } context 'when author_id passed' do context 'and author is active' do let(:params) { { author_id: user1.id } } - it { is_expected.to match_array([project.owner, user1]) } + it { is_expected.to match_array([project.first_owner, user1]) } end context 'and author is blocked' do let(:params) { { author_id: user2.id } } - it { is_expected.to match_array([project.owner]) } + it { is_expected.to match_array([project.first_owner]) } + end + end + + context 'searching with less than 3 characters' do + let(:params) { { search: 'zz' } } + + before do + project.add_guest(user1) + end + + it 'allows partial matches' do + expect(subject).to contain_exactly(user1) end end end context 'when group passed and project not passed' do - let(:group) { create(:group, :public) } + let_it_be(:group) { create(:group, :public) } - before do + before_all do group.add_users([user1], GroupMember::DEVELOPER) end it { is_expected.to match_array([user1]) } + + context 'searching with less than 3 characters' do + let(:params) { { search: 'zz' } } + + it 'allows partial matches' do + expect(subject).to contain_exactly(user1) + end + end end context 'when passed a subgroup' do @@ -73,6 +97,14 @@ RSpec.describe Autocomplete::UsersFinder do let(:params) { { search: 'johndoe' } } it { is_expected.to match_array([user1]) } + + context 'searching with less than 3 characters' do + let(:params) { { search: 'zz' } } + + it 'does not allow partial matches' do + expect(subject).to be_empty + end + end end context 'when filtered by skip_users' do |