diff options
Diffstat (limited to 'spec/frontend/blob_edit/edit_blob_spec.js')
-rw-r--r-- | spec/frontend/blob_edit/edit_blob_spec.js | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js index e58ad4040a9..31be1a86de4 100644 --- a/spec/frontend/blob_edit/edit_blob_spec.js +++ b/spec/frontend/blob_edit/edit_blob_spec.js @@ -6,6 +6,7 @@ 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 { SecurityPolicySchemaExtension } from '~/editor/extensions/source_editor_security_policy_schema_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'; @@ -17,6 +18,7 @@ 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'); +jest.mock('~/editor/extensions/source_editor_security_policy_schema_ext'); const PREVIEW_MARKDOWN_PATH = '/foo/bar/preview_markdown'; const defaultExtensions = [ @@ -67,16 +69,18 @@ describe('Blob Editing', () => { resetHTMLFixture(); }); - const editorInst = (isMarkdown) => { + const editorInst = ({ isMarkdown = false, isSecurityPolicy = false }) => { blobInstance = new EditBlob({ isMarkdown, previewMarkdownPath: PREVIEW_MARKDOWN_PATH, + filePath: isSecurityPolicy ? '.gitlab/security-policies/policy.yml' : '', + projectPath: 'path/to/project', }); return blobInstance; }; - const initEditor = async (isMarkdown = false) => { - editorInst(isMarkdown); + const initEditor = async ({ isMarkdown = false, isSecurityPolicy = false } = {}) => { + editorInst({ isMarkdown, isSecurityPolicy }); await waitForPromises(); }; @@ -93,13 +97,13 @@ describe('Blob Editing', () => { }); it('loads MarkdownExtension only for the markdown files', async () => { - await initEditor(true); + await initEditor({ isMarkdown: true }); 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); + await initEditor({ isMarkdown: true }); expect(unuseMock).not.toHaveBeenCalled(); await emitter.fire({ newLanguage: 'plaintext', oldLanguage: 'markdown' }); expect(unuseMock).toHaveBeenCalledWith(markdownExtensions); @@ -115,6 +119,19 @@ describe('Blob Editing', () => { }); }); + describe('Security Policy Yaml', () => { + it('does not load SecurityPolicySchemaExtension by default', async () => { + await initEditor(); + expect(SecurityPolicySchemaExtension).not.toHaveBeenCalled(); + }); + + it('loads SecurityPolicySchemaExtension only for the security policies yml', async () => { + await initEditor({ isSecurityPolicy: true }); + expect(useMock).toHaveBeenCalledTimes(2); + expect(useMock.mock.calls[1]).toEqual([[{ definition: SecurityPolicySchemaExtension }]]); + }); + }); + describe('correctly handles toggling the live-preview panel for different file types', () => { it.each` desc | isMarkdown | isPreviewOpened | tabToClick | shouldOpenPreview | shouldClosePreview | expectedDesc @@ -142,7 +159,7 @@ describe('Blob Editing', () => { }, }, }); - await initEditor(isMarkdown); + await initEditor({ isMarkdown }); blobInstance.markdownLivePreviewOpened = isPreviewOpened; const elToClick = document.querySelector(`a[href='${tabToClick}']`); elToClick.dispatchEvent(new Event('click')); |