diff options
author | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-08-05 11:56:03 +0300 |
---|---|---|
committer | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-08-12 08:42:20 +0300 |
commit | 45064348619ce7585d15756950eae5f5346ee631 (patch) | |
tree | ad8bc69450e4d4f36a5f91fd35f96e8969091141 /spec | |
parent | d70529df4dcc6c32c98e3e8febf9bd654789d8d2 (diff) |
Fix conflict warning being incorrectly displayed
Hide warning when update request is in progress
Diffstat (limited to 'spec')
-rw-r--r-- | spec/javascripts/issue_show/components/form_spec.js | 111 |
1 files changed, 64 insertions, 47 deletions
diff --git a/spec/javascripts/issue_show/components/form_spec.js b/spec/javascripts/issue_show/components/form_spec.js index b0f4ab2b12d..a111333ac80 100644 --- a/spec/javascripts/issue_show/components/form_spec.js +++ b/spec/javascripts/issue_show/components/form_spec.js @@ -1,81 +1,98 @@ import Vue from 'vue'; +import mountComponent from 'spec/helpers/vue_mount_component_helper'; import formComponent from '~/issue_show/components/form.vue'; import eventHub from '~/issue_show/event_hub'; describe('Inline edit form component', () => { let vm; - let autosave; - let autosaveObj; - - beforeEach(done => { - autosaveObj = { reset: jasmine.createSpy() }; - - autosave = spyOnDependency(formComponent, 'Autosave').and.returnValue(autosaveObj); + const defaultProps = { + canDestroy: true, + formState: { + title: 'b', + description: 'a', + lockedWarningVisible: false, + }, + issuableType: 'issue', + markdownPreviewPath: '/', + markdownDocsPath: '/', + projectPath: '/', + projectNamespace: '/', + }; + + afterEach(() => { + vm.$destroy(); + }); + const createComponent = props => { const Component = Vue.extend(formComponent); - vm = new Component({ - propsData: { - canDestroy: true, - formState: { - title: 'b', - description: 'a', - lockedWarningVisible: false, - }, - issuableType: 'issue', - markdownPreviewPath: '/', - markdownDocsPath: '/', - projectPath: '/', - projectNamespace: '/', - }, - }).$mount(); - - Vue.nextTick(done); - }); + vm = mountComponent(Component, { + ...defaultProps, + ...props, + }); + }; it('does not render template selector if no templates exist', () => { + createComponent(); + expect(vm.$el.querySelector('.js-issuable-selector-wrap')).toBeNull(); }); - it('renders template selector when templates exists', done => { - vm.issuableTemplates = ['test']; - - Vue.nextTick(() => { - expect(vm.$el.querySelector('.js-issuable-selector-wrap')).not.toBeNull(); + it('renders template selector when templates exists', () => { + createComponent({ issuableTemplates: ['test'] }); - done(); - }); + expect(vm.$el.querySelector('.js-issuable-selector-wrap')).not.toBeNull(); }); it('hides locked warning by default', () => { + createComponent(); + expect(vm.$el.querySelector('.alert')).toBeNull(); }); - it('shows locked warning if formState is different', done => { - vm.formState.lockedWarningVisible = true; + it('shows locked warning if formState is different', () => { + createComponent({ formState: { ...defaultProps.formState, lockedWarningVisible: true } }); - Vue.nextTick(() => { - expect(vm.$el.querySelector('.alert')).not.toBeNull(); + expect(vm.$el.querySelector('.alert')).not.toBeNull(); + }); - done(); + it('hides locked warning when currently saving', () => { + createComponent({ + formState: { ...defaultProps.formState, updateLoading: true, lockedWarningVisible: true }, }); - }); - it('initialized Autosave on mount', () => { - expect(autosave).toHaveBeenCalledTimes(2); + expect(vm.$el.querySelector('.alert')).toBeNull(); }); - it('calls reset on autosave when eventHub emits appropriate events', () => { - eventHub.$emit('close.form'); + describe('autosave', () => { + let autosaveObj; + let autosave; + + beforeEach(() => { + autosaveObj = { reset: jasmine.createSpy() }; + autosave = spyOnDependency(formComponent, 'Autosave').and.returnValue(autosaveObj); + }); + + it('initialized Autosave on mount', () => { + createComponent(); - expect(autosaveObj.reset).toHaveBeenCalledTimes(2); + expect(autosave).toHaveBeenCalledTimes(2); + }); + + it('calls reset on autosave when eventHub emits appropriate events', () => { + createComponent(); + + eventHub.$emit('close.form'); - eventHub.$emit('delete.issuable'); + expect(autosaveObj.reset).toHaveBeenCalledTimes(2); - expect(autosaveObj.reset).toHaveBeenCalledTimes(4); + eventHub.$emit('delete.issuable'); - eventHub.$emit('update.issuable'); + expect(autosaveObj.reset).toHaveBeenCalledTimes(4); - expect(autosaveObj.reset).toHaveBeenCalledTimes(6); + eventHub.$emit('update.issuable'); + + expect(autosaveObj.reset).toHaveBeenCalledTimes(6); + }); }); }); |