Fix first line markdown helper for user profile activity stream
Fix https://gitlab.com/gitlab-org/gitlab-ce/issues/29425
This commit is contained in:
parent
ffcddb2959
commit
3e29936a15
|
|
@ -165,8 +165,8 @@ module EventsHelper
|
|||
|
||||
sanitize(
|
||||
text,
|
||||
tags: %w(a img b pre code p span),
|
||||
attributes: Rails::Html::WhiteListSanitizer.allowed_attributes + ['style']
|
||||
tags: %w(a img gl-emoji b pre code p span),
|
||||
attributes: Rails::Html::WhiteListSanitizer.allowed_attributes + ['style', 'data-name', 'data-unicode-version']
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ module GitlabMarkdownHelper
|
|||
# text hasn't already been truncated, then append "..." to the node contents
|
||||
# and return true. Otherwise return false.
|
||||
def truncate_if_block(node, truncated)
|
||||
if node.element? && node.description.block? && !truncated
|
||||
if node.element? && node.description&.block? && !truncated
|
||||
node.inner_html = "#{node.inner_html}..." if node.next_sibling
|
||||
true
|
||||
else
|
||||
|
|
|
|||
|
|
@ -152,9 +152,8 @@ describe GitlabMarkdownHelper do
|
|||
end
|
||||
|
||||
describe '#first_line_in_markdown' do
|
||||
let(:text) { "@#{user.username}, can you look at this?\nHello world\n"}
|
||||
|
||||
it 'truncates Markdown properly' do
|
||||
text = "@#{user.username}, can you look at this?\nHello world\n"
|
||||
actual = first_line_in_markdown(text, 100, project: project)
|
||||
|
||||
doc = Nokogiri::HTML.parse(actual)
|
||||
|
|
@ -169,6 +168,23 @@ describe GitlabMarkdownHelper do
|
|||
|
||||
expect(doc.content).to eq "@#{user.username}, can you look at this?..."
|
||||
end
|
||||
|
||||
it 'truncates Markdown with emoji properly' do
|
||||
text = "foo :wink:\nbar :grinning:"
|
||||
actual = first_line_in_markdown(text, 100, project: project)
|
||||
|
||||
doc = Nokogiri::HTML.parse(actual)
|
||||
|
||||
# Make sure we didn't create invalid markup
|
||||
# But also account for the 2 errors caused by the unknown `gl-emoji` elements
|
||||
expect(doc.errors.length).to eq(2)
|
||||
|
||||
expect(doc.css('gl-emoji').length).to eq(2)
|
||||
expect(doc.css('gl-emoji')[0].attr('data-name')).to eq 'wink'
|
||||
expect(doc.css('gl-emoji')[1].attr('data-name')).to eq 'grinning'
|
||||
|
||||
expect(doc.content).to eq "foo 😉\nbar 😀"
|
||||
end
|
||||
end
|
||||
|
||||
describe '#cross_project_reference' do
|
||||
|
|
|
|||
Loading…
Reference in New Issue