summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Eastwood <contact@ericeastwood.com>2017-03-14 01:24:56 -0500
committerEric Eastwood <contact@ericeastwood.com>2017-03-14 11:16:26 -0500
commit3e29936a15eb2f6c9bc2d92ebf1a67a0cadb916e (patch)
treec88bc426c4473652c0773c038b2753a8997bc30d
parentffcddb295950729dbc4ee7a3c0e32f7dec00da99 (diff)
downloadgitlab-ce-29425-fix-activity-stream-first-line-markdown.tar.gz
Fix first line markdown helper for user profile activity stream29425-fix-activity-stream-first-line-markdown
Fix https://gitlab.com/gitlab-org/gitlab-ce/issues/29425
-rw-r--r--app/helpers/events_helper.rb4
-rw-r--r--app/helpers/gitlab_markdown_helper.rb2
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb20
3 files changed, 21 insertions, 5 deletions
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 5605393c0c3..fb872a13f74 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -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
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index 6d365ea9251..6226cfe25cf 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -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
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 9ffd4b9371c..6cf3f86680a 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -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