diff options
Diffstat (limited to 'spec/lib/gitlab/search_results_spec.rb')
-rw-r--r-- | spec/lib/gitlab/search_results_spec.rb | 54 |
1 files changed, 33 insertions, 21 deletions
diff --git a/spec/lib/gitlab/search_results_spec.rb b/spec/lib/gitlab/search_results_spec.rb index 725b7901e68..d1f19a5e1ba 100644 --- a/spec/lib/gitlab/search_results_spec.rb +++ b/spec/lib/gitlab/search_results_spec.rb @@ -16,8 +16,9 @@ RSpec.describe Gitlab::SearchResults, feature_category: :global_search do let(:query) { 'foo' } let(:filters) { {} } let(:sort) { nil } + let(:limit_projects) { Project.order(:id) } - subject(:results) { described_class.new(user, query, Project.order(:id), sort: sort, filters: filters) } + subject(:results) { described_class.new(user, query, limit_projects, sort: sort, filters: filters) } context 'as a user with access' do before do @@ -236,9 +237,14 @@ RSpec.describe Gitlab::SearchResults, feature_category: :global_search do let_it_be(:closed_result) { create(:issue, :closed, project: project, title: 'foo closed') } let_it_be(:opened_result) { create(:issue, :opened, project: project, title: 'foo open') } let_it_be(:confidential_result) { create(:issue, :confidential, project: project, title: 'foo confidential') } + let_it_be(:unarchived_project) { project } + let_it_be(:archived_project) { create(:project, :public, :archived) } + let_it_be(:unarchived_result) { create(:issue, project: unarchived_project, title: 'foo unarchived') } + let_it_be(:archived_result) { create(:issue, project: archived_project, title: 'foo archived') } include_examples 'search results filtered by state' include_examples 'search results filtered by confidential' + include_examples 'search results filtered by archived', 'search_issues_hide_archived_projects' end context 'ordering' do @@ -274,7 +280,7 @@ RSpec.describe Gitlab::SearchResults, feature_category: :global_search do let_it_be(:unarchived_result) { create(:project, :public, group: group, name: 'Test1') } let_it_be(:archived_result) { create(:project, :archived, :public, group: group, name: 'Test2') } - it_behaves_like 'search results filtered by archived', 'search_projects_hide_archived' + it_behaves_like 'search results filtered by archived' end end @@ -433,26 +439,32 @@ RSpec.describe Gitlab::SearchResults, feature_category: :global_search do end context 'milestones' do - it 'returns correct set of milestones' do - private_project_1 = create(:project, :private) - private_project_2 = create(:project, :private) - internal_project = create(:project, :internal) - public_project_1 = create(:project, :public) - public_project_2 = create(:project, :public, :issues_disabled, :merge_requests_disabled) + let_it_be(:archived_project) { create(:project, :public, :archived) } + let_it_be(:private_project_1) { create(:project, :private) } + let_it_be(:private_project_2) { create(:project, :private) } + let_it_be(:internal_project) { create(:project, :internal) } + let_it_be(:public_project_1) { create(:project, :public) } + let_it_be(:public_project_2) { create(:project, :public, :issues_disabled, :merge_requests_disabled) } + let_it_be(:hidden_milestone_1) { create(:milestone, project: private_project_2, title: 'Private project without access milestone') } + let_it_be(:hidden_milestone_2) { create(:milestone, project: public_project_2, title: 'Public project with milestones disabled milestone') } + let_it_be(:hidden_milestone_3) { create(:milestone, project: archived_project, title: 'Milestone from an archived project') } + let_it_be(:milestone_1) { create(:milestone, project: private_project_1, title: 'Private project with access milestone', state: 'closed') } + let_it_be(:milestone_2) { create(:milestone, project: internal_project, title: 'Internal project milestone') } + let_it_be(:milestone_3) { create(:milestone, project: public_project_1, title: 'Public project with milestones enabled milestone') } + let(:unarchived_result) { milestone_1 } + let(:archived_result) { hidden_milestone_3 } + let(:limit_projects) { ProjectsFinder.new(current_user: user).execute } + let(:query) { 'milestone' } + let(:scope) { 'milestones' } + + before do private_project_1.add_developer(user) - # milestones that should not be visible - create(:milestone, project: private_project_2, title: 'Private project without access milestone') - create(:milestone, project: public_project_2, title: 'Public project with milestones disabled milestone') - # milestones that should be visible - milestone_1 = create(:milestone, project: private_project_1, title: 'Private project with access milestone', state: 'closed') - milestone_2 = create(:milestone, project: internal_project, title: 'Internal project milestone') - milestone_3 = create(:milestone, project: public_project_1, title: 'Public project with milestones enabled milestone') - # Global search scope takes user authorized projects, internal projects and public projects. - limit_projects = ProjectsFinder.new(current_user: user).execute - - milestones = described_class.new(user, 'milestone', limit_projects).objects('milestones') - - expect(milestones).to match_array([milestone_1, milestone_2, milestone_3]) end + + it 'returns correct set of milestones' do + expect(results.objects(scope)).to match_array([milestone_1, milestone_2, milestone_3]) + end + + include_examples 'search results filtered by archived', 'search_milestones_hide_archived_projects' end end |