Commit 02dd6fa8 authored by Winnie Hellmann's avatar Winnie Hellmann Committed by Mike Greiling

Replacing vue-resource with axios in Markdown field

(cherry picked from commit 1dd7adc634e214208b0502f47116d6559dc471b0)
parent a0e76d5c
...@@ -9,6 +9,7 @@ import markdownHeader from './header.vue'; ...@@ -9,6 +9,7 @@ import markdownHeader from './header.vue';
import markdownToolbar from './toolbar.vue'; import markdownToolbar from './toolbar.vue';
import icon from '../icon.vue'; import icon from '../icon.vue';
import Suggestions from '~/vue_shared/components/markdown/suggestions.vue'; import Suggestions from '~/vue_shared/components/markdown/suggestions.vue';
import axios from '~/lib/utils/axios_utils';
export default { export default {
components: { components: {
...@@ -167,10 +168,9 @@ export default { ...@@ -167,10 +168,9 @@ export default {
if (text) { if (text) {
this.markdownPreviewLoading = true; this.markdownPreviewLoading = true;
this.markdownPreview = __('Loading…'); this.markdownPreview = __('Loading…');
this.$http axios
.post(this.markdownPreviewPath, { text }) .post(this.markdownPreviewPath, { text })
.then(resp => resp.json()) .then(response => this.renderMarkdown(response.data))
.then(data => this.renderMarkdown(data))
.catch(() => new Flash(__('Error loading markdown preview'))); .catch(() => new Flash(__('Error loading markdown preview')));
} else { } else {
this.renderMarkdown(); this.renderMarkdown();
......
---
title: Replaced vue resource to axios in the Markdown field preview component
merge_request: 32386
author: Prakash Chokalingam @prakash_Chokalingam
type: fixed
import $ from 'jquery'; import $ from 'jquery';
import '~/behaviors/markdown/render_gfm';
import Vue from 'vue'; import Vue from 'vue';
import AxiosMockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
import fieldComponent from '~/vue_shared/components/markdown/field.vue'; import fieldComponent from '~/vue_shared/components/markdown/field.vue';
import { TEST_HOST } from 'spec/test_constants';
function assertMarkdownTabs(isWrite, writeLink, previewLink, vm) { function assertMarkdownTabs(isWrite, writeLink, previewLink, vm) {
expect(writeLink.parentNode.classList.contains('active')).toEqual(isWrite); expect(writeLink.parentNode.classList.contains('active')).toEqual(isWrite);
...@@ -9,9 +13,13 @@ function assertMarkdownTabs(isWrite, writeLink, previewLink, vm) { ...@@ -9,9 +13,13 @@ function assertMarkdownTabs(isWrite, writeLink, previewLink, vm) {
} }
describe('Markdown field component', () => { describe('Markdown field component', () => {
const markdownPreviewPath = `${TEST_HOST}/preview`;
const markdownDocsPath = `${TEST_HOST}/docs`;
let axiosMock;
let vm; let vm;
beforeEach(done => { beforeEach(done => {
axiosMock = new AxiosMockAdapter(axios);
vm = new Vue({ vm = new Vue({
components: { components: {
fieldComponent, fieldComponent,
...@@ -23,8 +31,8 @@ describe('Markdown field component', () => { ...@@ -23,8 +31,8 @@ describe('Markdown field component', () => {
}, },
template: ` template: `
<field-component <field-component
markdown-preview-path="/preview" markdown-preview-path="${markdownPreviewPath}"
markdown-docs-path="/docs" markdown-docs-path="${markdownDocsPath}"
> >
<textarea <textarea
slot="textarea" slot="textarea"
...@@ -37,7 +45,13 @@ describe('Markdown field component', () => { ...@@ -37,7 +45,13 @@ describe('Markdown field component', () => {
Vue.nextTick(done); Vue.nextTick(done);
}); });
afterEach(() => {
axiosMock.restore();
});
describe('mounted', () => { describe('mounted', () => {
const previewHTML = '<p>markdown preview</p>';
it('renders textarea inside backdrop', () => { it('renders textarea inside backdrop', () => {
expect(vm.$el.querySelector('.zen-backdrop textarea')).not.toBeNull(); expect(vm.$el.querySelector('.zen-backdrop textarea')).not.toBeNull();
}); });
...@@ -47,20 +61,7 @@ describe('Markdown field component', () => { ...@@ -47,20 +61,7 @@ describe('Markdown field component', () => {
let writeLink; let writeLink;
beforeEach(() => { beforeEach(() => {
spyOn(Vue.http, 'post').and.callFake( axiosMock.onPost(markdownPreviewPath).replyOnce(200, { body: previewHTML });
() =>
new Promise(resolve => {
setTimeout(() => {
resolve({
json() {
return {
body: '<p>markdown preview</p>',
};
},
});
});
}),
);
previewLink = vm.$el.querySelector('.nav-links .js-preview-link'); previewLink = vm.$el.querySelector('.nav-links .js-preview-link');
writeLink = vm.$el.querySelector('.nav-links .js-write-link'); writeLink = vm.$el.querySelector('.nav-links .js-write-link');
...@@ -92,9 +93,7 @@ describe('Markdown field component', () => { ...@@ -92,9 +93,7 @@ describe('Markdown field component', () => {
previewLink.click(); previewLink.click();
setTimeout(() => { setTimeout(() => {
expect(vm.$el.querySelector('.md-preview-holder').innerHTML).toContain( expect(vm.$el.querySelector('.md-preview-holder').innerHTML).toContain(previewHTML);
'<p>markdown preview</p>',
);
done(); done();
}); });
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment