discourse/spec/lib/onebox/open_graph_spec.rb
Loïc Guitaut 14d97f9cf1 FEATURE: Show more context in Discourse topic oneboxes
Currently when generating a onebox for Discourse topics, some important
context is missing such as categories and tags.

This patch addresses this issue by introducing a new onebox engine
dedicated to display this information when available. Indeed to get this
new information, categories and tags are exposed in the topic metadata
as opengraph tags.
2023-01-11 14:22:53 +01:00

56 lines
2.0 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# frozen_string_literal: true
require "onebox/open_graph"
RSpec.describe Onebox::OpenGraph do
it "excludes html tags in title" do
doc =
Nokogiri.HTML(
'<html><title>Did&#8217; you &lt;b&gt;miss me&lt;/b&gt;? - Album on Imgur</title><meta name="og:description" content="Post with 7 votes and 151 views. Shared by vinothkannans. Did you &lt;b&gt;miss me&lt;/b&gt;?" /><meta property="og:image" content="https://i.imgur.com/j1CNCZY.gif?noredirect" /></html>',
)
og = described_class.new(doc)
expect(og.title).to eq("Did you miss me? - Album on Imgur")
expect(og.description).to eq(
"Post with 7 votes and 151 views. Shared by vinothkannans. Did you miss me?",
)
expect(og.image).to eq("https://i.imgur.com/j1CNCZY.gif?noredirect")
end
it "correctly normalizes the url properties" do
doc =
Nokogiri.HTML(
"<html><meta property=\"og:image\" content=\"http://test.com/test'ing.mp3\" /></html>",
)
og = described_class.new(doc)
expect(og.image).to eq("http://test.com/test&apos;ing.mp3")
end
describe "Collections" do
subject(:graph) { described_class.new(doc) }
let(:doc) { Nokogiri.HTML(<<-HTML) }
<html>
<title>test</title>
<meta property="og:article:tag" content="&lt;b&gt;tag1&lt;/b&gt;" />
<meta property="og:article:tag" content="tag2" />
<meta property="og:article:section" content="category1" />
<meta property="og:article:section" content="category2" />
<meta property="og:article:section:color" content="ff0000" />
<meta property="og:article:section:color" content="0000ff" />
</html>
HTML
it "handles multiple article:tag tags" do
expect(graph.article_tags).to eq %w[tag1 tag2]
end
it "handles multiple article:section tags" do
expect(graph.article_sections).to eq %w[category1 category2]
end
it "handles multiple article:section:color tags" do
expect(graph.article_section_colors).to eq %w[ff0000 0000ff]
end
end
end