summaryrefslogtreecommitdiff
path: root/spec/frontend/issue_show/components/fields/description_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/issue_show/components/fields/description_spec.js')
-rw-r--r--spec/frontend/issue_show/components/fields/description_spec.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/spec/frontend/issue_show/components/fields/description_spec.js b/spec/frontend/issue_show/components/fields/description_spec.js
new file mode 100644
index 00000000000..8ea326ad1ee
--- /dev/null
+++ b/spec/frontend/issue_show/components/fields/description_spec.js
@@ -0,0 +1,70 @@
+import Vue from 'vue';
+import eventHub from '~/issue_show/event_hub';
+import Store from '~/issue_show/stores';
+import descriptionField from '~/issue_show/components/fields/description.vue';
+import { keyboardDownEvent } from '../../helpers';
+
+describe('Description field component', () => {
+ let vm;
+ let store;
+
+ beforeEach(done => {
+ const Component = Vue.extend(descriptionField);
+ const el = document.createElement('div');
+ store = new Store({
+ titleHtml: '',
+ descriptionHtml: '',
+ issuableRef: '',
+ });
+ store.formState.description = 'test';
+
+ document.body.appendChild(el);
+
+ jest.spyOn(eventHub, '$emit').mockImplementation(() => {});
+
+ vm = new Component({
+ el,
+ propsData: {
+ markdownPreviewPath: '/',
+ markdownDocsPath: '/',
+ formState: store.formState,
+ },
+ }).$mount();
+
+ Vue.nextTick(done);
+ });
+
+ it('renders markdown field with description', () => {
+ expect(vm.$el.querySelector('.md-area textarea').value).toBe('test');
+ });
+
+ it('renders markdown field with a markdown description', done => {
+ store.formState.description = '**test**';
+
+ Vue.nextTick(() => {
+ expect(vm.$el.querySelector('.md-area textarea').value).toBe('**test**');
+
+ done();
+ });
+ });
+
+ it('focuses field when mounted', () => {
+ expect(document.activeElement).toBe(vm.$refs.textarea);
+ });
+
+ it('triggers update with meta+enter', () => {
+ vm.$el.querySelector('.md-area textarea').dispatchEvent(keyboardDownEvent(13, true));
+
+ expect(eventHub.$emit).toHaveBeenCalled();
+ });
+
+ it('triggers update with ctrl+enter', () => {
+ vm.$el.querySelector('.md-area textarea').dispatchEvent(keyboardDownEvent(13, false, true));
+
+ expect(eventHub.$emit).toHaveBeenCalled();
+ });
+
+ it('has a ref named `textarea`', () => {
+ expect(vm.$refs.textarea).not.toBeNull();
+ });
+});