palidanx-fb_graph 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +308 -0
  5. data/Rakefile +49 -0
  6. data/VERSION +1 -0
  7. data/assets/fb_graph.ai +1726 -6
  8. data/assets/fb_graph.png +0 -0
  9. data/fb_graph.gemspec +327 -0
  10. data/lib/fb_graph.rb +75 -0
  11. data/lib/fb_graph/album.rb +133 -0
  12. data/lib/fb_graph/application.rb +57 -0
  13. data/lib/fb_graph/auth.rb +52 -0
  14. data/lib/fb_graph/auth/cookie.rb +43 -0
  15. data/lib/fb_graph/checkin.rb +44 -0
  16. data/lib/fb_graph/collection.rb +44 -0
  17. data/lib/fb_graph/comment.rb +20 -0
  18. data/lib/fb_graph/comparison.rb +9 -0
  19. data/lib/fb_graph/connection.rb +30 -0
  20. data/lib/fb_graph/connections.rb +3 -0
  21. data/lib/fb_graph/connections/accounts.rb +58 -0
  22. data/lib/fb_graph/connections/activities.rb +14 -0
  23. data/lib/fb_graph/connections/albums.rb +96 -0
  24. data/lib/fb_graph/connections/attending.rb +18 -0
  25. data/lib/fb_graph/connections/books.rb +14 -0
  26. data/lib/fb_graph/connections/checkins.rb +22 -0
  27. data/lib/fb_graph/connections/comments.rb +39 -0
  28. data/lib/fb_graph/connections/declined.rb +18 -0
  29. data/lib/fb_graph/connections/events.rb +21 -0
  30. data/lib/fb_graph/connections/feed.rb +90 -0
  31. data/lib/fb_graph/connections/friends.rb +14 -0
  32. data/lib/fb_graph/connections/groups.rb +14 -0
  33. data/lib/fb_graph/connections/home.rb +14 -0
  34. data/lib/fb_graph/connections/insights.rb +13 -0
  35. data/lib/fb_graph/connections/interests.rb +14 -0
  36. data/lib/fb_graph/connections/invited.rb +14 -0
  37. data/lib/fb_graph/connections/likes.rb +16 -0
  38. data/lib/fb_graph/connections/links.rb +21 -0
  39. data/lib/fb_graph/connections/maybe.rb +18 -0
  40. data/lib/fb_graph/connections/members.rb +14 -0
  41. data/lib/fb_graph/connections/movies.rb +14 -0
  42. data/lib/fb_graph/connections/music.rb +14 -0
  43. data/lib/fb_graph/connections/noreply.rb +14 -0
  44. data/lib/fb_graph/connections/notes.rb +21 -0
  45. data/lib/fb_graph/connections/photos.rb +21 -0
  46. data/lib/fb_graph/connections/picture.rb +14 -0
  47. data/lib/fb_graph/connections/posts.rb +14 -0
  48. data/lib/fb_graph/connections/statuses.rb +14 -0
  49. data/lib/fb_graph/connections/subscriptions.rb +53 -0
  50. data/lib/fb_graph/connections/tagged.rb +14 -0
  51. data/lib/fb_graph/connections/television.rb +14 -0
  52. data/lib/fb_graph/connections/videos.rb +14 -0
  53. data/lib/fb_graph/education.rb +25 -0
  54. data/lib/fb_graph/event.rb +47 -0
  55. data/lib/fb_graph/group.rb +27 -0
  56. data/lib/fb_graph/insight.rb +14 -0
  57. data/lib/fb_graph/link.rb +28 -0
  58. data/lib/fb_graph/node.rb +121 -0
  59. data/lib/fb_graph/note.rb +28 -0
  60. data/lib/fb_graph/page.rb +41 -0
  61. data/lib/fb_graph/photo.rb +41 -0
  62. data/lib/fb_graph/post.rb +50 -0
  63. data/lib/fb_graph/searchable.rb +25 -0
  64. data/lib/fb_graph/searchable/result.rb +31 -0
  65. data/lib/fb_graph/status.rb +23 -0
  66. data/lib/fb_graph/subscription.rb +14 -0
  67. data/lib/fb_graph/tag.rb +16 -0
  68. data/lib/fb_graph/user.rb +89 -0
  69. data/lib/fb_graph/venue.rb +17 -0
  70. data/lib/fb_graph/video.rb +28 -0
  71. data/lib/fb_graph/work.rb +35 -0
  72. data/spec/fake_json/albums/photos/matake_private.json +97 -0
  73. data/spec/fake_json/albums/photos/post_with_valid_access_token.json +1 -0
  74. data/spec/fake_json/applications/subscriptions/fb_graph_private.json +12 -0
  75. data/spec/fake_json/checkins/search_private.json +54 -0
  76. data/spec/fake_json/checkins/search_public.json +6 -0
  77. data/spec/fake_json/events/attending/post_with_valid_access_token.json +1 -0
  78. data/spec/fake_json/events/attending/smartday_private.json +44 -0
  79. data/spec/fake_json/events/declined/post_with_valid_access_token.json +1 -0
  80. data/spec/fake_json/events/declined/smartday_private.json +720 -0
  81. data/spec/fake_json/events/invited/smartday_private.json +7092 -0
  82. data/spec/fake_json/events/maybe/post_with_valid_access_token.json +1 -0
  83. data/spec/fake_json/events/maybe/smartday_private.json +956 -0
  84. data/spec/fake_json/events/noreply/smartday_private.json +896 -0
  85. data/spec/fake_json/groups/members/emacs_private.json +1996 -0
  86. data/spec/fake_json/pages/checkins/gowalla_private.json +113 -0
  87. data/spec/fake_json/pages/checkins/gowalla_public.json +6 -0
  88. data/spec/fake_json/pages/notes/post_with_valid_access_token.json +1 -0
  89. data/spec/fake_json/pages/platform_private.json +13 -0
  90. data/spec/fake_json/pages/platform_public.json +13 -0
  91. data/spec/fake_json/pages/statuses/platform_private.json +258 -0
  92. data/spec/fake_json/pages/statuses/platform_public.json +6 -0
  93. data/spec/fake_json/posts/comments/post_with_invalid_access_token.json +1 -0
  94. data/spec/fake_json/posts/comments/post_with_valid_access_token.json +1 -0
  95. data/spec/fake_json/posts/comments/post_without_access_token.json +1 -0
  96. data/spec/fake_json/posts/likes/post_with_invalid_access_token.json +1 -0
  97. data/spec/fake_json/posts/likes/post_with_valid_access_token.json +1 -0
  98. data/spec/fake_json/posts/likes/post_without_access_token.json +1 -0
  99. data/spec/fake_json/posts/platform_private.json +97 -0
  100. data/spec/fake_json/posts/platform_public.json +52 -0
  101. data/spec/fake_json/users/accounts/matake_private.json +14 -0
  102. data/spec/fake_json/users/accounts/matake_private_with_manage_pages_permission.json +16 -0
  103. data/spec/fake_json/users/accounts/matake_public.json +6 -0
  104. data/spec/fake_json/users/activities/arjun_private.json +24 -0
  105. data/spec/fake_json/users/activities/arjun_public.json +6 -0
  106. data/spec/fake_json/users/albums/matake_private.json +36 -0
  107. data/spec/fake_json/users/albums/matake_public.json +6 -0
  108. data/spec/fake_json/users/albums/post_with_valid_access_token.json +1 -0
  109. data/spec/fake_json/users/arjun_private.json +109 -0
  110. data/spec/fake_json/users/arjun_public.json +12 -0
  111. data/spec/fake_json/users/books/matake_private.json +9 -0
  112. data/spec/fake_json/users/books/matake_public.json +6 -0
  113. data/spec/fake_json/users/checkins/mattt_private.json +389 -0
  114. data/spec/fake_json/users/checkins/mattt_public.json +6 -0
  115. data/spec/fake_json/users/events/matake_private.json +71 -0
  116. data/spec/fake_json/users/events/matake_public.json +6 -0
  117. data/spec/fake_json/users/events/post_with_valid_access_token.json +1 -0
  118. data/spec/fake_json/users/feed/arjun_private.json +520 -0
  119. data/spec/fake_json/users/feed/arjun_public.json +520 -0
  120. data/spec/fake_json/users/feed/post_with_invalid_access_token.json +1 -0
  121. data/spec/fake_json/users/feed/post_with_valid_access_token.json +1 -0
  122. data/spec/fake_json/users/feed/post_without_access_token.json +1 -0
  123. data/spec/fake_json/users/friends/arjun_private.json +6 -0
  124. data/spec/fake_json/users/friends/arjun_public.json +6 -0
  125. data/spec/fake_json/users/friends/me_private.json +524 -0
  126. data/spec/fake_json/users/friends/me_public.json +6 -0
  127. data/spec/fake_json/users/groups/matake_private.json +48 -0
  128. data/spec/fake_json/users/groups/matake_public.json +6 -0
  129. data/spec/fake_json/users/home/arjun_private.json +6 -0
  130. data/spec/fake_json/users/home/arjun_public.json +6 -0
  131. data/spec/fake_json/users/home/me_private.json +460 -0
  132. data/spec/fake_json/users/home/me_private_next.json +382 -0
  133. data/spec/fake_json/users/home/me_private_previous.json +36 -0
  134. data/spec/fake_json/users/home/me_public.json +6 -0
  135. data/spec/fake_json/users/interests/matake_private.json +14 -0
  136. data/spec/fake_json/users/likes/arjun_private.json +1394 -0
  137. data/spec/fake_json/users/likes/arjun_public.json +6 -0
  138. data/spec/fake_json/users/links/matake_private.json +221 -0
  139. data/spec/fake_json/users/links/post_with_valid_access_token.json +1 -0
  140. data/spec/fake_json/users/me_private.json +128 -0
  141. data/spec/fake_json/users/me_public.json +6 -0
  142. data/spec/fake_json/users/movies/matake_private.json +9 -0
  143. data/spec/fake_json/users/music/matake_private.json +34 -0
  144. data/spec/fake_json/users/notes/matake_private.json +308 -0
  145. data/spec/fake_json/users/posts/arjun_private.json +386 -0
  146. data/spec/fake_json/users/posts/arjun_public.json +386 -0
  147. data/spec/fake_json/users/statuses/arjun_private.json +233 -0
  148. data/spec/fake_json/users/statuses/arjun_public.json +6 -0
  149. data/spec/fake_json/users/tagged/arjun_private.json +308 -0
  150. data/spec/fake_json/users/tagged/arjun_public.json +308 -0
  151. data/spec/fake_json/users/television/matake_private.json +9 -0
  152. data/spec/fake_json/users/videos/kirk_private.json +41 -0
  153. data/spec/fb_graph/album_spec.rb +61 -0
  154. data/spec/fb_graph/application_spec.rb +23 -0
  155. data/spec/fb_graph/auth_spec.rb +35 -0
  156. data/spec/fb_graph/checkin_spec.rb +29 -0
  157. data/spec/fb_graph/collection_spec.rb +45 -0
  158. data/spec/fb_graph/comment_spec.rb +31 -0
  159. data/spec/fb_graph/connection_spec.rb +38 -0
  160. data/spec/fb_graph/connections/accounts_spec.rb +47 -0
  161. data/spec/fb_graph/connections/activities_spec.rb +34 -0
  162. data/spec/fb_graph/connections/albums_spec.rb +60 -0
  163. data/spec/fb_graph/connections/attending_spec.rb +24 -0
  164. data/spec/fb_graph/connections/books_spec.rb +33 -0
  165. data/spec/fb_graph/connections/checkins_spec.rb +109 -0
  166. data/spec/fb_graph/connections/comments_spec.rb +85 -0
  167. data/spec/fb_graph/connections/declined_spec.rb +24 -0
  168. data/spec/fb_graph/connections/events_spec.rb +53 -0
  169. data/spec/fb_graph/connections/feed_spec.rb +102 -0
  170. data/spec/fb_graph/connections/friends_spec.rb +50 -0
  171. data/spec/fb_graph/connections/groups_spec.rb +32 -0
  172. data/spec/fb_graph/connections/home_spec.rb +58 -0
  173. data/spec/fb_graph/connections/interests_spec.rb +14 -0
  174. data/spec/fb_graph/connections/invited_spec.rb +14 -0
  175. data/spec/fb_graph/connections/likes_spec.rb +33 -0
  176. data/spec/fb_graph/connections/links_spec.rb +33 -0
  177. data/spec/fb_graph/connections/maybe_spec.rb +24 -0
  178. data/spec/fb_graph/connections/members_spec.rb +14 -0
  179. data/spec/fb_graph/connections/movies_spec.rb +14 -0
  180. data/spec/fb_graph/connections/music_spec.rb +14 -0
  181. data/spec/fb_graph/connections/noreply_spec.rb +14 -0
  182. data/spec/fb_graph/connections/notes_spec.rb +32 -0
  183. data/spec/fb_graph/connections/photos_spec.rb +30 -0
  184. data/spec/fb_graph/connections/picture_spec.rb +29 -0
  185. data/spec/fb_graph/connections/posts_spec.rb +35 -0
  186. data/spec/fb_graph/connections/statuses_spec.rb +74 -0
  187. data/spec/fb_graph/connections/subscriptions_spec.rb +18 -0
  188. data/spec/fb_graph/connections/tagged_spec.rb +42 -0
  189. data/spec/fb_graph/connections/television_spec.rb +14 -0
  190. data/spec/fb_graph/connections/videos_spec.rb +14 -0
  191. data/spec/fb_graph/education_spec.rb +61 -0
  192. data/spec/fb_graph/event_spec.rb +50 -0
  193. data/spec/fb_graph/group_spec.rb +46 -0
  194. data/spec/fb_graph/insight_spec.rb +17 -0
  195. data/spec/fb_graph/link_spec.rb +43 -0
  196. data/spec/fb_graph/node_spec.rb +13 -0
  197. data/spec/fb_graph/note_spec.rb +37 -0
  198. data/spec/fb_graph/page_spec.rb +56 -0
  199. data/spec/fb_graph/photo_spec.rb +60 -0
  200. data/spec/fb_graph/post_spec.rb +71 -0
  201. data/spec/fb_graph/status_spec.rb +31 -0
  202. data/spec/fb_graph/subscription_spec.rb +5 -0
  203. data/spec/fb_graph/tag_spec.rb +20 -0
  204. data/spec/fb_graph/user_spec.rb +139 -0
  205. data/spec/fb_graph/venue_spec.rb +23 -0
  206. data/spec/fb_graph/video_spec.rb +37 -0
  207. data/spec/fb_graph/work_spec.rb +67 -0
  208. data/spec/helpers/fake_json_helper.rb +11 -0
  209. data/spec/spec.opts +3 -0
  210. data/spec/spec_helper.rb +18 -0
  211. metadata +414 -0
@@ -0,0 +1,85 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::Post' do
4
+
5
+ describe FbGraph::Connections::Comments, '#comments' do
6
+ # TODO
7
+ end
8
+
9
+ describe FbGraph::Connections::Comments, '#comment!' do
10
+ context 'when no access_token given' do
11
+ before do
12
+ fake_json(:post, '12345/comments', 'posts/comments/post_without_access_token', :status => [500, 'Internal Server Error'])
13
+ end
14
+
15
+ it 'should raise FbGraph::Exception' do
16
+ lambda do
17
+ FbGraph::Post.new('12345').comment!(:message => 'hello')
18
+ end.should raise_exception(FbGraph::Exception)
19
+ end
20
+ end
21
+
22
+ context 'when invalid access_token is given' do
23
+ before do
24
+ fake_json(:post, '12345/comments', 'posts/comments/post_with_invalid_access_token', :status => [500, 'Internal Server Error'])
25
+ end
26
+
27
+ it 'should raise FbGraph::Exception' do
28
+ lambda do
29
+ FbGraph::Post.new('12345', :access_token => 'invalid').comment!(:message => 'hello')
30
+ end.should raise_exception(FbGraph::Exception)
31
+ end
32
+ end
33
+
34
+ context 'when valid access_token is given' do
35
+ before do
36
+ fake_json(:post, '12345/comments', 'posts/comments/post_with_valid_access_token')
37
+ end
38
+
39
+ it 'should return generated comment' do
40
+ comment = FbGraph::Post.new('12345', :access_token => 'valid').comment!(:message => 'hello')
41
+ comment.identifier.should == '117513961602338_119401698085884_535271'
42
+ comment.access_token.should == 'valid'
43
+ comment.message.should == 'hello'
44
+ comment.access_token.should == 'valid'
45
+ end
46
+ end
47
+ end
48
+
49
+ describe FbGraph::Connections::Comments, '#like!' do
50
+ context 'when no access_token given' do
51
+ before do
52
+ fake_json(:post, '12345/likes', 'posts/likes/post_without_access_token', :status => [500, 'Internal Server Error'])
53
+ end
54
+
55
+ it 'should raise FbGraph::Exception' do
56
+ lambda do
57
+ FbGraph::Post.new('12345').like!
58
+ end.should raise_exception(FbGraph::Exception)
59
+ end
60
+ end
61
+
62
+ context 'when invalid access_token is given' do
63
+ before do
64
+ fake_json(:post, '12345/likes', 'posts/likes/post_with_invalid_access_token', :status => [500, 'Internal Server Error'])
65
+ end
66
+
67
+ it 'should raise FbGraph::Exception' do
68
+ lambda do
69
+ FbGraph::Post.new('12345', :access_token => 'invalid').like!
70
+ end.should raise_exception(FbGraph::Exception)
71
+ end
72
+ end
73
+
74
+ context 'when valid access_token is given' do
75
+ before do
76
+ fake_json(:post, '12345/likes', 'posts/likes/post_with_valid_access_token')
77
+ end
78
+
79
+ it 'should return true' do
80
+ FbGraph::Post.new('12345', :access_token => 'valid').like!.should be_true
81
+ end
82
+ end
83
+ end
84
+
85
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Declined, '#declined' do
4
+ before(:all) do
5
+ fake_json(:get, 'smartday/declined?access_token=access_token', 'events/declined/smartday_private')
6
+ end
7
+
8
+ it 'should return declined users as FbGraph::User' do
9
+ users = FbGraph::Event.new('smartday', :access_token => 'access_token').declined
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
15
+
16
+ describe FbGraph::Connections::Declined, '#declined!' do
17
+ before do
18
+ fake_json(:post, '12345/declined', 'events/declined/post_with_valid_access_token')
19
+ end
20
+
21
+ it 'should return true' do
22
+ FbGraph::Event.new('12345', :access_token => 'valid').declined!.should be_true
23
+ end
24
+ end
@@ -0,0 +1,53 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Events, '#events' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/events', 'users/events/matake_public')
7
+ fake_json(:get, 'matake/events?access_token=access_token', 'users/events/matake_private')
8
+ end
9
+
10
+ context 'when no access_token given' do
11
+ it 'should raise FbGraph::Unauthorized' do
12
+ lambda do
13
+ FbGraph::User.new('matake').events
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return events as FbGraph::Event' do
20
+ events = FbGraph::User.new('matake', :access_token => 'access_token').events
21
+ events.first.should == FbGraph::Event.new(
22
+ '116600818359630',
23
+ :access_token => 'access_token',
24
+ :name => 'The Loyal We @ Rainy Day Bookstore and Cafe',
25
+ :start_time => '2010-04-29T01:30:00+0000',
26
+ :end_time => '2010-04-29T04:30:00+0000',
27
+ :location => 'Nishi Azabu'
28
+ )
29
+ events.each do |event|
30
+ event.should be_instance_of(FbGraph::Event)
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ describe FbGraph::Connections::Events, '#events!' do
37
+ before do
38
+ fake_json(:post, 'matake/events', 'users/events/post_with_valid_access_token')
39
+ end
40
+
41
+ it 'should return generated note' do
42
+ event = FbGraph::User.new('matake', :access_token => 'valid').event!(
43
+ :name => 'FbGraph test event',
44
+ :start_time => Time.utc(2010, 5, 11, 10, 0, 0).to_i,
45
+ :end_time => Time.utc(2010, 5, 11, 12, 0, 0).to_i
46
+ )
47
+ event.name.should == 'FbGraph test event'
48
+ event.access_token.should == 'valid'
49
+ event.start_time.should == Time.utc(2010, 5, 11, 10, 0, 0)
50
+ event.end_time.should == Time.utc(2010, 5, 11, 12, 0, 0)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,102 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+
5
+ describe FbGraph::Connections::Feed, '#feed' do
6
+ before(:all) do
7
+ fake_json(:get, 'arjun/feed', 'users/feed/arjun_public')
8
+ fake_json(:get, 'arjun/feed?access_token=access_token', 'users/feed/arjun_private')
9
+ end
10
+
11
+ context 'when no access_token given' do
12
+ it 'should return public posts on the user\'s wall as FbGraph::Post' do
13
+ posts = FbGraph::User.new('arjun').feed
14
+ posts.first.should == FbGraph::Post.new(
15
+ '7901103_121392141207495',
16
+ :from => {
17
+ :id => '7901103',
18
+ :name => 'Arjun Banker'
19
+ },
20
+ :picture => 'http://external.ak.fbcdn.net/safe_image.php?d=d2cc5beedaa401ba54eccc9014647285&w=130&h=130&url=http%3A%2F%2Fimages.ted.com%2Fimages%2Fted%2F269_389x292.jpg',
21
+ :link => 'http://www.ted.com/talks/wade_davis_on_endangered_cultures.html',
22
+ :name => 'Wade Davis on endangered cultures | Video on TED.com',
23
+ :caption => 'www.ted.com',
24
+ :description => 'TED Talks With stunning photos and stories, National Geographic Explorer Wade Davis celebrates the extraordinary diversity of the world\'s indigenous cultures, which are disappearing from the planet at an alarming rate.',
25
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/z9XZ8/hash/976ulj6z.gif',
26
+ :created_time => '2010-04-25T04:05:32+0000',
27
+ :updated_time => '2010-04-25T04:05:32+0000',
28
+ :likes => 1
29
+ )
30
+ posts.each do |post|
31
+ post.should be_instance_of(FbGraph::Post)
32
+ end
33
+ end
34
+ end
35
+
36
+ context 'when access_token is given' do
37
+ it 'should return posts on the user\'s wall as FbGraph::Post' do
38
+ posts = FbGraph::User.new('arjun').feed(:access_token => 'access_token')
39
+ posts.first.should == FbGraph::Post.new(
40
+ '7901103_121392141207495',
41
+ :access_token => 'access_token',
42
+ :from => {
43
+ :id => '7901103',
44
+ :name => 'Arjun Banker'
45
+ },
46
+ :picture => 'http://external.ak.fbcdn.net/safe_image.php?d=d2cc5beedaa401ba54eccc9014647285&w=130&h=130&url=http%3A%2F%2Fimages.ted.com%2Fimages%2Fted%2F269_389x292.jpg',
47
+ :link => 'http://www.ted.com/talks/wade_davis_on_endangered_cultures.html',
48
+ :name => 'Wade Davis on endangered cultures | Video on TED.com',
49
+ :caption => 'www.ted.com',
50
+ :description => 'TED Talks With stunning photos and stories, National Geographic Explorer Wade Davis celebrates the extraordinary diversity of the world\'s indigenous cultures, which are disappearing from the planet at an alarming rate.',
51
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/z9XZ8/hash/976ulj6z.gif',
52
+ :created_time => '2010-04-25T04:05:32+0000',
53
+ :updated_time => '2010-04-25T04:05:32+0000',
54
+ :likes => 1
55
+ )
56
+ posts.each do |post|
57
+ post.should be_instance_of(FbGraph::Post)
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ describe FbGraph::Connections::Feed, '#feed!' do
64
+ context 'when no access_token given' do
65
+ before do
66
+ fake_json(:post, 'matake/feed', 'users/feed/post_without_access_token', :status => [500, 'Internal Server Error'])
67
+ end
68
+
69
+ it 'should raise FbGraph::Exception' do
70
+ lambda do
71
+ FbGraph::User.new('matake').feed!(:message => 'hello')
72
+ end.should raise_exception(FbGraph::Exception)
73
+ end
74
+ end
75
+
76
+ context 'when invalid access_token is given' do
77
+ before do
78
+ fake_json(:post, 'matake/feed', 'users/feed/post_with_invalid_access_token', :status => [500, 'Internal Server Error'])
79
+ end
80
+
81
+ it 'should raise FbGraph::Exception' do
82
+ lambda do
83
+ FbGraph::User.new('matake', :access_token => 'invalid').feed!(:message => 'hello')
84
+ end.should raise_exception(FbGraph::Exception)
85
+ end
86
+ end
87
+
88
+ context 'when valid access_token is given' do
89
+ before do
90
+ fake_json(:post, 'matake/feed', 'users/feed/post_with_valid_access_token')
91
+ end
92
+
93
+ it 'should return generated post' do
94
+ post = FbGraph::User.new('matake', :access_token => 'valid').feed!(:message => 'hello')
95
+ post.identifier.should == '579612276_401071652276'
96
+ post.message.should == 'hello'
97
+ post.access_token.should == 'valid'
98
+ end
99
+ end
100
+ end
101
+
102
+ end
@@ -0,0 +1,50 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Friends, '#friends' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'me/friends', 'users/friends/me_public')
7
+ fake_json(:get, 'me/friends?access_token=access_token', 'users/friends/me_private')
8
+ fake_json(:get, 'arjun/friends', 'users/friends/arjun_public')
9
+ fake_json(:get, 'arjun/friends?access_token=access_token', 'users/friends/arjun_private')
10
+ end
11
+
12
+ context 'when no access_token given' do
13
+ it 'should raise FbGraph::Exception' do
14
+ lambda do
15
+ FbGraph::User.new('arjun').friends
16
+ end.should raise_exception(FbGraph::Exception)
17
+ end
18
+ end
19
+
20
+ context 'when identifier is not me' do
21
+ it 'should raise FbGraph::Exception' do
22
+ lambda do
23
+ FbGraph::User.new('arjun', :access_token => 'access_token').friends
24
+ end.should raise_exception(FbGraph::Exception)
25
+ end
26
+ end
27
+
28
+ context 'when identifier is me and no access_token is given' do
29
+ it 'should raise FbGraph::Unauthorized' do
30
+ lambda do
31
+ FbGraph::User.new('me').friends
32
+ end.should raise_exception(FbGraph::Unauthorized)
33
+ end
34
+ end
35
+
36
+ context 'when identifier is me and access_token is given' do
37
+ it 'should return friends as FbGraph::User' do
38
+ users = FbGraph::User.new('me', :access_token => 'access_token').friends
39
+ users.first.should == FbGraph::User.new(
40
+ '6401',
41
+ :access_token => 'access_token',
42
+ :name => 'Kirk McMurray'
43
+ )
44
+ users.each do |user|
45
+ user.should be_instance_of(FbGraph::User)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Groups, '#groups' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/groups', 'users/groups/matake_public')
7
+ fake_json(:get, 'matake/groups?access_token=access_token', 'users/groups/matake_private')
8
+ end
9
+
10
+ context 'when no access_token given' do
11
+ it 'should raise FbGraph::Unauthorized' do
12
+ lambda do
13
+ FbGraph::User.new('matake').groups
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return groups as FbGraph::Group' do
20
+ groups = FbGraph::User.new('matake', :access_token => 'access_token').groups
21
+ groups.first.should == FbGraph::Group.new(
22
+ '115286585902',
23
+ :access_token => 'access_token',
24
+ :name => 'iPhone 3G S'
25
+ )
26
+ groups.each do |group|
27
+ group.should be_instance_of(FbGraph::Group)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,58 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Home, '#home' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'me/home', 'users/home/me_public')
7
+ fake_json(:get, 'me/home?access_token=access_token', 'users/home/me_private')
8
+ fake_json(:get, 'arjun/home', 'users/home/arjun_public')
9
+ fake_json(:get, 'arjun/home?access_token=access_token', 'users/home/arjun_private')
10
+ end
11
+
12
+ context 'when no access_token given' do
13
+ it 'should raise FbGraph::Exception' do
14
+ lambda do
15
+ FbGraph::User.new('arjun').home
16
+ end.should raise_exception(FbGraph::Exception)
17
+ end
18
+ end
19
+
20
+ context 'when identifier is not me' do
21
+ it 'should raise FbGraph::Exception' do
22
+ lambda do
23
+ FbGraph::User.new('arjun', :access_token => 'access_token').home
24
+ end.should raise_exception(FbGraph::Exception)
25
+ end
26
+ end
27
+
28
+ context 'when identifier is me and no access_token is given' do
29
+ it 'should raise FbGraph::Unauthorized' do
30
+ lambda do
31
+ FbGraph::User.new('me').home
32
+ end.should raise_exception(FbGraph::Unauthorized)
33
+ end
34
+ end
35
+
36
+ context 'when identifier is me and access_token is given' do
37
+ it 'should return public posts in the user\'s news feed as FbGraph::Post' do
38
+ posts = FbGraph::User.new('me', :access_token => 'access_token').home
39
+ posts.first.should == FbGraph::Post.new(
40
+ '634033380_112599768777073',
41
+ :access_token => 'access_token',
42
+ :from => {
43
+ :id => '634033380',
44
+ :name => 'nishikokura hironobu'
45
+ },
46
+ :message => "こちらこそありがとうございました!僕はctrl+無変換ですwRT @_eskm: @pandeiro245 こないだの日曜はありがとうございました!面白い内容でした。ちなみにfnrirってCapsLockで起動ですが、英数変換と同じボタンでどうしてます?起動を違うボタンに変更",
47
+ :icon => 'http://photos-h.ak.fbcdn.net/photos-ak-sf2p/v43/23/2231777543/app_2_2231777543_2528.gif',
48
+ :attribution => 'Twitter',
49
+ :created_time => '2010-04-27T13:06:14+0000',
50
+ :updated_time => '2010-04-27T13:06:14+0000'
51
+ )
52
+ posts.each do |post|
53
+ post.should be_instance_of(FbGraph::Post)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Interests, '#interests' do
4
+ before(:all) do
5
+ fake_json(:get, 'matake/interests?access_token=access_token', 'users/interests/matake_private')
6
+ end
7
+
8
+ it 'should return interests pages as FbGraph::Page' do
9
+ pages = FbGraph::User.new('matake', :access_token => 'access_token').interests
10
+ pages.each do |page|
11
+ page.should be_instance_of(FbGraph::Page)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Invited, '#invited' do
4
+ before(:all) do
5
+ fake_json(:get, 'smartday/invited?access_token=access_token', 'events/invited/smartday_private')
6
+ end
7
+
8
+ it 'should return invited users as FbGraph::User' do
9
+ users = FbGraph::Event.new('smartday', :access_token => 'access_token').invited
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Likes, '#likes' do
5
+ before(:all) do
6
+ fake_json(:get, 'arjun/likes', 'users/likes/arjun_public')
7
+ fake_json(:get, 'arjun/likes?access_token=access_token', 'users/likes/arjun_private')
8
+ end
9
+
10
+ context 'when no access_token given' do
11
+ it 'should raise FbGraph::Unauthorized' do
12
+ lambda do
13
+ FbGraph::User.new('arjun').likes
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return liked pages as FbGraph::Page' do
20
+ likes = FbGraph::User.new('arjun', :access_token => 'access_token').likes
21
+ likes.first.should == FbGraph::Page.new(
22
+ '378209722137',
23
+ :access_token => 'access_token',
24
+ :name => 'Doing Things at the Last Minute',
25
+ :category => '活動'
26
+ )
27
+ likes.each do |like|
28
+ like.should be_instance_of(FbGraph::Page)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end