diff --git a/app/assets/javascripts/discourse/app/components/user-stream-item.hbs b/app/assets/javascripts/discourse/app/components/user-stream-item.hbs index fb6e9d12d2a..ed250df6de8 100644 --- a/app/assets/javascripts/discourse/app/components/user-stream-item.hbs +++ b/app/assets/javascripts/discourse/app/components/user-stream-item.hbs @@ -16,9 +16,9 @@ {{#if @item.postUrl}} - {{html-safe @item.title}} + {{replace-emoji @item.title}} {{else}} - {{html-safe @item.title}} + {{replace-emoji @item.title}} {{/if}} diff --git a/spec/system/user_activity_posts_spec.rb b/spec/system/user_activity_posts_spec.rb new file mode 100644 index 00000000000..bd16970621d --- /dev/null +++ b/spec/system/user_activity_posts_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +describe "User activity posts", type: :system do + before_all { UserActionManager.enable } + fab!(:user) + + fab!(:topic1) do + Fabricate(:topic, title: "Title with & characters and emoji :wave:").tap do |t| + Fabricate.times(2, :post, topic: t, user: user).each { |p| UserActionManager.post_created(p) } + end + end + fab!(:topic2) do + Fabricate(:topic).tap do |t| + Fabricate.times(2, :post, topic: t, user: user).each { |p| UserActionManager.post_created(p) } + end + end + + it "lists posts with correctly-formatted titles" do + visit "/u/#{user.username_lower}/activity/replies" + + expect(page).to have_css(".stream-topic-title .title", count: 2) + + title_element = find(".stream-topic-title .title a[href*='/#{topic1.id}']") + expect(title_element).to have_text("Title with & characters and emoji") + expect(title_element).to have_css("img.emoji[title='wave']") + end +end