diff --git a/app/graphql/resolvers/merge_requests_resolver.rb b/app/graphql/resolvers/merge_requests_resolver.rb index ebbb68611b3d0b609fc996b495208c69e214ce86..4823e69803c8dca4ba6565cc4970ec73b37edead 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 c78bf07dd025ba55f52659e1448ca7399d576022..8d83cd4b0dec0ce36f8f384035804cd11a0c9b80 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. | <a id="mergerequestsresolvernegatedparamsreleasetag"></a>`releaseTag` | [`String`](#string) | Filter by release tag to exclude. | | <a id="mergerequestsresolvernegatedparamsreviewerusername"></a>`reviewerUsername` | [`String`](#string) | Username of the reviewer to exclude. | | <a id="mergerequestsresolvernegatedparamssourcebranches"></a>`sourceBranches` | [`[String!]`](#string) | Array of source branch names. No resolved merge requests will have one of these branches as their source. | +| <a id="mergerequestsresolvernegatedparamstargetbranches"></a>`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 15f3ca47becd579d307825e3c38cb7b3ea5cf719..826b6b308141c1aeb7ef2bdc5466b178d778cc70 100644 --- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb +++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb @@ -175,6 +175,17 @@ 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) + expect(result).to include(merge_request_1, merge_request_2, merge_request_5, merge_request_6) + end + end + context 'with state argument' do it 'takes one argument' do result = resolve_mr(project, state: 'locked')