diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-13 15:07:43 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-13 15:07:43 +0000 |
commit | 7eca3f56625526ffa7f263c1fef0fcea34de8ca6 (patch) | |
tree | fec87c2a902e3c44f89963f4b28e6de32c0806f3 /spec/frontend/blob_edit/edit_blob_spec.js | |
parent | 988424215cf104d9ee24bb1751141424cffb32d1 (diff) | |
download | gitlab-ce-7eca3f56625526ffa7f263c1fef0fcea34de8ca6.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/blob_edit/edit_blob_spec.js')
-rw-r--r-- | spec/frontend/blob_edit/edit_blob_spec.js | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js index ae678f6f25f..c031cae11df 100644 --- a/spec/frontend/blob_edit/edit_blob_spec.js +++ b/spec/frontend/blob_edit/edit_blob_spec.js @@ -1,3 +1,4 @@ +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'; @@ -5,6 +6,7 @@ import { SourceEditorExtension } from '~/editor/extensions/source_editor_extensi 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'); @@ -12,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 }, @@ -27,12 +31,17 @@ 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(() => { setHTMLFixture(` @@ -45,18 +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) => { @@ -81,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 () => { |