From dfa8233b17772dda4969d0634d170a1f4236f83b Mon Sep 17 00:00:00 2001 From: Phil Hughes <me@iamphill.com> Date: Thu, 22 Oct 2020 09:49:01 +0000 Subject: [PATCH] Fixes the ability to filter target branch by not equal This fixes the target branch filter in merge requests to allow the user to filter by not equal. --- app/finders/merge_requests_finder.rb | 13 +++++++++++++ .../unreleased/ph-filterTargetBranchByNotEquals.yml | 5 +++++ .../user_filters_by_target_branch_spec.rb | 10 ++++++++++ 3 files changed, 28 insertions(+) create mode 100644 changelogs/unreleased/ph-filterTargetBranchByNotEquals.yml diff --git a/app/finders/merge_requests_finder.rb b/app/finders/merge_requests_finder.rb index c998de75ab22..28b1530456ba 100644 --- a/app/finders/merge_requests_finder.rb +++ b/app/finders/merge_requests_finder.rb @@ -66,6 +66,11 @@ def filter_items(_items) by_source_project_id(items) end + def filter_negated_items(items) + items = super(items) + by_negated_target_branch(items) + end + private def by_commit(items) @@ -98,6 +103,14 @@ def by_target_branch(items) end # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord + def by_negated_target_branch(items) + return items unless not_params[:target_branch] + + items.where.not(target_branch: not_params[:target_branch]) + end + # rubocop: enable CodeReuse/ActiveRecord + def source_project_id @source_project_id ||= params[:source_project_id].presence end diff --git a/changelogs/unreleased/ph-filterTargetBranchByNotEquals.yml b/changelogs/unreleased/ph-filterTargetBranchByNotEquals.yml new file mode 100644 index 000000000000..169bf3562890 --- /dev/null +++ b/changelogs/unreleased/ph-filterTargetBranchByNotEquals.yml @@ -0,0 +1,5 @@ +--- +title: Fixed target branch not filtering +merge_request: 45652 +author: +type: fixed diff --git a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb index 540d87eb969e..1d9c80238f57 100644 --- a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb +++ b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb @@ -44,4 +44,14 @@ expect(page).not_to have_content mr2.title end end + + context 'filtering by target-branch:!=master' do + it 'applies the filter' do + input_filtered_search('target-branch:!=master') + + expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) + expect(page).not_to have_content mr1.title + expect(page).to have_content mr2.title + end + end end -- GitLab