social_profile 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,6 +31,31 @@ describe SocialProfile::People::Facebook do
31
31
  @user.followers_count.should == 14
32
32
  end
33
33
 
34
+ it "should response to followers without limits (without fetch_all)" do
35
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&limit=5000").
36
+ to_return(:status => 200, :body => fixture("facebook/followers.json"))
37
+
38
+ @user.followers.size.should == 13
39
+ end
40
+
41
+ it "should response to followers without limits (with fetch_all)" do
42
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&limit=5000").
43
+ to_return(:status => 200, :body => fixture("facebook/followers.json"))
44
+
45
+ @user.followers(:fetch_all => true).size.should == 13
46
+ end
47
+
48
+ it "should response to followers list with limits" do
49
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&limit=5").
50
+ to_return(:status => 200, :body => fixture("facebook/followers_5_0.json"))
51
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&after=MTE5ODU0NDEzNQ==&limit=5").
52
+ to_return(:status => 200, :body => fixture("facebook/followers_5_10.json"))
53
+ stub_request(:get, "https://graph.facebook.com/me/subscribers?access_token=abc&after=MTAwMDA0NDI3NDY3NjIx&limit=5").
54
+ to_return(:status => 200, :body => fixture("facebook/followers_5_15.json"))
55
+
56
+ @user.followers(:limit => 5, :fetch_all => true).size.should == 13
57
+ end
58
+
34
59
  it "should response to first_post_exists?" do
35
60
  _sql = SocialProfile::People::Facebook::FIRST_POST_FQL.gsub('{date}', '1293832800')
36
61
 
@@ -12,6 +12,8 @@ describe SocialProfile::People::Twitter do
12
12
  to_return(:body => fixture("twitter/token.json"), :headers => {:content_type => 'application/json; charset=utf-8'})
13
13
  stub_request(:get, "https://api.twitter.com/1.1/account/verify_credentials.json").
14
14
  to_return(:body => fixture('twitter/auth.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
15
+ stub_request(:get, "https://api.twitter.com/1.1/statuses/user_timeline.json?count=200&exclude_replies=true&include_rts=false&screen_name=150587663&trim_user=true").
16
+ to_return(:status => 200, :body => fixture('twitter/last_posts.json'))
15
17
  end
16
18
 
17
19
  it "should be a twitter profile" do
@@ -19,7 +21,25 @@ describe SocialProfile::People::Twitter do
19
21
  end
20
22
 
21
23
  it "should response to friends_count" do
22
- @user.friends_count.should == 4051
24
+ @user.friends_count.should == 69
25
+ end
26
+
27
+ it "should response to last_posts" do
28
+ posts = @user.last_posts("150587663")
29
+
30
+ retweets_count = posts.sum(&:retweet_count)
31
+ retweets_count.should == 9
32
+ posts.size.should == 107
33
+
34
+ # average user reach
35
+ (@user.friends_count + (retweets_count * 100) / posts.size).should == 77
36
+ end
37
+
38
+ it "should response to get_all_tweets" do
39
+ posts = @user.last_posts("150587663")
40
+
41
+ posts.sum(&:retweet_count).should == 9
42
+ posts.size.should == 107
23
43
  end
24
44
  end
25
45
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe SocialProfile::People::Vkontakte do
@@ -7,9 +9,26 @@ describe SocialProfile::People::Vkontakte do
7
9
 
8
10
  context "vkontakte" do
9
11
  before(:each) do
10
- @user = SocialProfile::Person.get(:vkontakte, "123456789", "abc")
11
- stub_request(:get, "https://api.vk.com/method/users.get?access_token=abc&fields=counters&uids=123456789").
12
- to_return(:status => 200, :body => File.read(SocialProfile.root_path.join('spec/mock_json/vkontakte/friends_count.json')))
12
+ @user = SocialProfile::Person.get(:vkontakte, "2592709", "abc")
13
+
14
+ stub_request(:get, "https://api.vk.com/method/users.get?access_token=abc&fields=counters&uids=2592709").
15
+ to_return(:status => 200, :body => fixture('vkontakte/friends_count.json'))
16
+ stub_request(:get, "https://api.vk.com/method/wall.get?access_token=abc&count=100&filter=owner&offset=0&owner_id=2592709").
17
+ to_return(:status => 200, :body => fixture("vkontakte/last_posts.json"))
18
+ stub_request(:get, "https://api.vk.com/method/likes.getList?access_token=abc&count=1000&item_id=655&offset=0&owner_id=2592709&type=post").
19
+ to_return(:status => 200, :body => fixture("vkontakte/likes_post_655.json"))
20
+ stub_request(:get, "https://api.vk.com/method/likes.getList?access_token=abc&count=1000&item_id=290498375&offset=0&owner_id=2592709&type=photo").
21
+ to_return(:status => 200, :body => fixture("vkontakte/likes_photo_290498375.json"))
22
+ stub_request(:get, "https://api.vk.com/method/wall.getComments?access_token=abc&count=100&need_likes=1&offset=0&owner_id=2592709&post_id=655&preview_length=0").
23
+ to_return(:status => 200, :body => fixture("vkontakte/comments_post_655.json"))
24
+ stub_request(:get, "https://api.vk.com/method/photos.getAllComments?access_token=abc&count=100&need_likes=1&offset=0&owner_id=2592709&uid=2592709").
25
+ to_return(:status => 200, :body => fixture("vkontakte/comments_photos.json"))
26
+ stub_request(:get, "https://api.vk.com/method/friends.get?access_token=abc&count=5000&fields=domain&offset=0&user_id=2592709").
27
+ to_return(:status => 200, :body => fixture("vkontakte/friends.json"))
28
+ stub_request(:get, "https://api.vk.com/method/users.getFollowers?access_token=abc&count=1000&fields=screen_name&offset=0&user_id=2592709").
29
+ to_return(:status => 200, :body => fixture("vkontakte/followers.json"))
30
+ stub_request(:get, "https://api.vk.com/method/wall.getReposts?access_token=abc&count=1000&offset=0&owner_id=2592709&post_id=3675").
31
+ to_return(:status => 200, :body => fixture("vkontakte/shares_post_3675.json"))
13
32
  end
14
33
 
15
34
  it "should be a vkontakte profile" do
@@ -19,5 +38,78 @@ describe SocialProfile::People::Vkontakte do
19
38
  it "should response to friends_count" do
20
39
  @user.friends_count.should > 0
21
40
  end
41
+
42
+ it "should response to last_posts" do
43
+ @user.last_posts.size.should == 100
44
+ end
45
+
46
+ it "should response to last_post_by_days by 30 days" do
47
+ @user.last_post_by_days(30).size.should == 0
48
+ end
49
+
50
+ it "should response to last_post_by_days by 30 days with date_end options" do
51
+ @user.last_post_by_days(30, :date_end => DateTime.new(2014, 5, 17)).size.should == 1
52
+ end
53
+
54
+ it "should response to last_post_by_days by 2119 days" do
55
+ stub_request(:get, "https://api.vk.com/method/wall.get?access_token=abc&count=100&filter=owner&offset=100&owner_id=2592709").
56
+ to_return(:status => 200, :body => fixture("vkontakte/last_posts_2.json"))
57
+
58
+ posts = @user.last_post_by_days(2119, :date_end => DateTime.new(2014, 8, 19))
59
+
60
+ posts.size.should == 175
61
+ posts.last["text"].should == "хочеш узнать про меня побольше? введи в google ник super_p."
62
+ end
63
+
64
+ it "should response to object_likes" do
65
+ @user.object_likes("655")["items"].size.should == 7
66
+ @user.object_likes("290498375", :type => "photo")["items"].size.should == 17
67
+ end
68
+
69
+ it "should response to object_likes with fetch_all" do
70
+ @user.object_likes("655", :fetch_all => true).size.should == 7
71
+ @user.object_likes("290498375", :type => "photo", :fetch_all => true).size.should == 17
72
+ end
73
+
74
+ it "should response to post_comments" do
75
+ @user.post_comments("655")["items"].size.should == 3
76
+ end
77
+
78
+ it "should response to post_comments with fetch_all" do
79
+ @user.post_comments("655", :fetch_all => true).size.should == 3
80
+ end
81
+
82
+ it "should response to post_shares" do
83
+ @user.post_shares("3675")["items"].size.should == 21
84
+ end
85
+
86
+ it "should response to post_shares with fetch_all" do
87
+ @user.post_shares("3675", :fetch_all => true).size.should == 21
88
+ end
89
+
90
+ it "should response to photos_comments" do
91
+ @user.photos_comments.size.should == 100
92
+ end
93
+
94
+ it "should response to photos_comments with days" do
95
+ @user.photos_comments(:days => 30).size.should == 0
96
+ end
97
+
98
+ it "should fetch all friends" do
99
+ @user.friends.size.should == 208
100
+ end
101
+
102
+ it "should fetch all followers" do
103
+ @user.followers.size.should == 30
104
+ end
105
+
106
+ it "should fetch all followers with iteration by 20 items in step" do
107
+ stub_request(:get, "https://api.vk.com/method/users.getFollowers?access_token=abc&count=20&fields=screen_name&offset=0&user_id=2592709").
108
+ to_return(:status => 200, :body => fixture("vkontakte/followers_20.json"))
109
+ stub_request(:get, "https://api.vk.com/method/users.getFollowers?access_token=abc&count=20&fields=screen_name&offset=20&user_id=2592709").
110
+ to_return(:status => 200, :body => fixture("vkontakte/followers_20_2.json"))
111
+
112
+ @user.followers(:count => 20).size.should == 30
113
+ end
22
114
  end
23
115
  end
data/spec/spec_helper.rb CHANGED
@@ -13,7 +13,7 @@ RSpec.configure do |config|
13
13
  require 'rspec/expectations'
14
14
  config.include RSpec::Matchers
15
15
 
16
- WebMock.allow_net_connect!
16
+ # WebMock.allow_net_connect!
17
17
 
18
18
  # == Mock Framework
19
19
  config.mock_with :rspec
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_profile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Galeta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-08 00:00:00.000000000 Z
11
+ date: 2014-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,44 +42,44 @@ dependencies:
42
42
  name: fb_graph
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 2.7.16
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 2.7.16
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vkontakte
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.0.6
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.0.6
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: twitter
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 5.11.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 5.11.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: httpclient
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +129,7 @@ files:
129
129
  - lib/social_profile/providers/base.rb
130
130
  - lib/social_profile/providers/facebook.rb
131
131
  - lib/social_profile/providers/instagram.rb
132
+ - lib/social_profile/providers/odnoklassniki.rb
132
133
  - lib/social_profile/providers/twitter.rb
133
134
  - lib/social_profile/providers/vkontakte.rb
134
135
  - lib/social_profile/response.rb
@@ -137,6 +138,9 @@ files:
137
138
  - social_profile.gemspec
138
139
  - spec/mock_json/facebook/first_post.json
139
140
  - spec/mock_json/facebook/followers.json
141
+ - spec/mock_json/facebook/followers_5_0.json
142
+ - spec/mock_json/facebook/followers_5_10.json
143
+ - spec/mock_json/facebook/followers_5_15.json
140
144
  - spec/mock_json/facebook/friends.json
141
145
  - spec/mock_json/facebook/friends_count.json
142
146
  - spec/mock_json/facebook/last_5_posts.json
@@ -146,8 +150,21 @@ files:
146
150
  - spec/mock_json/facebook/last_posts_big.json
147
151
  - spec/mock_json/facebook/last_posts_big2.json
148
152
  - spec/mock_json/twitter/auth.json
153
+ - spec/mock_json/twitter/last_posts.json
149
154
  - spec/mock_json/twitter/token.json
155
+ - spec/mock_json/vkontakte/comments_photos.json
156
+ - spec/mock_json/vkontakte/comments_post_655.json
157
+ - spec/mock_json/vkontakte/followers.json
158
+ - spec/mock_json/vkontakte/followers_20.json
159
+ - spec/mock_json/vkontakte/followers_20_2.json
160
+ - spec/mock_json/vkontakte/friends.json
150
161
  - spec/mock_json/vkontakte/friends_count.json
162
+ - spec/mock_json/vkontakte/last_posts.json
163
+ - spec/mock_json/vkontakte/last_posts_2.json
164
+ - spec/mock_json/vkontakte/last_posts_3.json
165
+ - spec/mock_json/vkontakte/likes_photo_290498375.json
166
+ - spec/mock_json/vkontakte/likes_post_655.json
167
+ - spec/mock_json/vkontakte/shares_post_3675.json
151
168
  - spec/people/facebook_spec.rb
152
169
  - spec/people/twitter_spec.rb
153
170
  - spec/people/vkontakte_spec.rb
@@ -183,6 +200,9 @@ summary: Wrapper for Omniauth profile hash
183
200
  test_files:
184
201
  - spec/mock_json/facebook/first_post.json
185
202
  - spec/mock_json/facebook/followers.json
203
+ - spec/mock_json/facebook/followers_5_0.json
204
+ - spec/mock_json/facebook/followers_5_10.json
205
+ - spec/mock_json/facebook/followers_5_15.json
186
206
  - spec/mock_json/facebook/friends.json
187
207
  - spec/mock_json/facebook/friends_count.json
188
208
  - spec/mock_json/facebook/last_5_posts.json
@@ -192,8 +212,21 @@ test_files:
192
212
  - spec/mock_json/facebook/last_posts_big.json
193
213
  - spec/mock_json/facebook/last_posts_big2.json
194
214
  - spec/mock_json/twitter/auth.json
215
+ - spec/mock_json/twitter/last_posts.json
195
216
  - spec/mock_json/twitter/token.json
217
+ - spec/mock_json/vkontakte/comments_photos.json
218
+ - spec/mock_json/vkontakte/comments_post_655.json
219
+ - spec/mock_json/vkontakte/followers.json
220
+ - spec/mock_json/vkontakte/followers_20.json
221
+ - spec/mock_json/vkontakte/followers_20_2.json
222
+ - spec/mock_json/vkontakte/friends.json
196
223
  - spec/mock_json/vkontakte/friends_count.json
224
+ - spec/mock_json/vkontakte/last_posts.json
225
+ - spec/mock_json/vkontakte/last_posts_2.json
226
+ - spec/mock_json/vkontakte/last_posts_3.json
227
+ - spec/mock_json/vkontakte/likes_photo_290498375.json
228
+ - spec/mock_json/vkontakte/likes_post_655.json
229
+ - spec/mock_json/vkontakte/shares_post_3675.json
197
230
  - spec/people/facebook_spec.rb
198
231
  - spec/people/twitter_spec.rb
199
232
  - spec/people/vkontakte_spec.rb