Commit 2ec6a7e1 authored by Phil Hughes's avatar Phil Hughes

Fixed markdown preview in IDE not working for new files

parent 23fb465c
...@@ -22,7 +22,7 @@ export default { ...@@ -22,7 +22,7 @@ export default {
...mapState(['rightPanelCollapsed', 'viewer', 'delayViewerUpdated', 'panelResizing']), ...mapState(['rightPanelCollapsed', 'viewer', 'delayViewerUpdated', 'panelResizing']),
...mapGetters(['currentMergeRequest']), ...mapGetters(['currentMergeRequest']),
shouldHideEditor() { shouldHideEditor() {
return this.file && this.file.binary && !this.file.raw; return this.file && this.file.binary && !this.file.content;
}, },
editTabCSS() { editTabCSS() {
return { return {
...@@ -212,7 +212,7 @@ export default { ...@@ -212,7 +212,7 @@ export default {
<content-viewer <content-viewer
v-if="shouldHideEditor || file.viewMode === 'preview'" v-if="shouldHideEditor || file.viewMode === 'preview'"
:content="file.content || file.raw" :content="file.content || file.raw"
:path="file.rawPath" :path="file.rawPath || file.path"
:file-size="file.size" :file-size="file.size"
:project-path="file.projectId"/> :project-path="file.projectId"/>
</div> </div>
......
import Vue from 'vue'; import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
import store from '~/ide/stores'; import store from '~/ide/stores';
import repoEditor from '~/ide/components/repo_editor.vue'; import repoEditor from '~/ide/components/repo_editor.vue';
import monacoLoader from '~/ide/monaco_loader'; import monacoLoader from '~/ide/monaco_loader';
import Editor from '~/ide/lib/editor'; import Editor from '~/ide/lib/editor';
import { createComponentWithStore } from '../../helpers/vue_mount_component_helper'; import { createComponentWithStore } from '../../helpers/vue_mount_component_helper';
import setTimeoutPromise from '../../helpers/set_timeout_promise_helper';
import { file, resetStore } from '../helpers'; import { file, resetStore } from '../helpers';
describe('RepoEditor', () => { describe('RepoEditor', () => {
...@@ -79,16 +82,30 @@ describe('RepoEditor', () => { ...@@ -79,16 +82,30 @@ describe('RepoEditor', () => {
}); });
describe('when file is markdown and viewer mode is review', () => { describe('when file is markdown and viewer mode is review', () => {
let mock;
beforeEach(done => { beforeEach(done => {
mock = new MockAdapter(axios);
vm.file.projectId = 'namespace/project';
vm.file.previewMode = { vm.file.previewMode = {
id: 'markdown', id: 'markdown',
previewTitle: 'Preview Markdown', previewTitle: 'Preview Markdown',
}; };
vm.file.content = 'testing 123';
vm.$store.state.viewer = 'diff'; vm.$store.state.viewer = 'diff';
mock.onPost('/namespace/project/preview_markdown').reply(200, {
body: '<p>testing 123</p>',
});
vm.$nextTick(done); vm.$nextTick(done);
}); });
afterEach(() => {
mock.restore();
});
it('renders an Edit and a Preview Tab', done => { it('renders an Edit and a Preview Tab', done => {
Vue.nextTick(() => { Vue.nextTick(() => {
const tabs = vm.$el.querySelectorAll('.ide-mode-tabs .nav-links li'); const tabs = vm.$el.querySelectorAll('.ide-mode-tabs .nav-links li');
...@@ -99,6 +116,26 @@ describe('RepoEditor', () => { ...@@ -99,6 +116,26 @@ describe('RepoEditor', () => {
done(); done();
}); });
}); });
it('renders markdown for tempFile', done => {
vm.file.tempFile = true;
vm.file.path = `${vm.file.path}.md`;
vm.$store.state.entries[vm.file.path] = vm.file;
vm
.$nextTick()
.then(() => {
vm.$el.querySelectorAll('.ide-mode-tabs .nav-links a')[1].click();
})
.then(setTimeoutPromise)
.then(() => {
expect(vm.$el.querySelector('.preview-container').innerHTML).toContain(
'<p>testing 123</p>',
);
})
.then(done)
.catch(done.fail);
});
}); });
describe('when open file is binary and not raw', () => { describe('when open file is binary and not raw', () => {
......
...@@ -22,7 +22,7 @@ Vue.config.warnHandler = (msg, vm, trace) => { ...@@ -22,7 +22,7 @@ Vue.config.warnHandler = (msg, vm, trace) => {
}; };
let hasVueErrors = false; let hasVueErrors = false;
Vue.config.errorHandler = function (err) { Vue.config.errorHandler = function(err) {
hasVueErrors = true; hasVueErrors = true;
fail(err); fail(err);
}; };
...@@ -43,10 +43,11 @@ window.gl = window.gl || {}; ...@@ -43,10 +43,11 @@ window.gl = window.gl || {};
window.gl.TEST_HOST = TEST_HOST; window.gl.TEST_HOST = TEST_HOST;
window.gon = window.gon || {}; window.gon = window.gon || {};
window.gon.test_env = true; window.gon.test_env = true;
gon.relative_url_root = '';
let hasUnhandledPromiseRejections = false; let hasUnhandledPromiseRejections = false;
window.addEventListener('unhandledrejection', (event) => { window.addEventListener('unhandledrejection', event => {
hasUnhandledPromiseRejections = true; hasUnhandledPromiseRejections = true;
console.error('Unhandled promise rejection:'); console.error('Unhandled promise rejection:');
console.error(event.reason.stack || event.reason); console.error(event.reason.stack || event.reason);
...@@ -71,13 +72,13 @@ const axiosDefaultAdapter = getDefaultAdapter(); ...@@ -71,13 +72,13 @@ const axiosDefaultAdapter = getDefaultAdapter();
// render all of our tests // render all of our tests
const testsContext = require.context('.', true, /_spec$/); const testsContext = require.context('.', true, /_spec$/);
testsContext.keys().forEach(function (path) { testsContext.keys().forEach(function(path) {
try { try {
testsContext(path); testsContext(path);
} catch (err) { } catch (err) {
console.error('[ERROR] Unable to load spec: ', path); console.error('[ERROR] Unable to load spec: ', path);
describe('Test bundle', function () { describe('Test bundle', function() {
it(`includes '${path}'`, function () { it(`includes '${path}'`, function() {
expect(err).toBeNull(); expect(err).toBeNull();
}); });
}); });
...@@ -85,7 +86,7 @@ testsContext.keys().forEach(function (path) { ...@@ -85,7 +86,7 @@ testsContext.keys().forEach(function (path) {
}); });
describe('test errors', () => { describe('test errors', () => {
beforeAll((done) => { beforeAll(done => {
if (hasUnhandledPromiseRejections || hasVueWarnings || hasVueErrors) { if (hasUnhandledPromiseRejections || hasVueWarnings || hasVueErrors) {
setTimeout(done, 1000); setTimeout(done, 1000);
} else { } else {
...@@ -149,18 +150,18 @@ if (process.env.BABEL_ENV === 'coverage') { ...@@ -149,18 +150,18 @@ if (process.env.BABEL_ENV === 'coverage') {
'./issue_show/index.js', './issue_show/index.js',
]; ];
describe('Uncovered files', function () { describe('Uncovered files', function() {
const sourceFiles = require.context('~', true, /\.js$/); const sourceFiles = require.context('~', true, /\.js$/);
$.holdReady(true); $.holdReady(true);
sourceFiles.keys().forEach(function (path) { sourceFiles.keys().forEach(function(path) {
// ignore if there is a matching spec file // ignore if there is a matching spec file
if (testsContext.keys().indexOf(`${path.replace(/\.js$/, '')}_spec`) > -1) { if (testsContext.keys().indexOf(`${path.replace(/\.js$/, '')}_spec`) > -1) {
return; return;
} }
it(`includes '${path}'`, function () { it(`includes '${path}'`, function() {
try { try {
sourceFiles(path); sourceFiles(path);
} catch (err) { } catch (err) {
......
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