require "spec_helper"
describe Onebox::Engine::TwitterStatusOnebox do
before(:all) do
@link = "https://twitter.com/vyki_e/status/363116819147538433"
end
shared_examples_for "#to_html" do
it "includes tweet" do
expect(html).to include("I'm a sucker for pledges.")
end
# TODO: handle t.co links
# it "includes link" do
# expect(html).to include("http://www.peers.org/action/peers-pledgea")
# end
it "gets the correct timestamp" do
expect(onebox.send(:timestamp)).to eq("6:59 PM - 1 Aug 2013")
end
it "includes name" do
expect(html).to include("Vyki Englert")
end
it "includes username" do
expect(html).to include("vyki_e")
end
it "includes user avatar" do
expect(html).to include("732349210264133632/RTNgZLrm_400x400.jpg")
end
end
context "with html" do
include_context "engines"
it_behaves_like "an engine"
it_behaves_like "#to_html"
end
context "with twitter client" do
before(:each) do
@twitter_client = double("TwitterClient")
allow(@twitter_client).to receive("status")
.and_return mockTwitterAPIReponse
allow(@twitter_client).to receive("prettify_tweet") do
"I'm a sucker for pledges. @Peers Pledge #sharingeconomy peers.org/action/peers-p…"
end
allow(@twitter_client).to receive("twitter_credentials_missing?") do
false
end
Onebox.options = { twitter_client: @twitter_client }
end
after(:each) do
Onebox.options = { twitter_client: nil }
end
include_context "engines"
it_behaves_like "an engine"
it_behaves_like "#to_html"
end
def mockTwitterAPIReponse
{
created_at: "Fri Aug 02 01:59:30 +0000 2013",
id: 363116819147538400,
id_str: "363116819147538433",
text: "I'm a sucker for pledges. @Peers Pledge #sharingeconomy http://t.co/T4Sc47KAzh",
truncated: false,
entities: {
hashtags: [
{
text: "sharingeconomy",
indices: [
41,
56
]
}
],
symbols: [],
user_mentions: [
{
screen_name: "peers",
name: "Peers",
id: 1428357889,
id_str: "1428357889",
indices: [
27,
33
]
}
],
urls: [
{
url: "http://t.co/T4Sc47KAzh",
expanded_url: "http://www.peers.org/action/peers-pledgea/",
display_url: "peers.org/action/peers-p…",
indices: [
57,
79
]
}
]
},
source: "Twitter for Websites",
in_reply_to_status_id: nil,
in_reply_to_status_id_str: nil,
in_reply_to_user_id: nil,
in_reply_to_user_id_str: nil,
in_reply_to_screen_name: nil,
user: {
id: 1087064150,
id_str: "1087064150",
name: "Vyki Englert",
screen_name: "vyki_e",
location: "Los Angeles, CA",
description: "Rides bikes, writes code, likes maps. @CompilerLA / @CityGrows / Brigade Captain @HackforLA",
url: "http://t.co/YCAP3asRG1",
entities: {
url: {
urls: [
{
url: "http://t.co/YCAP3asRG1",
expanded_url: "http://www.compiler.la",
display_url: "compiler.la",
indices: [
0,
22
]
}
]
},
description: {
urls: []
}
},
protected: false,
followers_count: 1128,
friends_count: 2244,
listed_count: 83,
created_at: "Sun Jan 13 19:53:00 +0000 2013",
favourites_count: 2928,
utc_offset: -25200,
time_zone: "Pacific Time (US & Canada)",
geo_enabled: true,
verified: false,
statuses_count: 3295,
lang: "en",
contributors_enabled: false,
is_translator: false,
is_translation_enabled: false,
profile_background_color: "ACDED6",
profile_background_image_url: "http://abs.twimg.com/images/themes/theme18/bg.gif",
profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme18/bg.gif",
profile_background_tile: false,
profile_image_url: "http://pbs.twimg.com/profile_images/732349210264133632/RTNgZLrm_normal.jpg",
profile_image_url_https: "https://pbs.twimg.com/profile_images/732349210264133632/RTNgZLrm_normal.jpg",
profile_banner_url: "https://pbs.twimg.com/profile_banners/1087064150/1424315468",
profile_link_color: "4E99D1",
profile_sidebar_border_color: "EEEEEE",
profile_sidebar_fill_color: "F6F6F6",
profile_text_color: "333333",
profile_use_background_image: true,
has_extended_profile: false,
default_profile: false,
default_profile_image: false,
following: false,
follow_request_sent: false,
notifications: false
},
geo: nil,
coordinates: nil,
place: nil,
contributors: nil,
is_quote_status: false,
retweet_count: 0,
favorite_count: 0,
favorited: false,
retweeted: false,
possibly_sensitive: false,
possibly_sensitive_appealable: false,
lang: "en"
}
end
end