diff --git a/app/assets/javascripts/work_items/graphql/group_work_items.query.graphql b/app/assets/javascripts/work_items/graphql/group_work_items.query.graphql index 9e4500c03aabff0255405ace63310c260fd00afb..fb07c4f118b5f0dbed7dee45162e363edaddac79 100644 --- a/app/assets/javascripts/work_items/graphql/group_work_items.query.graphql +++ b/app/assets/javascripts/work_items/graphql/group_work_items.query.graphql @@ -5,6 +5,7 @@ query groupWorkItems( $in: [IssuableSearchableField!] $includeAncestors: Boolean = false $includeDescendants: Boolean = false + $excludeGroupWorkItems: Boolean = false $iid: String = null $searchByIid: Boolean = false $searchByText: Boolean = true @@ -18,6 +19,7 @@ query groupWorkItems( in: $in includeAncestors: $includeAncestors includeDescendants: $includeDescendants + excludeGroupWorkItems: $excludeGroupWorkItems ) @include(if: $searchByText) { nodes { id @@ -53,6 +55,7 @@ query groupWorkItems( types: $types includeAncestors: $includeAncestors includeDescendants: $includeDescendants + excludeGroupWorkItems: $excludeGroupWorkItems ) @include(if: $searchByIid) { nodes { id diff --git a/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql b/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql index b9174c617aef2264fc02a017f6c4587cabdb7dc3..f65eed7e92b5e74753368f037016e62150ffe61a 100644 --- a/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql +++ b/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql @@ -3,6 +3,7 @@ query getWorkItemsFull( $excludeProjects: Boolean = false + $excludeGroupWorkItems: Boolean = false $includeDescendants: Boolean = true $fullPath: ID! $search: String @@ -44,6 +45,7 @@ query getWorkItemsFull( name workItems( excludeProjects: $excludeProjects + excludeGroupWorkItems: $excludeGroupWorkItems includeDescendants: $includeDescendants search: $search sort: $sort diff --git a/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql b/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql index 592a9b0af03f949c301a3954dd5d6c620a361c90..fda3708bee7eebd6c7f55a3f13693aea4cd138a0 100644 --- a/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql +++ b/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql @@ -4,6 +4,7 @@ query getWorkItemsSlim( $excludeProjects: Boolean = false + $excludeGroupWorkItems: Boolean = false $includeDescendants: Boolean = true $fullPath: ID! $search: String @@ -45,6 +46,7 @@ query getWorkItemsSlim( name workItems( excludeProjects: $excludeProjects + excludeGroupWorkItems: $excludeGroupWorkItems includeDescendants: $includeDescendants search: $search sort: $sort diff --git a/app/assets/javascripts/work_items/pages/work_items_list_app.vue b/app/assets/javascripts/work_items/pages/work_items_list_app.vue index ead29041250d7f5a4a27c98f5b2499fbf9b2aec9..cdbc1d6d175f53ba627f32fdf9c6646de9b8ee64 100644 --- a/app/assets/javascripts/work_items/pages/work_items_list_app.vue +++ b/app/assets/javascripts/work_items/pages/work_items_list_app.vue @@ -463,6 +463,7 @@ export default { ...this.pageParams, search: this.searchQuery, excludeProjects: hasGroupFilter || this.isEpicsList, + excludeGroupWorkItems: this.isGroup && this.isGroupIssuesList, includeDescendants: !hasGroupFilter, types: this.apiFilterParams.types || singleWorkItemType || this.defaultWorkItemTypes, isGroup: this.isGroup, diff --git a/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql b/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql index ceb6a0888b9da526f2c4ec154659ec3fce69af53..d2fb526a363ced74f2293985ce164b8043453bae 100644 --- a/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql +++ b/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_full.query.graphql @@ -3,6 +3,7 @@ query getWorkItemsFullEE( $excludeProjects: Boolean = false + $excludeGroupWorkItems: Boolean = false $includeDescendants: Boolean = true $fullPath: ID! $search: String @@ -52,6 +53,7 @@ query getWorkItemsFullEE( name workItems( excludeProjects: $excludeProjects + excludeGroupWorkItems: $excludeGroupWorkItems includeDescendants: $includeDescendants search: $search sort: $sort diff --git a/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql b/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql index 1b77d70bf5634deeecea971480dfa654b7d764ca..7d8ecfb3c701873047eb3bc33ea1319a6ab2d558 100644 --- a/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql +++ b/ee/app/assets/javascripts/work_items/graphql/list/get_work_items_slim.query.graphql @@ -4,6 +4,7 @@ query getWorkItemsSlimEE( $excludeProjects: Boolean = false + $excludeGroupWorkItems: Boolean = false $includeDescendants: Boolean = true $fullPath: ID! $search: String @@ -53,6 +54,7 @@ query getWorkItemsSlimEE( name workItems( excludeProjects: $excludeProjects + excludeGroupWorkItems: $excludeGroupWorkItems includeDescendants: $includeDescendants search: $search sort: $sort diff --git a/spec/frontend/work_items/list/components/work_items_list_app_spec.js b/spec/frontend/work_items/list/components/work_items_list_app_spec.js index ff3652439da4a777f4ccfa9dd18f404a3680ff22..1615769d0ed197a21eb7d54bc23acd9f178f70f5 100644 --- a/spec/frontend/work_items/list/components/work_items_list_app_spec.js +++ b/spec/frontend/work_items/list/components/work_items_list_app_spec.js @@ -328,6 +328,7 @@ describeSkipVue3(skipReason, () => { expect(defaultQueryHandler).toHaveBeenCalledWith( expect.objectContaining({ excludeProjects: false, + excludeGroupWorkItems: false, }), ); }); @@ -492,6 +493,22 @@ describeSkipVue3(skipReason, () => { expect(defaultQueryHandler).toHaveBeenCalledWith( expect.objectContaining({ excludeProjects: true, + excludeGroupWorkItems: false, + }), + ); + }); + }); + + describe('when isGroupIssuesList is true', () => { + it('sends excludeGroupWorkItems variable as true in GraphQL query', async () => { + mountComponent({ provide: { isGroup: true, isGroupIssuesList: true } }); + + await waitForPromises(); + + expect(defaultQueryHandler).toHaveBeenCalledWith( + expect.objectContaining({ + excludeProjects: false, + excludeGroupWorkItems: true, }), ); }); @@ -1416,6 +1433,7 @@ describeSkipVue3(skipReason, () => { expect(defaultQueryHandler).toHaveBeenCalledWith( expect.objectContaining({ excludeProjects: true, + excludeGroupWorkItems: false, includeDescendants: false, }), ); @@ -1435,6 +1453,7 @@ describeSkipVue3(skipReason, () => { expect(defaultQueryHandler).toHaveBeenCalledWith( expect.objectContaining({ excludeProjects: false, + excludeGroupWorkItems: false, includeDescendants: true, }), );