From a97fca23f10815a2b8f933ef65cc3ba26d24307e Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 25 Oct 2024 15:04:45 -0600 Subject: [PATCH] Enable NOT filtering for merge request source 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 4761be1cf92f31..ebbb68611b3d0b 100644 --- a/app/graphql/resolvers/merge_requests_resolver.rb +++ b/app/graphql/resolvers/merge_requests_resolver.rb @@ -176,6 +176,13 @@ def self.accept_reviewer argument :reviewer_username, GraphQL::Types::String, required: false, description: 'Username of the reviewer to exclude.' + argument :source_branches, [GraphQL::Types::String], + required: false, + as: :source_branch, + description: <<~DESC + Array of source branch names. + No resolved merge requests will have one of these branches as their source. + 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 94e1306c5de7ec..32adfbd7065cc0 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -42906,6 +42906,7 @@ Defines which user roles, users, or groups can merge into a protected branch. | `myReactionEmoji` | [`String`](#string) | Filter by reaction emoji to exclude. | | `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. | ### `MonthSelectionInput` diff --git a/spec/graphql/resolvers/merge_requests_resolver_spec.rb b/spec/graphql/resolvers/merge_requests_resolver_spec.rb index b586e8c4f5b97e..15f3ca47becd57 100644 --- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb +++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb @@ -149,6 +149,16 @@ end end + context 'with negated source branches argument' do + it 'excludes merge requests with given source branches from selection' do + mrs = [merge_request_3, merge_request_4] + branches = mrs.map(&:source_branch) + result = resolve_mr(project, not: { source_branches: branches }) + + expect(result).not_to include(merge_request_3, merge_request_4) + end + end + context 'with target branches argument' do it 'takes one argument' do result = resolve_mr(project, target_branches: [merge_request_3.target_branch]) -- GitLab