diff options
author | Phil Hughes <me@iamphill.com> | 2017-05-16 16:18:52 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2017-05-16 16:18:52 +0100 |
commit | 3301ca10552e7d95d7fb5108a180caa38ddfb9c5 (patch) | |
tree | 887747508b92bce8809c1be2eb4f166a878f7bca /spec | |
parent | f1b0b4a40ffecf3900c9ca4b69e54d5c8f47bd17 (diff) | |
download | gitlab-ce-3301ca10552e7d95d7fb5108a180caa38ddfb9c5.tar.gz |
Fixed up the template dropdown to correctly work
[ci skip]
Diffstat (limited to 'spec')
3 files changed, 92 insertions, 20 deletions
diff --git a/spec/javascripts/issue_show/components/fields/description_template_spec.js b/spec/javascripts/issue_show/components/fields/description_template_spec.js new file mode 100644 index 00000000000..d6702e4a8f7 --- /dev/null +++ b/spec/javascripts/issue_show/components/fields/description_template_spec.js @@ -0,0 +1,47 @@ +import Vue from 'vue'; +import descriptionTemplate from '~/issue_show/components/fields/description_template.vue'; +import '~/templates/issuable_template_selector'; +import '~/templates/issuable_template_selectors'; + +describe('Issue description template component', () => { + let vm; + let formState; + + beforeEach((done) => { + const Component = Vue.extend(descriptionTemplate); + formState = { + description: 'test', + }; + + vm = new Component({ + propsData: { + formState, + issuableTemplates: [{ name: 'test' }], + }, + }).$mount(); + + Vue.nextTick(done); + }); + + it('renders templates as JSON array in data attribute', () => { + expect( + vm.$el.querySelector('.js-issuable-selector').getAttribute('data-data'), + ).toBe('[{"name":"test"}]'); + }); + + it('updates formState when changing template', () => { + vm.issuableTemplate.editor.setValue('test new template'); + + expect( + formState.description, + ).toBe('test new template'); + }); + + it('returns formState description with editor getValue', () => { + formState.description = 'testing new template'; + + expect( + vm.issuableTemplate.editor.getValue(), + ).toBe('testing new template'); + }); +}); diff --git a/spec/javascripts/issue_show/components/fields/title_spec.js b/spec/javascripts/issue_show/components/fields/title_spec.js index 91a2ada8d9b..53ae038a6a2 100644 --- a/spec/javascripts/issue_show/components/fields/title_spec.js +++ b/spec/javascripts/issue_show/components/fields/title_spec.js @@ -1,7 +1,6 @@ import Vue from 'vue'; import Store from '~/issue_show/stores'; import titleField from '~/issue_show/components/fields/title.vue'; -import '~/templates/issuable_template_selectors'; describe('Title field component', () => { let vm; @@ -28,23 +27,4 @@ describe('Title field component', () => { vm.$el.querySelector('.form-control').value, ).toBe('test'); }); - - it('does not render template selector if no templates exist', () => { - expect( - vm.$el.querySelector('.js-issuable-selector-wrap'), - ).toBeNull(); - }); - - it('renders template selector when templates exists', (done) => { - spyOn(gl, 'IssuableTemplateSelectors'); - vm.issuableTemplates = ['test']; - - Vue.nextTick(() => { - expect( - vm.$el.querySelector('.js-issuable-selector-wrap'), - ).not.toBeNull(); - - done(); - }); - }); }); diff --git a/spec/javascripts/issue_show/components/form_spec.js b/spec/javascripts/issue_show/components/form_spec.js new file mode 100644 index 00000000000..a2bf1de0576 --- /dev/null +++ b/spec/javascripts/issue_show/components/form_spec.js @@ -0,0 +1,45 @@ +import Vue from 'vue'; +import formComponent from '~/issue_show/components/form.vue'; +import '~/templates/issuable_template_selector'; +import '~/templates/issuable_template_selectors'; + +describe('Inline edit form component', () => { + let vm; + + beforeEach((done) => { + const Component = Vue.extend(formComponent); + + vm = new Component({ + propsData: { + canDestroy: true, + formState: { + title: 'b', + description: 'a', + }, + markdownPreviewUrl: '/', + markdownDocs: '/', + }, + }).$mount(); + + Vue.nextTick(done); + }); + + it('does not render template selector if no templates exist', () => { + expect( + vm.$el.querySelector('.js-issuable-selector-wrap'), + ).toBeNull(); + }); + + it('renders template selector when templates exists', (done) => { + spyOn(gl, 'IssuableTemplateSelectors'); + vm.issuableTemplates = ['test']; + + Vue.nextTick(() => { + expect( + vm.$el.querySelector('.js-issuable-selector-wrap'), + ).not.toBeNull(); + + done(); + }); + }); +}); |