diff --git a/ee/app/finders/merge_requests/by_approvers_finder.rb b/ee/app/finders/merge_requests/by_approvers_finder.rb index 9814fce36bacef1f007141bbdb262d4d10606177..226dd58cc8b5737e2efdd241b7eaaadb1695cfab 100644 --- a/ee/app/finders/merge_requests/by_approvers_finder.rb +++ b/ee/app/finders/merge_requests/by_approvers_finder.rb @@ -73,7 +73,7 @@ def find_approvers_by_ids(items, user_ids) items_with_users .where(users_association => { user_id: user_ids }) .group('merge_requests.id') - .having("COUNT(#{users_association}.user_id) = ?", user_ids.size) + .having("COUNT(#{users_association}.user_id) >= ?", user_ids.size) end end 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 937b88c66ab5756c28707e0bff8101f60d612579..22d0b4fe667470b51b72552845ea800efbe03856 100644 --- a/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb +++ b/ee/spec/finders/merge_requests/by_approvers_finder_spec.rb @@ -64,6 +64,21 @@ def merge_requests(ids: nil, names: []) merge_request_with_project_group_approver ]) end + + context "with two approval rules targeting the same user on the same MR" do + let(:double_approval_user) do + merge_request_with_approver.approval_rules.first.approvers.first + end + + before do + 2.times { create(:approval_merge_request_rule, merge_request: merge_request_with_approver, users: [double_approval_user]) } + end + + it 'correctly returns merge request' do + expect(merge_requests(names: [double_approval_user.username])).to match_array( + [merge_request_with_approver, merge_request_with_two_approvers]) + end + end end context 'filter by second approver' do