From 8b72bf3ff601cd3959322e282baa1d0830f002e0 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 25 Oct 2024 15:08:40 -0600 Subject: [PATCH 1/2] Enable NOT filtering for merge request target branches GQL --- app/graphql/resolvers/merge_requests_resolver.rb | 7 +++++++ doc/api/graphql/reference/index.md | 1 + spec/graphql/resolvers/merge_requests_resolver_spec.rb | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/app/graphql/resolvers/merge_requests_resolver.rb b/app/graphql/resolvers/merge_requests_resolver.rb index ebbb68611b3d0b..4823e69803c8dc 100644 --- a/app/graphql/resolvers/merge_requests_resolver.rb +++ b/app/graphql/resolvers/merge_requests_resolver.rb @@ -183,6 +183,13 @@ def self.accept_reviewer Array of source branch names. No resolved merge requests will have one of these branches as their source. DESC + argument :target_branches, [GraphQL::Types::String], + required: false, + as: :target_branch, + description: <<~DESC + Array of target branch names. + No resolved merge requests will have one of these branches as their target. + DESC end validates mutually_exclusive: [:assignee_username, :assignee_wildcard_id] diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index c78bf07dd025ba..8d83cd4b0dec0c 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -43020,6 +43020,7 @@ Defines which user roles, users, or groups can merge into a protected branch. | `releaseTag` | [`String`](#string) | Filter by release tag to exclude. | | `reviewerUsername` | [`String`](#string) | Username of the reviewer to exclude. | | `sourceBranches` | [`[String!]`](#string) | Array of source branch names. No resolved merge requests will have one of these branches as their source. | +| `targetBranches` | [`[String!]`](#string) | Array of target branch names. No resolved merge requests will have one of these branches as their target. | ### `MonthSelectionInput` diff --git a/spec/graphql/resolvers/merge_requests_resolver_spec.rb b/spec/graphql/resolvers/merge_requests_resolver_spec.rb index 15f3ca47becd57..0613aa082bf8ff 100644 --- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb +++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb @@ -175,6 +175,16 @@ end end + context 'with negated target branches argument' do + it 'excludes merge requests with given target branches from selection' do + mrs = [merge_request_3, merge_request_4] + branches = mrs.map(&:target_branch) + result = resolve_mr(project, not: { target_branches: branches }) + + expect(result).not_to include(merge_request_3, merge_request_4) + end + end + context 'with state argument' do it 'takes one argument' do result = resolve_mr(project, state: 'locked') -- GitLab From 15bb1dc425653986fbdd11765f43769ee3d26efc Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 29 Oct 2024 01:30:31 -0600 Subject: [PATCH 2/2] Add positive test for non-excluded merge requests --- spec/graphql/resolvers/merge_requests_resolver_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/graphql/resolvers/merge_requests_resolver_spec.rb b/spec/graphql/resolvers/merge_requests_resolver_spec.rb index 0613aa082bf8ff..826b6b308141c1 100644 --- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb +++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb @@ -182,6 +182,7 @@ result = resolve_mr(project, not: { target_branches: branches }) expect(result).not_to include(merge_request_3, merge_request_4) + expect(result).to include(merge_request_1, merge_request_2, merge_request_5, merge_request_6) end end -- GitLab