From 9765995d257836708530656e50004e2aed3e8522 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sat, 12 Jun 2021 21:49:40 +0300 Subject: [PATCH] fixed a bug + made a testcase out of it --- src/components/rich_content/rich_content.jsx | 5 ++- .../specs/components/rich_content.spec.js | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx index 0aae7a55..e188763f 100644 --- a/src/components/rich_content/rich_content.jsx +++ b/src/components/rich_content/rich_content.jsx @@ -247,12 +247,13 @@ const getLinkData = (attrs, children, index) => { export const preProcessPerLine = (html, greentext, handleLinks) => { const lastMentions = [] - let nonEmptyIndex = 0 + let nonEmptyIndex = -1 const newHtml = convertHtmlToLines(html).reverse().map((item, index, array) => { // Going over each line in reverse to detect last mentions, // keeping non-text stuff as-is if (!item.text) return item const string = item.text + nonEmptyIndex += 1 // Greentext stuff if (greentext && (string.includes('>') || string.includes('<'))) { @@ -260,10 +261,8 @@ export const preProcessPerLine = (html, greentext, handleLinks) => { .replace(/@\w+/gi, '') // remove mentions (even failed ones) .trim() if (cleanedString.startsWith('>')) { - nonEmptyIndex += 1 return `${string}` } else if (cleanedString.startsWith('<')) { - nonEmptyIndex += 1 return `${string}` } } diff --git a/test/unit/specs/components/rich_content.spec.js b/test/unit/specs/components/rich_content.spec.js index 20322019..ff491a3a 100644 --- a/test/unit/specs/components/rich_content.spec.js +++ b/test/unit/specs/components/rich_content.spec.js @@ -381,4 +381,39 @@ describe('RichContent', () => { expect(wrapper.html()).to.eql(compwrap(expected)) }) + + it('One buggy example', () => { + const html = [ + 'Bruh', + 'Bruh', + [ + makeMention('foo'), + makeMention('bar'), + makeMention('baz') + ].join(''), + 'Bruh' + ].join('
') + const expected = [ + 'Bruh', + 'Bruh', + [ + stubMention('foo'), + stubMention('bar'), + stubMention('baz') + ].join(''), + 'Bruh' + ].join('
') + + const wrapper = shallowMount(RichContent, { + localVue, + propsData: { + handleLinks: true, + greentext: true, + emoji: [], + html + } + }) + + expect(wrapper.html()).to.eql(compwrap(expected)) + }) })