From 0d22beb81db354aeddddf94ea7e80addacd3abc4 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Tue, 10 Sep 2019 13:59:48 +0300 Subject: [PATCH] FIX: Improve Onebox detection (#8019) Follow-up to 7c83d2eeb261ac676a8320e6a704752c56fd242e. --- app/models/post_analyzer.rb | 9 ++++++--- lib/cooked_post_processor.rb | 2 +- .../discourse_narrative_bot/new_user_narrative_spec.rb | 1 + spec/models/post_analyzer_spec.rb | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/models/post_analyzer.rb b/app/models/post_analyzer.rb index a9540320f14..cfc64e5308e 100644 --- a/app/models/post_analyzer.rb +++ b/app/models/post_analyzer.rb @@ -9,10 +9,11 @@ class PostAnalyzer @raw = raw @topic_id = topic_id @onebox_urls = [] + @found_oneboxes = false end def found_oneboxes? - @onebox_urls.present? + @found_oneboxes end def has_oneboxes? @@ -36,7 +37,9 @@ class PostAnalyzer result = Oneboxer.apply(cooked) do |url| @onebox_urls << url Oneboxer.invalidate(url) if opts[:invalidate_oneboxes] - Oneboxer.cached_onebox(url) + onebox = Oneboxer.cached_onebox(url) + @found_oneboxes = true if onebox.present? + onebox end cooked = result.to_html if result.changed? @@ -126,7 +129,7 @@ class PostAnalyzer # How many links are present in the post def link_count - raw_links.size + raw_links.size + @onebox_urls.size end def cooked_stripped diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index 46050a69e40..f709b3d9cff 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -28,7 +28,7 @@ class CookedPostProcessor @cooking_options = @cooking_options.symbolize_keys @doc = Nokogiri::HTML::fragment(post.cook(post.raw, @cooking_options)) - @has_oneboxes = @doc.css("aside.onebox").count > 0 + @has_oneboxes = post.post_analyzer.found_oneboxes? @size_cache = {} @disable_loading_image = !!opts[:disable_loading_image] diff --git a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/new_user_narrative_spec.rb b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/new_user_narrative_spec.rb index 89199058c7d..1b35acd3d88 100644 --- a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/new_user_narrative_spec.rb +++ b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/new_user_narrative_spec.rb @@ -268,6 +268,7 @@ describe DiscourseNarrativeBot::NewUserNarrative do describe 'onebox tutorial' do before do + Oneboxer.stubs(:cached_onebox).with('https://en.wikipedia.org/wiki/ROT13').returns('oneboxed Wikipedia') narrative.set_data(user, state: :tutorial_onebox, topic_id: topic.id) end diff --git a/spec/models/post_analyzer_spec.rb b/spec/models/post_analyzer_spec.rb index ed3000b8913..14afb3f80ec 100644 --- a/spec/models/post_analyzer_spec.rb +++ b/spec/models/post_analyzer_spec.rb @@ -16,7 +16,7 @@ describe PostAnalyzer do before { Oneboxer.stubs(:onebox) } it 'fetches the cached onebox for any urls in the post' do - Oneboxer.expects(:cached_onebox).with url + Oneboxer.expects(:cached_onebox).with(url).returns('something') post_analyzer.cook(raw, options) expect(post_analyzer.found_oneboxes?).to be(true) end