Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js')
-rw-r--r--spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js93
1 files changed, 41 insertions, 52 deletions
diff --git a/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js b/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
index f354067e226..77b557e7ccd 100644
--- a/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
+++ b/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
@@ -6,7 +6,6 @@ import waitForPromises from 'helpers/wait_for_promises';
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import BoardEditableItem from '~/boards/components/sidebar/board_editable_item.vue';
import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue';
-import { createStore } from '~/boards/stores';
import issueSetTitleMutation from '~/boards/graphql/issue_set_title.mutation.graphql';
import * as cacheUpdates from '~/boards/graphql/cache_updates';
import updateEpicTitleMutation from '~/sidebar/queries/update_epic_title.mutation.graphql';
@@ -32,11 +31,10 @@ const TEST_ISSUE_B = {
describe('BoardSidebarTitle', () => {
let wrapper;
- let store;
- let storeDispatch;
let mockApollo;
const issueSetTitleMutationHandlerSuccess = jest.fn().mockResolvedValue(updateIssueTitleResponse);
+ const issueSetTitleMutationHandlerFailure = jest.fn().mockRejectedValue(new Error('error'));
const updateEpicTitleMutationHandlerSuccess = jest
.fn()
.mockResolvedValue(updateEpicTitleResponse);
@@ -47,28 +45,25 @@ describe('BoardSidebarTitle', () => {
afterEach(() => {
localStorage.clear();
- store = null;
});
- const createWrapper = ({ item = TEST_ISSUE_A, provide = {} } = {}) => {
- store = createStore();
- store.state.boardItems = { [item.id]: { ...item } };
- store.dispatch('setActiveId', { id: item.id });
+ const createWrapper = ({
+ item = TEST_ISSUE_A,
+ provide = {},
+ issueSetTitleMutationHandler = issueSetTitleMutationHandlerSuccess,
+ } = {}) => {
mockApollo = createMockApollo([
- [issueSetTitleMutation, issueSetTitleMutationHandlerSuccess],
+ [issueSetTitleMutation, issueSetTitleMutationHandler],
[updateEpicTitleMutation, updateEpicTitleMutationHandlerSuccess],
]);
- storeDispatch = jest.spyOn(store, 'dispatch');
wrapper = shallowMountExtended(BoardSidebarTitle, {
- store,
apolloProvider: mockApollo,
provide: {
canUpdate: true,
fullPath: 'gitlab-org',
issuableType: 'issue',
isEpicBoard: false,
- isApolloBoard: false,
...provide,
},
propsData: {
@@ -122,13 +117,6 @@ describe('BoardSidebarTitle', () => {
expect(findCollapsed().isVisible()).toBe(true);
});
- it('commits change to the server', () => {
- expect(storeDispatch).toHaveBeenCalledWith('setActiveItemTitle', {
- projectPath: 'h/b',
- title: 'New item title',
- });
- });
-
it('renders correct title', async () => {
createWrapper({ item: { ...TEST_ISSUE_A, title: TEST_TITLE } });
await waitForPromises();
@@ -137,6 +125,31 @@ describe('BoardSidebarTitle', () => {
});
});
+ it.each`
+ issuableType | isEpicBoard | queryHandler | notCalledHandler
+ ${'issue'} | ${false} | ${issueSetTitleMutationHandlerSuccess} | ${updateEpicTitleMutationHandlerSuccess}
+ ${'epic'} | ${true} | ${updateEpicTitleMutationHandlerSuccess} | ${issueSetTitleMutationHandlerSuccess}
+ `(
+ 'updates $issuableType title',
+ async ({ issuableType, isEpicBoard, queryHandler, notCalledHandler }) => {
+ createWrapper({
+ provide: {
+ issuableType,
+ isEpicBoard,
+ },
+ });
+
+ await nextTick();
+
+ findFormInput().vm.$emit('input', TEST_TITLE);
+ findForm().vm.$emit('submit', { preventDefault: () => {} });
+ await nextTick();
+
+ expect(queryHandler).toHaveBeenCalled();
+ expect(notCalledHandler).not.toHaveBeenCalled();
+ },
+ );
+
describe('when submitting and invalid title', () => {
beforeEach(async () => {
createWrapper();
@@ -146,8 +159,8 @@ describe('BoardSidebarTitle', () => {
await nextTick();
});
- it('commits change to the server', () => {
- expect(storeDispatch).not.toHaveBeenCalled();
+ it('does not update title', () => {
+ expect(issueSetTitleMutationHandlerSuccess).not.toHaveBeenCalled();
});
});
@@ -194,7 +207,7 @@ describe('BoardSidebarTitle', () => {
});
it('collapses sidebar and render former title', () => {
- expect(storeDispatch).not.toHaveBeenCalled();
+ expect(issueSetTitleMutationHandlerSuccess).not.toHaveBeenCalled();
expect(findCollapsed().isVisible()).toBe(true);
expect(findTitle().text()).toBe(TEST_ISSUE_B.title);
});
@@ -202,47 +215,23 @@ describe('BoardSidebarTitle', () => {
describe('when the mutation fails', () => {
beforeEach(async () => {
- createWrapper({ item: TEST_ISSUE_B });
+ createWrapper({
+ item: TEST_ISSUE_B,
+ issueSetTitleMutationHandler: issueSetTitleMutationHandlerFailure,
+ });
findFormInput().vm.$emit('input', 'Invalid title');
findForm().vm.$emit('submit', { preventDefault: () => {} });
await nextTick();
});
- it('collapses sidebar and renders former item title', () => {
+ it('collapses sidebar and renders former item title', async () => {
expect(findCollapsed().isVisible()).toBe(true);
expect(findTitle().text()).toContain(TEST_ISSUE_B.title);
+ await waitForPromises();
expect(cacheUpdates.setError).toHaveBeenCalledWith(
expect.objectContaining({ message: 'An error occurred when updating the title' }),
);
});
});
-
- describe('Apollo boards', () => {
- it.each`
- issuableType | isEpicBoard | queryHandler | notCalledHandler
- ${'issue'} | ${false} | ${issueSetTitleMutationHandlerSuccess} | ${updateEpicTitleMutationHandlerSuccess}
- ${'epic'} | ${true} | ${updateEpicTitleMutationHandlerSuccess} | ${issueSetTitleMutationHandlerSuccess}
- `(
- 'updates $issuableType title',
- async ({ issuableType, isEpicBoard, queryHandler, notCalledHandler }) => {
- createWrapper({
- provide: {
- issuableType,
- isEpicBoard,
- isApolloBoard: true,
- },
- });
-
- await nextTick();
-
- findFormInput().vm.$emit('input', TEST_TITLE);
- findForm().vm.$emit('submit', { preventDefault: () => {} });
- await nextTick();
-
- expect(queryHandler).toHaveBeenCalled();
- expect(notCalledHandler).not.toHaveBeenCalled();
- },
- );
- });
});