From bcc65902dfb8496a945bdcefef4ec3a290c10d7e Mon Sep 17 00:00:00 2001 From: Douwe Maan <douwe@gitlab.com> Date: Fri, 5 Apr 2019 09:56:59 +0000 Subject: [PATCH] Merge branch 'id-500-filter-by-approver-and-priority' into 'master' Fix sorting by priority with filtering by approvers See merge request gitlab-org/gitlab-ee!10446 (cherry picked from commit 09707c8d1188c024c50e2625035b43117e0b6129) 88f16f8d Fix sorting by priority with filtering by approvers --- ee/app/models/ee/merge_request.rb | 2 +- .../id-500-filter-by-approver-and-priority.yml | 5 +++++ .../merge_requests/by_approvers_finder_spec.rb | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 ee/changelogs/unreleased/id-500-filter-by-approver-and-priority.yml diff --git a/ee/app/models/ee/merge_request.rb b/ee/app/models/ee/merge_request.rb index 2b0f69a9c404..36352d4e3e73 100644 --- a/ee/app/models/ee/merge_request.rb +++ b/ee/app/models/ee/merge_request.rb @@ -36,7 +36,7 @@ module MergeRequest class_methods do def select_from_union(relations) - from_union(relations, remove_duplicates: true) + where(id: from_union(relations)) end end diff --git a/ee/changelogs/unreleased/id-500-filter-by-approver-and-priority.yml b/ee/changelogs/unreleased/id-500-filter-by-approver-and-priority.yml new file mode 100644 index 000000000000..053e0d11471a --- /dev/null +++ b/ee/changelogs/unreleased/id-500-filter-by-approver-and-priority.yml @@ -0,0 +1,5 @@ +--- +title: Fix sorting by priority with filtering by approvers +merge_request: 10446 +author: +type: fixed diff --git a/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb b/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb index 6bbb281dbe9f..320f8d3522f3 100644 --- a/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb +++ b/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb @@ -133,4 +133,19 @@ def merge_requests(ids: nil, names: []) ) end end + + context 'filter by approvers' do + let(:mrs_by_ids) { merge_requests(ids: [first_user.id]) } + let(:mrs_by_usernames) { merge_requests(names: [first_user.username]) } + + it 'can be ordered by popularity' do + expect(mrs_by_ids.sort_by_attribute("popularity")).to eq([merge_request_with_two_approvers, merge_request_with_approver]) + expect(mrs_by_usernames.sort_by_attribute("popularity")).to eq([merge_request_with_two_approvers, merge_request_with_approver]) + end + + it 'can be ordered by priority' do + expect(mrs_by_usernames.sort_by_attribute("priority")).to eq([merge_request_with_two_approvers, merge_request_with_approver]) + expect(mrs_by_ids.sort_by_attribute("priority")).to eq([merge_request_with_two_approvers, merge_request_with_approver]) + end + end end -- GitLab