diff options
| author | Jan Beckmann <king-jan1999@hotmail.de> | 2018-10-02 13:59:42 +0000 |
|---|---|---|
| committer | Phil Hughes <me@iamphill.com> | 2018-10-02 13:59:42 +0000 |
| commit | ceafbbd317c9b9e67be6a1a223ab3f893ae047b3 (patch) | |
| tree | 88d41f541dbf2c8d04ef4a1bdb866c6906bbbc26 /spec/javascripts/lib | |
| parent | 57dc233325727a0baf28492bf59ae4b67562b84d (diff) | |
| download | gitlab-ce-ceafbbd317c9b9e67be6a1a223ab3f893ae047b3.tar.gz | |
Resolve "Add "Link" shortcut/icon in markdown editor to make it easier to add references"
Diffstat (limited to 'spec/javascripts/lib')
| -rw-r--r-- | spec/javascripts/lib/utils/text_markdown_spec.js | 69 |
1 files changed, 65 insertions, 4 deletions
diff --git a/spec/javascripts/lib/utils/text_markdown_spec.js b/spec/javascripts/lib/utils/text_markdown_spec.js index ca0e7c395a0..043dd018e0c 100644 --- a/spec/javascripts/lib/utils/text_markdown_spec.js +++ b/spec/javascripts/lib/utils/text_markdown_spec.js @@ -21,7 +21,7 @@ describe('init markdown', () => { textArea.selectionStart = 0; textArea.selectionEnd = 0; - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); @@ -32,7 +32,7 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}\n* `); }); @@ -43,7 +43,7 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); @@ -54,9 +54,70 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); }); + + describe('with selection', () => { + const text = 'initial selected value'; + const selected = 'selected'; + beforeEach(() => { + textArea.value = text; + const selectedIndex = text.indexOf(selected); + textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); + }); + + it('applies the tag to the selected value', () => { + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected, wrap: true }); + + expect(textArea.value).toEqual(text.replace(selected, `*${selected}*`)); + }); + + it('replaces the placeholder in the tag', () => { + insertMarkdownText({ textArea, text: textArea.value, tag: '[{text}](url)', blockTag: null, selected, wrap: false }); + + expect(textArea.value).toEqual(text.replace(selected, `[${selected}](url)`)); + }); + + describe('and text to be selected', () => { + const tag = '[{text}](url)'; + const select = 'url'; + + it('selects the text', () => { + insertMarkdownText({ textArea, + text: textArea.value, + tag, + blockTag: null, + selected, + wrap: false, + select }); + + const expectedText = text.replace(selected, `[${selected}](url)`); + expect(textArea.value).toEqual(expectedText); + expect(textArea.selectionStart).toEqual(expectedText.indexOf(select)); + expect(textArea.selectionEnd).toEqual(expectedText.indexOf(select) + select.length); + }); + + it('selects the right text when multiple tags are present', () => { + const initialValue = `${tag} ${tag} ${selected}`; + textArea.value = initialValue; + const selectedIndex = initialValue.indexOf(selected); + textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); + insertMarkdownText({ textArea, + text: textArea.value, + tag, + blockTag: null, + selected, + wrap: false, + select }); + + const expectedText = initialValue.replace(selected, `[${selected}](url)`); + expect(textArea.value).toEqual(expectedText); + expect(textArea.selectionStart).toEqual(expectedText.lastIndexOf(select)); + expect(textArea.selectionEnd).toEqual(expectedText.lastIndexOf(select) + select.length); + }); + }); + }); }); |
