spec/people/facebook_spec.rb in social_profile-0.1.4 vs spec/people/facebook_spec.rb in social_profile-0.2.0
- old
+ new
@@ -1,18 +1,99 @@
-# encoding: utf-8
require 'spec_helper'
describe SocialProfile::People::Facebook do
it "should be a Module" do
SocialProfile::People.should be_a(Module)
end
context "facebook" do
+ before :all do
+ # FbGraph.debug!
+ end
+
before(:each) do
@user = SocialProfile::Person.get(:facebook, "100000730417342", "abc")
end
it "should be a facebook profile" do
@user.should be_a(SocialProfile::People::Facebook)
+ end
+
+ it "should response to friends_count" do
+ mock_fql SocialProfile::People::Facebook::FRIENDS_FQL, SocialProfile.root_path.join('spec/mock_json/facebook/friends_count.json'), :access_token => "abc" do
+ @user.friends_count.should > 0
+ end
+ end
+
+ it "should response to followers_count" do
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&limit=1").
+ to_return(:status => 200, :body => fixture("facebook/followers.json"))
+
+ @user.followers_count.should == 14
+ end
+
+ it "should response to first_post_exists?" do
+ _sql = SocialProfile::People::Facebook::FIRST_POST_FQL.gsub('{date}', '1293832800')
+
+ mock_fql _sql, SocialProfile.root_path.join('spec/mock_json/facebook/first_post.json'), :access_token => "abc" do
+ @user.first_post_exists?(2011).should > 0
+ end
+ end
+
+ it "should response to last_posts" do
+ fields = SocialProfile::People::Facebook::LAST_POSTS_FIELDS.join(",")
+
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields}&limit=600").
+ to_return(:status => 200, :body => fixture("facebook/last_posts.json"))
+
+ posts = @user.last_posts(600)
+
+ posts.should be_a(Array)
+ posts.size.should == 239
+ end
+
+ it "should response to last_posts by days (with 3 request to facebook api)" do
+ fields = SocialProfile::People::Facebook::LAST_POSTS_FIELDS.join(",")
+ fields2 = fields.gsub('.fields(created_time)', '')
+
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields}&limit=5").
+ to_return(:status => 200, :body => fixture("facebook/last_5_posts.json"))
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields2}&limit=5&until=1394475325").
+ to_return(:status => 200, :body => fixture("facebook/last_5_posts_page_2.json"))
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields2}&limit=5&until=1394439420").
+ to_return(:status => 200, :body => fixture("facebook/last_5_posts_page_3.json"))
+
+ posts = @user.last_post_by_days(10, :limit => 5, :date_end => DateTime.new(2014, 3, 15))
+
+ posts.should be_a(Array)
+ posts.size.should == 13
+ end
+
+ it "should get big data from last_posts" do
+ fields = ["comments.limit(1000).fields(created_time,from).summary(true)",
+ "likes.limit(1000).fields(id).summary(true)",
+ "shares",
+ "status_type"]
+
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields.join(',')}&limit=1000").
+ to_return(:status => 200, :body => fixture("facebook/last_posts_big.json"))
+ stub_request(:get, "https://graph.facebook.com/me/feed?access_token=abc&fields=#{fields.join(',')}&limit=1000&until=1394789304").
+ to_return(:status => 200, :body => fixture("facebook/last_posts_big2.json"))
+
+ posts = @user.last_post_by_days(30, :limit => 1000, :date_end => DateTime.new(2014, 4, 6), :fields => fields)
+
+ posts.should be_a(Array)
+ posts.size.should == 56
+ posts.select {|p| p.raw_attributes["status_type"] == "shared_story"}.size.should == 13
+ end
+
+ it "should get friends list" do
+ stub_request(:get, "https://graph.facebook.com/me/friends?access_token=abc&limit=100000").
+ to_return(:status => 200, :body => fixture("facebook/friends.json"))
+
+ friends = @user.friends(:limit => 100000)
+
+ friends.should be_a(Array)
+ friends.size.should == 4343
end
end
end