diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2019-08-12 12:27:45 +0300 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2019-08-12 12:27:45 +0300 |
commit | c85cbc08f7fc43819f7569b7686ee22ce747e7b3 (patch) | |
tree | 7054cb20736b1a8169761c2807d52e59c40f6912 /spec | |
parent | 0d9068b4a0b98272c90c644514756f7d93fd3b0a (diff) | |
parent | 45064348619ce7585d15756950eae5f5346ee631 (diff) |
Merge branch '44036-someone-edited-the-issue-at-the-same-time-is-regularly-seen-despite-that-being-a-filthy-lie' into 'master'
Fix incorrectly displayed conflict warning
See merge request gitlab-org/gitlab-ce!31469
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); + }); }); }); |