Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/blob_edit/edit_blob_spec.js')
-rw-r--r--spec/frontend/blob_edit/edit_blob_spec.js41
1 files changed, 34 insertions, 7 deletions
diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js
index 9c974e79e6e..c031cae11df 100644
--- a/spec/frontend/blob_edit/edit_blob_spec.js
+++ b/spec/frontend/blob_edit/edit_blob_spec.js
@@ -1,9 +1,12 @@
+import { Emitter } from 'monaco-editor';
+import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures';
import waitForPromises from 'helpers/wait_for_promises';
import EditBlob from '~/blob_edit/edit_blob';
import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base';
import { FileTemplateExtension } from '~/editor/extensions/source_editor_file_template_ext';
import { EditorMarkdownExtension } from '~/editor/extensions/source_editor_markdown_ext';
import { EditorMarkdownPreviewExtension } from '~/editor/extensions/source_editor_markdown_livepreview_ext';
+import { ToolbarExtension } from '~/editor/extensions/source_editor_toolbar_ext';
import SourceEditor from '~/editor/source_editor';
jest.mock('~/editor/source_editor');
@@ -11,11 +14,13 @@ jest.mock('~/editor/extensions/source_editor_extension_base');
jest.mock('~/editor/extensions/source_editor_file_template_ext');
jest.mock('~/editor/extensions/source_editor_markdown_ext');
jest.mock('~/editor/extensions/source_editor_markdown_livepreview_ext');
+jest.mock('~/editor/extensions/source_editor_toolbar_ext');
const PREVIEW_MARKDOWN_PATH = '/foo/bar/preview_markdown';
const defaultExtensions = [
{ definition: SourceEditorExtension },
{ definition: FileTemplateExtension },
+ { definition: ToolbarExtension },
];
const markdownExtensions = [
{ definition: EditorMarkdownExtension },
@@ -26,15 +31,20 @@ const markdownExtensions = [
];
describe('Blob Editing', () => {
- const useMock = jest.fn();
+ let blobInstance;
+ const useMock = jest.fn(() => markdownExtensions);
+ const unuseMock = jest.fn();
+ const emitter = new Emitter();
const mockInstance = {
use: useMock,
+ unuse: unuseMock,
setValue: jest.fn(),
getValue: jest.fn().mockReturnValue('test value'),
focus: jest.fn(),
+ onDidChangeModelLanguage: emitter.event,
};
beforeEach(() => {
- setFixtures(`
+ setHTMLFixture(`
<form class="js-edit-blob-form">
<div id="file_path"></div>
<div id="editor"></div>
@@ -44,17 +54,18 @@ describe('Blob Editing', () => {
jest.spyOn(SourceEditor.prototype, 'createInstance').mockReturnValue(mockInstance);
});
afterEach(() => {
- SourceEditorExtension.mockClear();
- EditorMarkdownExtension.mockClear();
- EditorMarkdownPreviewExtension.mockClear();
- FileTemplateExtension.mockClear();
+ jest.clearAllMocks();
+ unuseMock.mockClear();
+ useMock.mockClear();
+ resetHTMLFixture();
});
const editorInst = (isMarkdown) => {
- return new EditBlob({
+ blobInstance = new EditBlob({
isMarkdown,
previewMarkdownPath: PREVIEW_MARKDOWN_PATH,
});
+ return blobInstance;
};
const initEditor = async (isMarkdown = false) => {
@@ -79,6 +90,22 @@ describe('Blob Editing', () => {
expect(useMock).toHaveBeenCalledTimes(2);
expect(useMock.mock.calls[1]).toEqual([markdownExtensions]);
});
+
+ it('correctly handles switching from markdown and un-uses markdown extensions', async () => {
+ await initEditor(true);
+ expect(unuseMock).not.toHaveBeenCalled();
+ await emitter.fire({ newLanguage: 'plaintext', oldLanguage: 'markdown' });
+ expect(unuseMock).toHaveBeenCalledWith(markdownExtensions);
+ });
+
+ it('correctly handles switching from non-markdown to markdown extensions', async () => {
+ const mdSpy = jest.fn();
+ await initEditor();
+ blobInstance.fetchMarkdownExtension = mdSpy;
+ expect(mdSpy).not.toHaveBeenCalled();
+ await emitter.fire({ newLanguage: 'markdown', oldLanguage: 'plaintext' });
+ expect(mdSpy).toHaveBeenCalled();
+ });
});
it('adds trailing newline to the blob content on submit', async () => {