FIX: Improve Onebox detection (#8019)

Follow-up to 7c83d2eeb2.
This commit is contained in:
Bianca Nenciu 2019-09-10 13:59:48 +03:00 committed by GitHub
parent ddd45d1419
commit 0d22beb81d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 5 deletions

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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