mirror of
https://github.com/discourse/discourse.git
synced 2024-12-24 04:54:54 +08:00
14d97f9cf1
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.
56 lines
2.0 KiB
Ruby
56 lines
2.0 KiB
Ruby
# 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’ you <b>miss me</b>? - Album on Imgur</title><meta name="og:description" content="Post with 7 votes and 151 views. Shared by vinothkannans. Did you <b>miss me</b>?" /><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'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="<b>tag1</b>" />
|
||
<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
|