1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe OpenGraph do
describe "#initialize" do
context "with invalid src" do
it "should set title and url the same as src" do
og = OpenGraph.new("invalid")
og.src.should == "invalid"
og.title.should == "invalid"
og.url.should == "invalid"
end
end
context "with no fallback" do
it "should get values from opengraph metadata" do
response = double(body: File.open("#{File.dirname(__FILE__)}/../view/opengraph.html", 'r') { |f| f.read })
RedirectFollower.stub(:new) { double(resolve: response) }
og = OpenGraph.new("http://test.host", false)
og.src.should == "http://test.host"
og.title.should == "OpenGraph Title"
og.type.should == "article"
og.url.should == "http://test.host"
og.description.should == "My OpenGraph sample site for Rspec"
og.images.should == ["http://test.host/images/rock1.jpg", "http://test.host/images/rock2.jpg"]
og.original_images.should == ["http://test.host/images/rock1.jpg", "/images/rock2.jpg"]
og.metadata.should == {
title: [{_value: "OpenGraph Title"}],
type: [{_value: "article"}],
url: [{_value: "http://test.host"}],
description: [{_value: "My OpenGraph sample site for Rspec"}],
image: [
{
_value: "http://test.host/images/rock1.jpg",
width: [{ _value: "300" }],
height: [{ _value: "300" }]
},
{
_value: "/images/rock2.jpg",
height: [{ _value: "1000" }]
}
],
locale: [
{
_value: "en_GB",
alternate: [
{ _value: "fr_FR" },
{ _value: "es_ES" }
]
}
]
}
end
end
context "with fallback" do
context "when website has opengraph metadata" do
it "should get values from opengraph metadata" do
response = double(body: File.open("#{File.dirname(__FILE__)}/../view/opengraph.html", 'r') { |f| f.read })
RedirectFollower.stub(:new) { double(resolve: response) }
og = OpenGraph.new("http://test.host")
og.src.should == "http://test.host"
og.title.should == "OpenGraph Title"
og.type.should == "article"
og.url.should == "http://test.host"
og.description.should == "My OpenGraph sample site for Rspec"
og.images.should == ["http://test.host/images/rock1.jpg", "http://test.host/images/rock2.jpg"]
end
end
context "when website has no opengraph metadata" do
it "should lookup for other data from website" do
response = double(body: File.open("#{File.dirname(__FILE__)}/../view/opengraph_no_metadata.html", 'r') { |f| f.read })
RedirectFollower.stub(:new) { double(resolve: response) }
og = OpenGraph.new("http://test.host/child_page")
og.src.should == "http://test.host/child_page"
og.title.should == "OpenGraph Title Fallback"
og.type.should be_nil
og.url.should == "http://test.host/child_page"
og.description.should == "Short Description Fallback"
og.images.should == ["http://test.host/images/wall1.jpg", "http://test.host/images/wall2.jpg"]
end
end
end
context "with body" do
it "should parse body instead of downloading it" do
content = File.read("#{File.dirname(__FILE__)}/../view/opengraph.html")
RedirectFollower.should_not_receive(:new)
og = OpenGraph.new(content)
og.src.should == content
og.title.should == "OpenGraph Title"
og.type.should == "article"
og.url.should == "http://test.host"
og.description.should == "My OpenGraph sample site for Rspec"
og.images.should == ["http://test.host/images/rock1.jpg", "/images/rock2.jpg"]
end
end
end
end
|