# 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