summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2018-01-03 09:21:09 +0000
committerSean McGivern <sean@mcgivern.me.uk>2018-01-03 09:21:09 +0000
commit5e3103678bb3ac78a9203336b2e88a8b513d3998 (patch)
tree1d71f3359ca4dd8ecfa14ba0c8b14ce2a2a063c5
parent57906a532227c86acac0e9da0ae918967b592f06 (diff)
parent017c1297cdcfbb7431dbbc0445e29d1c95d934c0 (diff)
downloadgitlab-ce-5e3103678bb3ac78a9203336b2e88a8b513d3998.tar.gz
Merge branch 'jprovazn-search-issues' into 'master'
Skip projects filter on issues search See merge request gitlab-org/gitlab-ce!16117
-rw-r--r--changelogs/unreleased/16117-improve-search-for-issues.yml5
-rw-r--r--lib/gitlab/search_results.rb5
-rw-r--r--spec/lib/gitlab/search_results_spec.rb35
3 files changed, 37 insertions, 8 deletions
diff --git a/changelogs/unreleased/16117-improve-search-for-issues.yml b/changelogs/unreleased/16117-improve-search-for-issues.yml
new file mode 100644
index 00000000000..92d5820ddd2
--- /dev/null
+++ b/changelogs/unreleased/16117-improve-search-for-issues.yml
@@ -0,0 +1,5 @@
+---
+title: Improve search query for issues.
+merge_request:
+author:
+type: performance
diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb
index 7037e2e61cc..ca48c6df602 100644
--- a/lib/gitlab/search_results.rb
+++ b/lib/gitlab/search_results.rb
@@ -82,7 +82,10 @@ module Gitlab
end
def issues
- issues = IssuesFinder.new(current_user).execute.where(project_id: project_ids_relation)
+ issues = IssuesFinder.new(current_user).execute
+ unless default_project_filter
+ issues = issues.where(project_id: project_ids_relation)
+ end
issues =
if query =~ /#(\d+)\z/
diff --git a/spec/lib/gitlab/search_results_spec.rb b/spec/lib/gitlab/search_results_spec.rb
index 3dbe510b7ba..b5a9ac570e6 100644
--- a/spec/lib/gitlab/search_results_spec.rb
+++ b/spec/lib/gitlab/search_results_spec.rb
@@ -52,15 +52,36 @@ describe Gitlab::SearchResults do
expect(results.objects('merge_requests')).to include merge_request_2
end
- it 'includes project filter by default' do
- expect(results).to receive(:project_ids_relation).and_call_original
- results.objects('merge_requests')
+ describe '#merge_requests' do
+ it 'includes project filter by default' do
+ expect(results).to receive(:project_ids_relation).and_call_original
+
+ results.objects('merge_requests')
+ end
+
+ it 'it skips project filter if default project context is used' do
+ allow(results).to receive(:default_project_filter).and_return(true)
+
+ expect(results).not_to receive(:project_ids_relation)
+
+ results.objects('merge_requests')
+ end
end
- it 'it skips project filter if default is used' do
- allow(results).to receive(:default_project_filter).and_return(true)
- expect(results).not_to receive(:project_ids_relation)
- results.objects('merge_requests')
+ describe '#issues' do
+ it 'includes project filter by default' do
+ expect(results).to receive(:project_ids_relation).and_call_original
+
+ results.objects('issues')
+ end
+
+ it 'it skips project filter if default project context is used' do
+ allow(results).to receive(:default_project_filter).and_return(true)
+
+ expect(results).not_to receive(:project_ids_relation)
+
+ results.objects('issues')
+ end
end
end