From da3f6c39ad28ab01d42e38d090ffc5ca41bccc50 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann <winnie@gitlab.com> Date: Wed, 25 Sep 2019 13:48:37 +0000 Subject: [PATCH] Remove actionType from RelatedItemsTreeApp component --- .../components/related_items_tree_app.vue | 11 +++++------ .../components/related_items_tree_header.vue | 5 +---- .../javascripts/related_items_tree/store/getters.js | 13 +++++++++++++ .../related_items_tree/store/mutations.js | 7 ++++--- .../related_items_tree/store/getters_spec.js | 12 ++++++++++++ .../related_items_tree/store/mutations_spec.js | 8 ++------ .../components/related_items_tree_app_spec.js | 10 +--------- .../components/related_items_tree_header_spec.js | 10 ++-------- 8 files changed, 40 insertions(+), 36 deletions(-) diff --git a/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_app.vue b/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_app.vue index 2836214473755..1e232eaaa12ff 100644 --- a/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_app.vue +++ b/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_app.vue @@ -10,11 +10,10 @@ import TreeItemRemoveModal from './tree_item_remove_modal.vue'; import RelatedItemsTreeHeader from './related_items_tree_header.vue'; import RelatedItemsTreeBody from './related_items_tree_body.vue'; -import { PathIdSeparator, ActionType, OVERFLOW_AFTER } from '../constants'; +import { PathIdSeparator, OVERFLOW_AFTER } from '../constants'; export default { PathIdSeparator, - ActionType, OVERFLOW_AFTER, components: { GlLoadingIcon, @@ -37,7 +36,7 @@ export default { 'autoCompleteIssues', 'pendingReferences', 'itemInputValue', - 'actionType', + 'issuableType', 'epicsEndpoint', 'issuesEndpoint', ]), @@ -90,12 +89,12 @@ export default { }); }, handleAddItemFormCancel() { - this.toggleAddItemForm({ toggleState: false, actionType: this.actionType }); + this.toggleAddItemForm({ toggleState: false }); this.setPendingReferences([]); this.setItemInputValue(''); }, handleCreateEpicFormCancel() { - this.toggleCreateEpicForm({ toggleState: false, actionType: this.actionType }); + this.toggleCreateEpicForm({ toggleState: false }); this.setItemInputValue(''); }, }, @@ -123,7 +122,7 @@ export default { > <add-item-form v-if="showAddItemForm" - :issuable-type="actionType" + :issuable-type="issuableType" :input-value="itemInputValue" :is-submitting="itemAddInProgress" :pending-references="pendingReferences" diff --git a/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_header.vue b/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_header.vue index 9060ab7b49031..3891d16a7ea0a 100644 --- a/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_header.vue +++ b/ee/app/assets/javascripts/related_items_tree/components/related_items_tree_header.vue @@ -40,10 +40,7 @@ export default { toggleState: true, }); } else { - this.toggleCreateEpicForm({ - actionType, - toggleState: true, - }); + this.toggleCreateEpicForm({ toggleState: true }); } }, }, diff --git a/ee/app/assets/javascripts/related_items_tree/store/getters.js b/ee/app/assets/javascripts/related_items_tree/store/getters.js index 0e8a39c28c043..27f06fa743923 100644 --- a/ee/app/assets/javascripts/related_items_tree/store/getters.js +++ b/ee/app/assets/javascripts/related_items_tree/store/getters.js @@ -1,3 +1,4 @@ +import { issuableTypesMap } from 'ee/related_issues/constants'; import { ChildType, ActionType, PathIdSeparator } from '../constants'; export const autoCompleteSources = () => gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources; @@ -32,6 +33,18 @@ export const itemAutoCompleteSources = (state, getters) => { return state.autoCompleteIssues ? getters.autoCompleteSources : {}; }; +export const issuableType = state => { + if (state.actionType === ActionType.Epic) { + return issuableTypesMap.EPIC; + } + + if (state.actionType === ActionType.Issue) { + return issuableTypesMap.ISSUE; + } + + return null; +}; + export const itemPathIdSeparator = state => state.actionType === ActionType.Epic ? PathIdSeparator.Epic : PathIdSeparator.Issue; diff --git a/ee/app/assets/javascripts/related_items_tree/store/mutations.js b/ee/app/assets/javascripts/related_items_tree/store/mutations.js index 9170c099e65a1..e25ffe0b7446d 100644 --- a/ee/app/assets/javascripts/related_items_tree/store/mutations.js +++ b/ee/app/assets/javascripts/related_items_tree/store/mutations.js @@ -121,13 +121,14 @@ export default { }, [types.TOGGLE_ADD_ITEM_FORM](state, { actionType, toggleState }) { - state.actionType = actionType; + if (actionType) { + state.actionType = actionType; + } state.showAddItemForm = toggleState; state.showCreateEpicForm = false; }, - [types.TOGGLE_CREATE_EPIC_FORM](state, { actionType, toggleState }) { - state.actionType = actionType; + [types.TOGGLE_CREATE_EPIC_FORM](state, { toggleState }) { state.showCreateEpicForm = toggleState; state.showAddItemForm = false; }, diff --git a/ee/spec/frontend/related_items_tree/store/getters_spec.js b/ee/spec/frontend/related_items_tree/store/getters_spec.js index 6da7cb8c05af6..192f3344de9d3 100644 --- a/ee/spec/frontend/related_items_tree/store/getters_spec.js +++ b/ee/spec/frontend/related_items_tree/store/getters_spec.js @@ -2,6 +2,7 @@ import * as getters from 'ee/related_items_tree/store/getters'; import createDefaultState from 'ee/related_items_tree/store/state'; +import { issuableTypesMap } from 'ee/related_issues/constants'; import { ChildType, ActionType } from 'ee/related_items_tree/constants'; import { @@ -142,6 +143,17 @@ describe('RelatedItemsTree', () => { }); }); + describe('issuableType', () => { + it.each` + actionType | expectedValue + ${null} | ${null} + ${ActionType.Epic} | ${issuableTypesMap.EPIC} + ${ActionType.Issue} | ${issuableTypesMap.ISSUE} + `('for $actionType returns $expectedValue', ({ actionType, expectedValue }) => { + expect(getters.issuableType({ actionType })).toBe(expectedValue); + }); + }); + describe('itemPathIdSeparator', () => { it('returns string containing pathIdSeparator for `Epic` when `state.actionType` is set to `Epic`', () => { state.actionType = ActionType.Epic; diff --git a/ee/spec/frontend/related_items_tree/store/mutations_spec.js b/ee/spec/frontend/related_items_tree/store/mutations_spec.js index d8a3b0998fb96..1485e1b0400b4 100644 --- a/ee/spec/frontend/related_items_tree/store/mutations_spec.js +++ b/ee/spec/frontend/related_items_tree/store/mutations_spec.js @@ -379,15 +379,11 @@ describe('RelatedItemsTree', () => { }); describe(types.TOGGLE_CREATE_EPIC_FORM, () => { - it('should set value of `actionType`, `showCreateEpicForm` as it is and `showAddItemForm` as false on state', () => { - const data = { - actionType: 'Epic', - toggleState: true, - }; + it('should set value of `showCreateEpicForm` as it is and `showAddItemForm` as false on state', () => { + const data = { toggleState: true }; mutations[types.TOGGLE_CREATE_EPIC_FORM](state, data); - expect(state.actionType).toBe(data.actionType); expect(state.showCreateEpicForm).toBe(data.toggleState); expect(state.showAddItemForm).toBe(false); }); diff --git a/ee/spec/javascripts/related_items_tree/components/related_items_tree_app_spec.js b/ee/spec/javascripts/related_items_tree/components/related_items_tree_app_spec.js index 647dd1f2dabeb..1f181bf31a882 100644 --- a/ee/spec/javascripts/related_items_tree/components/related_items_tree_app_spec.js +++ b/ee/spec/javascripts/related_items_tree/components/related_items_tree_app_spec.js @@ -124,10 +124,7 @@ describe('RelatedItemsTreeApp', () => { wrapper.vm.handleAddItemFormCancel(); - expect(wrapper.vm.toggleAddItemForm).toHaveBeenCalledWith({ - toggleState: false, - actionType: '', - }); + expect(wrapper.vm.toggleAddItemForm).toHaveBeenCalledWith({ toggleState: false }); }); it('calls `setPendingReferences` action with empty array', () => { @@ -152,11 +149,6 @@ describe('RelatedItemsTreeApp', () => { spyOn(wrapper.vm, 'toggleCreateEpicForm'); wrapper.vm.handleCreateEpicFormCancel(); - - expect(wrapper.vm.toggleCreateEpicForm).toHaveBeenCalledWith({ - toggleState: false, - actionType: '', - }); }); it('calls `setItemInputValue` action with empty string', () => { diff --git a/ee/spec/javascripts/related_items_tree/components/related_items_tree_header_spec.js b/ee/spec/javascripts/related_items_tree/components/related_items_tree_header_spec.js index ec6c122650e28..5dae5cf5cd3ba 100644 --- a/ee/spec/javascripts/related_items_tree/components/related_items_tree_header_spec.js +++ b/ee/spec/javascripts/related_items_tree/components/related_items_tree_header_spec.js @@ -73,15 +73,9 @@ describe('RelatedItemsTree', () => { it('calls `toggleCreateEpicForm` action when provided `id` param value is not `0`', () => { spyOn(wrapper.vm, 'toggleCreateEpicForm'); - wrapper.vm.handleActionClick({ - id: 1, - actionType, - }); + wrapper.vm.handleActionClick({ id: 1 }); - expect(wrapper.vm.toggleCreateEpicForm).toHaveBeenCalledWith({ - actionType, - toggleState: true, - }); + expect(wrapper.vm.toggleCreateEpicForm).toHaveBeenCalledWith({ toggleState: true }); }); }); }); -- GitLab