diff options
author | Phil Hughes <me@iamphill.com> | 2017-05-17 13:01:24 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2017-05-17 13:01:24 +0100 |
commit | 907dd68e0a18e995dc5772c9bc8117aa150edc25 (patch) | |
tree | f44f01a72ac5b305f7a2fc0dd3c90b992c2db165 /spec | |
parent | 4fcff0bfa2f0d8b0a9f60e93bee807334557918f (diff) | |
download | gitlab-ce-907dd68e0a18e995dc5772c9bc8117aa150edc25.tar.gz |
Added move to project in issue inline edit form
[ci skip]
Diffstat (limited to 'spec')
-rw-r--r-- | spec/javascripts/issue_show/components/app_spec.js | 45 | ||||
-rw-r--r-- | spec/javascripts/issue_show/components/fields/project_move_spec.js | 38 |
2 files changed, 82 insertions, 1 deletions
diff --git a/spec/javascripts/issue_show/components/app_spec.js b/spec/javascripts/issue_show/components/app_spec.js index 22b0a0f7046..700910c241a 100644 --- a/spec/javascripts/issue_show/components/app_spec.js +++ b/spec/javascripts/issue_show/components/app_spec.js @@ -29,12 +29,15 @@ describe('Issuable output', () => { propsData: { canUpdate: true, canDestroy: true, + canMove: true, endpoint: '/gitlab-org/gitlab-shell/issues/9/realtime_changes', issuableRef: '#1', initialTitle: '', initialDescriptionHtml: '', initialDescriptionText: '', - showForm: false, + markdownPreviewUrl: '/', + markdownDocs: '/', + projectsAutocompleteUrl: '/', }, }).$mount(); }); @@ -108,6 +111,46 @@ describe('Issuable output', () => { }); }); + it('does not redirect if issue has not moved', (done) => { + spyOn(gl.utils, 'visitUrl'); + spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => { + resolve(); + })); + + vm.updateIssuable(); + + setTimeout(() => { + expect( + gl.utils.visitUrl, + ).not.toHaveBeenCalled(); + + done(); + }); + }); + + it('redirects if issue is moved', (done) => { + spyOn(gl.utils, 'visitUrl'); + spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => { + resolve({ + json() { + return { + path: '/testing-issue-move', + }; + }, + }); + })); + + vm.updateIssuable(); + + setTimeout(() => { + expect( + gl.utils.visitUrl, + ).toHaveBeenCalledWith('/testing-issue-move'); + + done(); + }); + }); + it('closes form on error', (done) => { spyOn(window, 'Flash').and.callThrough(); spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve, reject) => { diff --git a/spec/javascripts/issue_show/components/fields/project_move_spec.js b/spec/javascripts/issue_show/components/fields/project_move_spec.js new file mode 100644 index 00000000000..86d35c33ff4 --- /dev/null +++ b/spec/javascripts/issue_show/components/fields/project_move_spec.js @@ -0,0 +1,38 @@ +import Vue from 'vue'; +import projectMove from '~/issue_show/components/fields/project_move.vue'; + +describe('Project move field component', () => { + let vm; + let formState; + + beforeEach((done) => { + const Component = Vue.extend(projectMove); + + formState = { + move_to_project_id: 0, + }; + + vm = new Component({ + propsData: { + formState, + projectsAutocompleteUrl: '/autocomplete', + }, + }).$mount(); + + Vue.nextTick(done); + }); + + it('mounts select2 element', () => { + expect( + vm.$el.querySelector('.select2-container'), + ).not.toBeNull(); + }); + + it('updates formState on change', () => { + $(vm.$refs['move-dropdown']).val(2).trigger('change'); + + expect( + formState.move_to_project_id, + ).toBe(2); + }); +}); |