diff options
-rw-r--r-- | app/finders/issuable_finder.rb | 1 | ||||
-rw-r--r-- | app/finders/issues_finder.rb | 10 | ||||
-rw-r--r-- | changelogs/unreleased/50246-can-t-sort-group-issues-by-popularity-when-searching.yml | 6 | ||||
-rw-r--r-- | spec/controllers/groups_controller_spec.rb | 29 |
4 files changed, 41 insertions, 5 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 17e9b59b355..1f98ecf95ca 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -363,6 +363,7 @@ class IssuableFinder def use_cte_for_search? return false unless search return false unless Gitlab::Database.postgresql? + return false unless Feature.enabled?(:use_cte_for_group_issues_search, default_enabled: true) params[:use_cte_for_search] end diff --git a/app/finders/issues_finder.rb b/app/finders/issues_finder.rb index 770e0bfe1a3..abdc47b9866 100644 --- a/app/finders/issues_finder.rb +++ b/app/finders/issues_finder.rb @@ -120,9 +120,13 @@ class IssuesFinder < IssuableFinder return @user_can_see_all_confidential_issues = true if current_user.full_private_access? @user_can_see_all_confidential_issues = - project? && - project && - project.team.max_member_access(current_user.id) >= CONFIDENTIAL_ACCESS_LEVEL + if project? && project + project.team.max_member_access(current_user.id) >= CONFIDENTIAL_ACCESS_LEVEL + elsif group + group.max_member_access_for_user(current_user) >= CONFIDENTIAL_ACCESS_LEVEL + else + false + end end def user_cannot_see_confidential_issues? diff --git a/changelogs/unreleased/50246-can-t-sort-group-issues-by-popularity-when-searching.yml b/changelogs/unreleased/50246-can-t-sort-group-issues-by-popularity-when-searching.yml new file mode 100644 index 00000000000..cc7a79d25e5 --- /dev/null +++ b/changelogs/unreleased/50246-can-t-sort-group-issues-by-popularity-when-searching.yml @@ -0,0 +1,6 @@ +--- +title: Fix sorting by priority or popularity on group issues page, when also searching + issue content +merge_request: 21521 +author: +type: fixed diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 65d6cd1a295..a099cdafa58 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -202,8 +202,8 @@ describe GroupsController do end describe 'GET #issues' do - let(:issue_1) { create(:issue, project: project) } - let(:issue_2) { create(:issue, project: project) } + let(:issue_1) { create(:issue, project: project, title: 'foo') } + let(:issue_2) { create(:issue, project: project, title: 'bar') } before do create_list(:award_emoji, 3, awardable: issue_2) @@ -224,6 +224,31 @@ describe GroupsController do expect(assigns(:issues)).to eq [issue_2, issue_1] end end + + context 'searching' do + # Remove as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/52271 + before do + stub_feature_flags(use_cte_for_group_issues_search: false) + end + + it 'works with popularity sort' do + get :issues, id: group.to_param, search: 'foo', sort: 'popularity' + + expect(assigns(:issues)).to eq([issue_1]) + end + + it 'works with priority sort' do + get :issues, id: group.to_param, search: 'foo', sort: 'priority' + + expect(assigns(:issues)).to eq([issue_1]) + end + + it 'works with label priority sort' do + get :issues, id: group.to_param, search: 'foo', sort: 'label_priority' + + expect(assigns(:issues)).to eq([issue_1]) + end + end end describe 'GET #merge_requests' do |