diff options
Diffstat (limited to 'spec/frontend/snippet/snippet_bundle_spec.js')
-rw-r--r-- | spec/frontend/snippet/snippet_bundle_spec.js | 141 |
1 files changed, 66 insertions, 75 deletions
diff --git a/spec/frontend/snippet/snippet_bundle_spec.js b/spec/frontend/snippet/snippet_bundle_spec.js index 12d20d5cd85..38d05243c65 100644 --- a/spec/frontend/snippet/snippet_bundle_spec.js +++ b/spec/frontend/snippet/snippet_bundle_spec.js @@ -1,94 +1,85 @@ import Editor from '~/editor/editor_lite'; -import { initEditor } from '~/snippet/snippet_bundle'; +import initEditor from '~/snippet/snippet_bundle'; import { setHTMLFixture } from 'helpers/fixtures'; jest.mock('~/editor/editor_lite', () => jest.fn()); describe('Snippet editor', () => { - describe('Monaco editor for Snippets', () => { - let oldGon; - let editorEl; - let contentEl; - let fileNameEl; - let form; - - const mockName = 'foo.bar'; - const mockContent = 'Foo Bar'; - const updatedMockContent = 'New Foo Bar'; - - const mockEditor = { - createInstance: jest.fn(), - updateModelLanguage: jest.fn(), - getValue: jest.fn().mockReturnValueOnce(updatedMockContent), - }; - Editor.mockImplementation(() => mockEditor); - - function setUpFixture(name, content) { - setHTMLFixture(` - <div class="snippet-form-holder"> - <form> - <input class="js-snippet-file-name" type="text" value="${name}"> - <input class="snippet-file-content" type="hidden" value="${content}"> - <pre id="editor"></pre> - </form> - </div> - `); - } - - function bootstrap(name = '', content = '') { - setUpFixture(name, content); - editorEl = document.getElementById('editor'); - contentEl = document.querySelector('.snippet-file-content'); - fileNameEl = document.querySelector('.js-snippet-file-name'); - form = document.querySelector('.snippet-form-holder form'); - - initEditor(); - } - - function createEvent(name) { - return new Event(name, { - view: window, - bubbles: true, - cancelable: true, - }); - } - - beforeEach(() => { - oldGon = window.gon; - window.gon = { features: { monacoSnippets: true } }; - bootstrap(mockName, mockContent); + let editorEl; + let contentEl; + let fileNameEl; + let form; + + const mockName = 'foo.bar'; + const mockContent = 'Foo Bar'; + const updatedMockContent = 'New Foo Bar'; + + const mockEditor = { + createInstance: jest.fn(), + updateModelLanguage: jest.fn(), + getValue: jest.fn().mockReturnValueOnce(updatedMockContent), + }; + Editor.mockImplementation(() => mockEditor); + + function setUpFixture(name, content) { + setHTMLFixture(` + <div class="snippet-form-holder"> + <form> + <input class="js-snippet-file-name" type="text" value="${name}"> + <input class="snippet-file-content" type="hidden" value="${content}"> + <pre id="editor"></pre> + </form> + </div> + `); + } + + function bootstrap(name = '', content = '') { + setUpFixture(name, content); + editorEl = document.getElementById('editor'); + contentEl = document.querySelector('.snippet-file-content'); + fileNameEl = document.querySelector('.js-snippet-file-name'); + form = document.querySelector('.snippet-form-holder form'); + + initEditor(); + } + + function createEvent(name) { + return new Event(name, { + view: window, + bubbles: true, + cancelable: true, }); + } - afterEach(() => { - window.gon = oldGon; - }); + beforeEach(() => { + bootstrap(mockName, mockContent); + }); - it('correctly initializes Editor', () => { - expect(mockEditor.createInstance).toHaveBeenCalledWith({ - el: editorEl, - blobPath: mockName, - blobContent: mockContent, - }); + it('correctly initializes Editor', () => { + expect(mockEditor.createInstance).toHaveBeenCalledWith({ + el: editorEl, + blobPath: mockName, + blobContent: mockContent, }); + }); - it('listens to file name changes and updates syntax highlighting of code', () => { - expect(mockEditor.updateModelLanguage).not.toHaveBeenCalled(); + it('listens to file name changes and updates syntax highlighting of code', () => { + expect(mockEditor.updateModelLanguage).not.toHaveBeenCalled(); - const event = createEvent('change'); + const event = createEvent('change'); - fileNameEl.value = updatedMockContent; - fileNameEl.dispatchEvent(event); + fileNameEl.value = updatedMockContent; + fileNameEl.dispatchEvent(event); - expect(mockEditor.updateModelLanguage).toHaveBeenCalledWith(updatedMockContent); - }); + expect(mockEditor.updateModelLanguage).toHaveBeenCalledWith(updatedMockContent); + }); - it('listens to form submit event and populates the hidden field with most recent version of the content', () => { - expect(contentEl.value).toBe(mockContent); + it('listens to form submit event and populates the hidden field with most recent version of the content', () => { + expect(contentEl.value).toBe(mockContent); - const event = createEvent('submit'); + const event = createEvent('submit'); - form.dispatchEvent(event); - expect(contentEl.value).toBe(updatedMockContent); - }); + form.dispatchEvent(event); + expect(contentEl.value).toBe(updatedMockContent); }); }); |