diff options
Diffstat (limited to 'spec/frontend/issue_show/components/fields/title_spec.js')
-rw-r--r-- | spec/frontend/issue_show/components/fields/title_spec.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/spec/frontend/issue_show/components/fields/title_spec.js b/spec/frontend/issue_show/components/fields/title_spec.js new file mode 100644 index 00000000000..99e8658b89f --- /dev/null +++ b/spec/frontend/issue_show/components/fields/title_spec.js @@ -0,0 +1,48 @@ +import Vue from 'vue'; +import eventHub from '~/issue_show/event_hub'; +import Store from '~/issue_show/stores'; +import titleField from '~/issue_show/components/fields/title.vue'; +import { keyboardDownEvent } from '../../helpers'; + +describe('Title field component', () => { + let vm; + let store; + + beforeEach(() => { + const Component = Vue.extend(titleField); + store = new Store({ + titleHtml: '', + descriptionHtml: '', + issuableRef: '', + }); + store.formState.title = 'test'; + + jest.spyOn(eventHub, '$emit').mockImplementation(() => {}); + + vm = new Component({ + propsData: { + formState: store.formState, + }, + }).$mount(); + }); + + it('renders form control with formState title', () => { + expect(vm.$el.querySelector('.form-control').value).toBe('test'); + }); + + it('triggers update with meta+enter', () => { + vm.$el.querySelector('.form-control').dispatchEvent(keyboardDownEvent(13, true)); + + expect(eventHub.$emit).toHaveBeenCalled(); + }); + + it('triggers update with ctrl+enter', () => { + vm.$el.querySelector('.form-control').dispatchEvent(keyboardDownEvent(13, false, true)); + + expect(eventHub.$emit).toHaveBeenCalled(); + }); + + it('has a ref named `input`', () => { + expect(vm.$refs.input).not.toBeNull(); + }); +}); |