diff options
Diffstat (limited to 'spec/javascripts/behaviors/copy_as_gfm_spec.js')
-rw-r--r-- | spec/javascripts/behaviors/copy_as_gfm_spec.js | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/spec/javascripts/behaviors/copy_as_gfm_spec.js b/spec/javascripts/behaviors/copy_as_gfm_spec.js deleted file mode 100644 index d653fca0988..00000000000 --- a/spec/javascripts/behaviors/copy_as_gfm_spec.js +++ /dev/null @@ -1,125 +0,0 @@ -import initCopyAsGFM, { CopyAsGFM } from '~/behaviors/markdown/copy_as_gfm'; - -describe('CopyAsGFM', () => { - describe('CopyAsGFM.pasteGFM', () => { - function callPasteGFM() { - const e = { - originalEvent: { - clipboardData: { - getData(mimeType) { - // When GFM code is copied, we put the regular plain text - // on the clipboard as `text/plain`, and the GFM as `text/x-gfm`. - // This emulates the behavior of `getData` with that data. - if (mimeType === 'text/plain') { - return 'code'; - } - if (mimeType === 'text/x-gfm') { - return '`code`'; - } - return null; - }, - }, - }, - preventDefault() {}, - }; - - CopyAsGFM.pasteGFM(e); - } - - it('wraps pasted code when not already in code tags', () => { - spyOn(window.gl.utils, 'insertText').and.callFake((el, textFunc) => { - const insertedText = textFunc('This is code: ', ''); - - expect(insertedText).toEqual('`code`'); - }); - - callPasteGFM(); - }); - - it('does not wrap pasted code when already in code tags', () => { - spyOn(window.gl.utils, 'insertText').and.callFake((el, textFunc) => { - const insertedText = textFunc('This is code: `', '`'); - - expect(insertedText).toEqual('code'); - }); - - callPasteGFM(); - }); - }); - - describe('CopyAsGFM.copyGFM', () => { - // Stub getSelection to return a purpose-built object. - const stubSelection = (html, parentNode) => ({ - getRangeAt: () => ({ - commonAncestorContainer: { tagName: parentNode }, - cloneContents: () => { - const fragment = document.createDocumentFragment(); - const node = document.createElement('div'); - node.innerHTML = html; - Array.from(node.childNodes).forEach(item => fragment.appendChild(item)); - return fragment; - }, - }), - rangeCount: 1, - }); - - const clipboardData = { - setData() {}, - }; - - const simulateCopy = () => { - const e = { - originalEvent: { - clipboardData, - }, - preventDefault() {}, - stopPropagation() {}, - }; - CopyAsGFM.copyAsGFM(e, CopyAsGFM.transformGFMSelection); - return clipboardData; - }; - - beforeAll(done => { - initCopyAsGFM(); - - // Fake call to nodeToGfm so the import of lazy bundle happened - CopyAsGFM.nodeToGFM(document.createElement('div')) - .then(() => { - done(); - }) - .catch(done.fail); - }); - - beforeEach(() => spyOn(clipboardData, 'setData')); - - describe('list handling', () => { - it('uses correct gfm for unordered lists', done => { - const selection = stubSelection('<li>List Item1</li><li>List Item2</li>\n', 'UL'); - - spyOn(window, 'getSelection').and.returnValue(selection); - simulateCopy(); - - setTimeout(() => { - const expectedGFM = '* List Item1\n* List Item2'; - - expect(clipboardData.setData).toHaveBeenCalledWith('text/x-gfm', expectedGFM); - done(); - }); - }); - - it('uses correct gfm for ordered lists', done => { - const selection = stubSelection('<li>List Item1</li><li>List Item2</li>\n', 'OL'); - - spyOn(window, 'getSelection').and.returnValue(selection); - simulateCopy(); - - setTimeout(() => { - const expectedGFM = '1. List Item1\n1. List Item2'; - - expect(clipboardData.setData).toHaveBeenCalledWith('text/x-gfm', expectedGFM); - done(); - }); - }); - }); - }); -}); |