Commit fa686696 authored by Simon Knox's avatar Simon Knox

Merge branch '327336-board-grouped-by-epic-does-not-show-all-issues' into 'master'

Fix bug - Swimlanes do not show all issues

See merge request gitlab-org/gitlab!59206
parents ccd1399f 64a052f6
...@@ -111,7 +111,7 @@ export default { ...@@ -111,7 +111,7 @@ export default {
handler() { handler() {
Promise.all( Promise.all(
this.lists.map((list) => { this.lists.map((list) => {
return this.fetchItemsForList({ listId: list.id }); return this.fetchItemsForList({ listId: list.id, forSwimlanes: true });
}), }),
) )
.then(() => this.doneLoadingSwimlanesItems()) .then(() => this.doneLoadingSwimlanesItems())
......
...@@ -304,7 +304,7 @@ export default { ...@@ -304,7 +304,7 @@ export default {
fetchItemsForList: ( fetchItemsForList: (
{ state, commit, getters }, { state, commit, getters },
{ listId, fetchNext = false, noEpicIssues = false }, { listId, fetchNext = false, noEpicIssues = false, forSwimlanes = false },
) => { ) => {
commit(types.REQUEST_ITEMS_FOR_LIST, { listId, fetchNext }); commit(types.REQUEST_ITEMS_FOR_LIST, { listId, fetchNext });
...@@ -312,6 +312,9 @@ export default { ...@@ -312,6 +312,9 @@ export default {
if (noEpicIssues && epicId !== undefined) { if (noEpicIssues && epicId !== undefined) {
return null; return null;
} }
if (forSwimlanes && epicId === undefined && filterParams.epicWildcardId === undefined) {
filterParams.epicWildcardId = EpicFilterType.any.toUpperCase();
}
const variables = { const variables = {
id: listId, id: listId,
...@@ -319,7 +322,7 @@ export default { ...@@ -319,7 +322,7 @@ export default {
? { ...filterParams, epicWildcardId: EpicFilterType.none.toUpperCase() } ? { ...filterParams, epicWildcardId: EpicFilterType.none.toUpperCase() }
: { ...filterParams, epicId }, : { ...filterParams, epicId },
after: fetchNext ? state.pageInfoByListId[listId].endCursor : undefined, after: fetchNext ? state.pageInfoByListId[listId].endCursor : undefined,
first: 20, first: forSwimlanes ? undefined : 20,
}; };
if (getters.isEpicBoard) { if (getters.isEpicBoard) {
......
...@@ -9,8 +9,9 @@ import * as types from 'ee/boards/stores/mutation_types'; ...@@ -9,8 +9,9 @@ import * as types from 'ee/boards/stores/mutation_types';
import mutations from 'ee/boards/stores/mutations'; import mutations from 'ee/boards/stores/mutations';
import { TEST_HOST } from 'helpers/test_constants'; import { TEST_HOST } from 'helpers/test_constants';
import testAction from 'helpers/vuex_action_helper'; import testAction from 'helpers/vuex_action_helper';
import { formatBoardLists } from '~/boards/boards_util'; import { formatBoardLists, formatListIssues } from '~/boards/boards_util';
import { issuableTypes } from '~/boards/constants'; import { issuableTypes } from '~/boards/constants';
import listsIssuesQuery from '~/boards/graphql/lists_issues.query.graphql';
import * as typesCE from '~/boards/stores/mutation_types'; import * as typesCE from '~/boards/stores/mutation_types';
import * as commonUtils from '~/lib/utils/common_utils'; import * as commonUtils from '~/lib/utils/common_utils';
import { mergeUrlParams, removeParams } from '~/lib/utils/url_utility'; import { mergeUrlParams, removeParams } from '~/lib/utils/url_utility';
...@@ -19,6 +20,7 @@ import { ...@@ -19,6 +20,7 @@ import {
mockLists, mockLists,
mockIssue, mockIssue,
mockIssue2, mockIssue2,
mockIssues,
mockEpic, mockEpic,
rawIssue, rawIssue,
mockMilestones, mockMilestones,
...@@ -322,6 +324,89 @@ describe('fetchEpicsSwimlanes', () => { ...@@ -322,6 +324,89 @@ describe('fetchEpicsSwimlanes', () => {
}); });
}); });
describe('fetchItemsForList', () => {
const listId = mockLists[0].id;
const state = {
fullPath: 'gitlab-org',
boardId: '1',
filterParams: {},
boardType: 'group',
};
const mockIssuesNodes = mockIssues.map((issue) => ({ node: issue }));
const pageInfo = {
endCursor: '',
hasNextPage: false,
};
const queryResponse = {
data: {
group: {
board: {
lists: {
nodes: [
{
id: listId,
issues: {
edges: mockIssuesNodes,
pageInfo,
},
},
],
},
},
},
},
};
const formattedIssues = formatListIssues(queryResponse.data.group.board.lists);
const listPageInfo = {
[listId]: pageInfo,
};
it('add epicWildcardId with ANY as value when forSwimlanes is true', () => {
jest.spyOn(gqlClient, 'query').mockResolvedValue(queryResponse);
testAction(
actions.fetchItemsForList,
{ listId, forSwimlanes: true },
state,
[
{
type: types.REQUEST_ITEMS_FOR_LIST,
payload: { listId, fetchNext: false },
},
{
type: types.RECEIVE_ITEMS_FOR_LIST_SUCCESS,
payload: { listItems: formattedIssues, listPageInfo, listId, noEpicIssues: false },
},
],
[],
() => {
expect(gqlClient.query).toHaveBeenCalledWith({
query: listsIssuesQuery,
variables: {
boardId: 'gid://gitlab/Board/1',
filters: {
epicWildcardId: 'ANY',
},
fullPath: 'gitlab-org',
id: 'gid://gitlab/List/1',
isGroup: true,
isProject: false,
},
context: {
isSingleRequest: true,
},
});
},
);
});
});
describe('updateBoardEpicUserPreferences', () => { describe('updateBoardEpicUserPreferences', () => {
const state = { const state = {
boardId: 1, boardId: 1,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment