diff options
Diffstat (limited to 'spec/frontend/boards/stores/mutations_spec.js')
-rw-r--r-- | spec/frontend/boards/stores/mutations_spec.js | 100 |
1 files changed, 78 insertions, 22 deletions
diff --git a/spec/frontend/boards/stores/mutations_spec.js b/spec/frontend/boards/stores/mutations_spec.js index d93119ede3d..c5fe0e22c3c 100644 --- a/spec/frontend/boards/stores/mutations_spec.js +++ b/spec/frontend/boards/stores/mutations_spec.js @@ -1,9 +1,9 @@ import mutations from '~/boards/stores/mutations'; import * as types from '~/boards/stores/mutation_types'; import defaultState from '~/boards/stores/state'; -import { mockLists, rawIssue, mockIssue, mockIssue2 } from '../mock_data'; +import { mockLists, rawIssue, mockIssue, mockIssue2, mockGroupProjects } from '../mock_data'; -const expectNotImplemented = action => { +const expectNotImplemented = (action) => { it('is not implemented', () => { expect(action).toThrow(new Error('Not implemented!')); }); @@ -23,14 +23,8 @@ describe('Board Store Mutations', () => { describe('SET_INITIAL_BOARD_DATA', () => { it('Should set initial Boards data to state', () => { - const endpoints = { - boardsEndpoint: '/boards/', - recentBoardsEndpoint: '/boards/', - listsEndpoint: '/boards/lists', - bulkUpdatePath: '/boards/bulkUpdate', - boardId: 1, - fullPath: 'gitlab-org', - }; + const boardId = 1; + const fullPath = 'gitlab-org'; const boardType = 'group'; const disabled = false; const boardConfig = { @@ -38,13 +32,15 @@ describe('Board Store Mutations', () => { }; mutations[types.SET_INITIAL_BOARD_DATA](state, { - ...endpoints, + boardId, + fullPath, boardType, disabled, boardConfig, }); - expect(state.endpoints).toEqual(endpoints); + expect(state.boardId).toEqual(boardId); + expect(state.fullPath).toEqual(fullPath); expect(state.boardType).toEqual(boardType); expect(state.disabled).toEqual(disabled); expect(state.boardConfig).toEqual(boardConfig); @@ -240,7 +236,7 @@ describe('Board Store Mutations', () => { 'gid://gitlab/List/1': [mockIssue.id], }; const issues = { - '1': mockIssue, + 1: mockIssue, }; state = { @@ -349,8 +345,8 @@ describe('Board Store Mutations', () => { }; const issues = { - '1': mockIssue, - '2': mockIssue2, + 1: mockIssue, + 2: mockIssue2, }; state = { @@ -378,7 +374,7 @@ describe('Board Store Mutations', () => { describe('MOVE_ISSUE_SUCCESS', () => { it('updates issue in issues state', () => { const issues = { - '436': { id: rawIssue.id }, + 436: { id: rawIssue.id }, }; state = { @@ -390,7 +386,7 @@ describe('Board Store Mutations', () => { issue: rawIssue, }); - expect(state.issues).toEqual({ '436': { ...mockIssue, id: 436 } }); + expect(state.issues).toEqual({ 436: { ...mockIssue, id: 436 } }); }); }); @@ -450,7 +446,7 @@ describe('Board Store Mutations', () => { 'gid://gitlab/List/1': [mockIssue.id], }; const issues = { - '1': mockIssue, + 1: mockIssue, }; state = { @@ -476,8 +472,8 @@ describe('Board Store Mutations', () => { 'gid://gitlab/List/1': [mockIssue.id, mockIssue2.id], }; const issues = { - '1': mockIssue, - '2': mockIssue2, + 1: mockIssue, + 2: mockIssue2, }; state = { @@ -500,8 +496,8 @@ describe('Board Store Mutations', () => { 'gid://gitlab/List/1': [mockIssue.id, mockIssue2.id], }; const issues = { - '1': mockIssue, - '2': mockIssue2, + 1: mockIssue, + 2: mockIssue2, }; state = { @@ -533,4 +529,64 @@ describe('Board Store Mutations', () => { describe('TOGGLE_EMPTY_STATE', () => { expectNotImplemented(mutations.TOGGLE_EMPTY_STATE); }); + + describe('REQUEST_GROUP_PROJECTS', () => { + it('Should set isLoading in groupProjectsFlags to true in state when fetchNext is false', () => { + mutations[types.REQUEST_GROUP_PROJECTS](state, false); + + expect(state.groupProjectsFlags.isLoading).toBe(true); + }); + + it('Should set isLoading in groupProjectsFlags to true in state when fetchNext is true', () => { + mutations[types.REQUEST_GROUP_PROJECTS](state, true); + + expect(state.groupProjectsFlags.isLoadingMore).toBe(true); + }); + }); + + describe('RECEIVE_GROUP_PROJECTS_SUCCESS', () => { + it('Should set groupProjects and pageInfo to state and isLoading in groupProjectsFlags to false', () => { + mutations[types.RECEIVE_GROUP_PROJECTS_SUCCESS](state, { + projects: mockGroupProjects, + pageInfo: { hasNextPage: false }, + }); + + expect(state.groupProjects).toEqual(mockGroupProjects); + expect(state.groupProjectsFlags.isLoading).toBe(false); + expect(state.groupProjectsFlags.pageInfo).toEqual({ hasNextPage: false }); + }); + + it('Should merge projects in groupProjects in state when fetchNext is true', () => { + state = { + ...state, + groupProjects: [mockGroupProjects[0]], + }; + + mutations[types.RECEIVE_GROUP_PROJECTS_SUCCESS](state, { + projects: [mockGroupProjects[1]], + fetchNext: true, + }); + + expect(state.groupProjects).toEqual(mockGroupProjects); + }); + }); + + describe('RECEIVE_GROUP_PROJECTS_FAILURE', () => { + it('Should set error in state and isLoading in groupProjectsFlags to false', () => { + mutations[types.RECEIVE_GROUP_PROJECTS_FAILURE](state); + + expect(state.error).toEqual( + 'An error occurred while fetching group projects. Please try again.', + ); + expect(state.groupProjectsFlags.isLoading).toBe(false); + }); + }); + + describe('SET_SELECTED_PROJECT', () => { + it('Should set selectedProject to state', () => { + mutations[types.SET_SELECTED_PROJECT](state, mockGroupProjects[0]); + + expect(state.selectedProject).toEqual(mockGroupProjects[0]); + }); + }); }); |