summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/search_results_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
commit85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch)
tree9160f299afd8c80c038f08e1545be119f5e3f1e1 /spec/lib/gitlab/search_results_spec.rb
parent15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff)
downloadgitlab-ce-85dc423f7090da0a52c73eb66faf22ddb20efff9.tar.gz
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'spec/lib/gitlab/search_results_spec.rb')
-rw-r--r--spec/lib/gitlab/search_results_spec.rb54
1 files changed, 35 insertions, 19 deletions
diff --git a/spec/lib/gitlab/search_results_spec.rb b/spec/lib/gitlab/search_results_spec.rb
index 61fa61566cd..b4cf6a568b4 100644
--- a/spec/lib/gitlab/search_results_spec.rb
+++ b/spec/lib/gitlab/search_results_spec.rb
@@ -6,16 +6,14 @@ RSpec.describe Gitlab::SearchResults do
include ProjectForksHelper
include SearchHelpers
- let(:user) { create(:user) }
- let!(:project) { create(:project, name: 'foo') }
- let!(:issue) { create(:issue, project: project, title: 'foo') }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, name: 'foo') }
+ let_it_be(:issue) { create(:issue, project: project, title: 'foo') }
+ let_it_be(:milestone) { create(:milestone, project: project, title: 'foo') }
+ let(:merge_request) { create(:merge_request, source_project: project, title: 'foo') }
+ let(:filters) { {} }
- let!(:merge_request) do
- create(:merge_request, source_project: project, title: 'foo')
- end
-
- let!(:milestone) { create(:milestone, project: project, title: 'foo') }
- let(:results) { described_class.new(user, Project.all, 'foo') }
+ subject(:results) { described_class.new(user, 'foo', Project.order(:id), filters: filters) }
context 'as a user with access' do
before do
@@ -108,10 +106,10 @@ RSpec.describe Gitlab::SearchResults do
describe '#limited_issues_count' do
it 'runs single SQL query to get the limited amount of issues' do
- create(:milestone, project: project, title: 'foo2')
+ create(:issue, project: project, title: 'foo2')
expect(results).to receive(:issues).with(public_only: true).and_call_original
- expect(results).not_to receive(:issues).with(no_args).and_call_original
+ expect(results).not_to receive(:issues).with(no_args)
expect(results.limited_issues_count).to eq(1)
end
@@ -133,7 +131,7 @@ RSpec.describe Gitlab::SearchResults do
forked_project = fork_project(project, user)
merge_request_2 = create(:merge_request, target_project: project, source_project: forked_project, title: 'foo')
- results = described_class.new(user, Project.where(id: forked_project.id), 'foo')
+ results = described_class.new(user, 'foo', Project.where(id: forked_project.id))
expect(results.objects('merge_requests')).to include merge_request_2
end
@@ -152,6 +150,15 @@ RSpec.describe Gitlab::SearchResults do
results.objects('merge_requests')
end
+
+ context 'filtering' do
+ let!(:opened_result) { create(:merge_request, :opened, source_project: project, title: 'foo opened') }
+ let!(:closed_result) { create(:merge_request, :closed, source_project: project, title: 'foo closed') }
+ let(:scope) { 'merge_requests' }
+ let(:query) { 'foo' }
+
+ include_examples 'search results filtered by state'
+ end
end
describe '#issues' do
@@ -168,6 +175,15 @@ RSpec.describe Gitlab::SearchResults do
results.objects('issues')
end
+
+ context 'filtering' do
+ let(:scope) { 'issues' }
+
+ 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') }
+
+ include_examples 'search results filtered by state'
+ end
end
describe '#users' do
@@ -214,7 +230,7 @@ RSpec.describe Gitlab::SearchResults do
let!(:security_issue_5) { create(:issue, :confidential, project: project_4, title: 'Security issue 5') }
it 'does not list confidential issues for non project members' do
- results = described_class.new(non_member, limit_projects, query)
+ results = described_class.new(non_member, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -230,7 +246,7 @@ RSpec.describe Gitlab::SearchResults do
project_1.add_guest(member)
project_2.add_guest(member)
- results = described_class.new(member, limit_projects, query)
+ results = described_class.new(member, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -243,7 +259,7 @@ RSpec.describe Gitlab::SearchResults do
end
it 'lists confidential issues for author' do
- results = described_class.new(author, limit_projects, query)
+ results = described_class.new(author, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -256,7 +272,7 @@ RSpec.describe Gitlab::SearchResults do
end
it 'lists confidential issues for assignee' do
- results = described_class.new(assignee, limit_projects, query)
+ results = described_class.new(assignee, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -272,7 +288,7 @@ RSpec.describe Gitlab::SearchResults do
project_1.add_developer(member)
project_2.add_developer(member)
- results = described_class.new(member, limit_projects, query)
+ results = described_class.new(member, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -285,7 +301,7 @@ RSpec.describe Gitlab::SearchResults do
end
it 'lists all issues for admin' do
- results = described_class.new(admin, limit_projects, query)
+ results = described_class.new(admin, query, limit_projects)
issues = results.objects('issues')
expect(issues).to include issue
@@ -323,7 +339,7 @@ RSpec.describe Gitlab::SearchResults do
# 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, limit_projects, 'milestone').objects('milestones')
+ milestones = described_class.new(user, 'milestone', limit_projects).objects('milestones')
expect(milestones).to match_array([milestone_1, milestone_2, milestone_3])
end