From 6cfd16656f02301c7c022025db3743dd3e43e6d2 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 10 Feb 2020 18:31:42 +0100 Subject: [PATCH] FIX: Ignore group mentions inside quotes (#8905) Also includes: * DEV: Reuse found elements --- app/models/post_analyzer.rb | 2 +- lib/pretty_text.rb | 2 +- spec/models/post_analyzer_spec.rb | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/models/post_analyzer.rb b/app/models/post_analyzer.rb index 1b5ca6970e9..63fe9724b4d 100644 --- a/app/models/post_analyzer.rb +++ b/app/models/post_analyzer.rb @@ -132,7 +132,7 @@ class PostAnalyzer def cooked_stripped @cooked_stripped ||= begin doc = Nokogiri::HTML.fragment(cook(@raw, topic_id: @topic_id)) - doc.css("pre .mention, aside.quote > .title, aside.quote .mention, .onebox, .elided").remove + doc.css("pre .mention, aside.quote > .title, aside.quote .mention, aside.quote .mention-group, .onebox, .elided").remove doc end end diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb index a09b45fb13f..e5c7fff2106 100644 --- a/lib/pretty_text.rb +++ b/lib/pretty_text.rb @@ -447,7 +447,7 @@ module PrettyText mentions = lookup_mentions(names, user_id: user_id) - doc.css("span.mention").each do |element| + elements.each do |element| name = element.text[1..-1] name.downcase! diff --git a/spec/models/post_analyzer_spec.rb b/spec/models/post_analyzer_spec.rb index 14afb3f80ec..d74b72a4e1c 100644 --- a/spec/models/post_analyzer_spec.rb +++ b/spec/models/post_analyzer_spec.rb @@ -236,6 +236,13 @@ describe PostAnalyzer do expect(post_analyzer.raw_mentions).to eq(['finn']) end + it "ignores group mentions in quotes" do + Fabricate(:group, name: "team") + Fabricate(:group, name: "mods") + post_analyzer = PostAnalyzer.new("[quote=\"Evil Trout\"]\n@team\n[/quote]\n @mods", default_topic_id) + expect(post_analyzer.raw_mentions).to eq(["mods"]) + end + it "ignores oneboxes" do post_analyzer = PostAnalyzer.new("Hello @Jake\n#{url}", default_topic_id) post_analyzer.stubs(:cook).returns("

Hello @Jake
@Finn

")