87 lines
3.3 KiB
Ruby
87 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
describe ApplicationHelper::GraphMethods, type: :helper do
|
|
describe "#user_opengraph" do
|
|
context "sample user" do
|
|
let(:user) do
|
|
FactoryBot.create(:user,
|
|
profile: { display_name: "Cunes",
|
|
description: "A bunch of raccoons in a trenchcoat.", },
|
|
screen_name: "raccoons",)
|
|
end
|
|
|
|
subject { user_opengraph(user) }
|
|
|
|
it "should generate a matching OpenGraph structure for a user" do
|
|
allow(APP_CONFIG).to receive(:[]).with("site_name").and_return("pineapplespring")
|
|
expect(subject).to eq(<<~META.chomp)
|
|
<meta property="og:title" content="Cunes">
|
|
<meta property="og:type" content="profile">
|
|
<meta property="og:image" content="http://test.host/images/large/no_avatar.png">
|
|
<meta property="og:url" content="http://test.host/@raccoons">
|
|
<meta property="og:description" content="A bunch of raccoons in a trenchcoat.">
|
|
<meta property="og:site_name" content="pineapplespring">
|
|
<meta property="profile:username" content="raccoons">
|
|
META
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#user_twitter_card" do
|
|
context "sample user" do
|
|
let(:user) do
|
|
FactoryBot.create(:user,
|
|
profile: {
|
|
display_name: "",
|
|
description: "A bunch of raccoons in a trenchcoat.",
|
|
},
|
|
screen_name: "raccoons",)
|
|
end
|
|
|
|
subject { user_twitter_card(user) }
|
|
it "should generate a matching OpenGraph structure for a user" do
|
|
expect(subject).to eq(<<~META.chomp)
|
|
<meta name="twitter:card" content="summary">
|
|
<meta name="twitter:site" content="@retrospring">
|
|
<meta name="twitter:title" content="Ask me anything!">
|
|
<meta name="twitter:description" content="Ask raccoons anything on Retrospring">
|
|
<meta name="twitter:image" content="http://test.host/images/large/no_avatar.png">
|
|
META
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#answer_opengraph" do
|
|
context "sample user and answer" do
|
|
let!(:user) do
|
|
FactoryBot.create(:user,
|
|
profile: {
|
|
display_name: "",
|
|
description: "A bunch of raccoons in a trenchcoat.",
|
|
},
|
|
screen_name: "raccoons",)
|
|
end
|
|
let(:answer) do
|
|
FactoryBot.create(:answer,
|
|
user_id: user.id,)
|
|
end
|
|
|
|
subject { answer_opengraph(answer) }
|
|
|
|
it "should generate a matching OpenGraph structure for a user" do
|
|
allow(APP_CONFIG).to receive(:[]).with("site_name").and_return("pineapplespring")
|
|
expect(subject).to eq(<<~META.chomp)
|
|
<meta property="og:title" content="raccoons answered: #{answer.question.content}">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:image" content="http://test.host/images/large/no_avatar.png">
|
|
<meta property="og:url" content="http://test.host/@raccoons/a/#{answer.id}">
|
|
<meta property="og:description" content="#{answer.content}">
|
|
<meta property="og:site_name" content="pineapplespring">
|
|
META
|
|
end
|
|
end
|
|
end
|
|
end
|