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,33 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Links, '#links' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/links?access_token=access_token', 'users/links/matake_private')
7
+ end
8
+
9
+ it 'should return notes as FbGraph::Link' do
10
+ links = FbGraph::User.new('matake', :access_token => 'access_token').links
11
+ links.each do |link|
12
+ link.should be_instance_of(FbGraph::Link)
13
+ end
14
+ end
15
+ end
16
+
17
+ describe FbGraph::Connections::Links, '#link!' do
18
+ before do
19
+ fake_json(:post, 'matake/links', 'users/links/post_with_valid_access_token')
20
+ end
21
+
22
+ it 'should return generated link' do
23
+ link = FbGraph::User.new('matake', :access_token => 'valid').link!(
24
+ :link => 'http://github.com/nov/fb_graph',
25
+ :message => 'A Ruby wrapper for Facebook Graph API.'
26
+ )
27
+ link.identifier.should == 120765121284251
28
+ link.link.should == 'http://github.com/nov/fb_graph'
29
+ link.message.should == 'A Ruby wrapper for Facebook Graph API.'
30
+ link.access_token.should == 'valid'
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Maybe, '#maybe' do
4
+ before(:all) do
5
+ fake_json(:get, 'smartday/maybe?access_token=access_token', 'events/maybe/smartday_private')
6
+ end
7
+
8
+ it 'should return maybe users as FbGraph::User' do
9
+ users = FbGraph::Event.new('smartday', :access_token => 'access_token').maybe
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
15
+
16
+ describe FbGraph::Connections::Maybe, '#maybe!' do
17
+ before do
18
+ fake_json(:post, '12345/maybe', 'events/maybe/post_with_valid_access_token')
19
+ end
20
+
21
+ it 'should return true' do
22
+ FbGraph::Event.new('12345', :access_token => 'valid').maybe!.should be_true
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Friends, '#friends' do
4
+ before(:all) do
5
+ fake_json(:get, 'emacs/members?access_token=access_token', 'groups/members/emacs_private')
6
+ end
7
+
8
+ it 'should return members as FbGraph::User' do
9
+ users = FbGraph::Group.new('emacs', :access_token => 'access_token').members
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Movies, '#movies' do
4
+ before(:all) do
5
+ fake_json(:get, 'matake/movies?access_token=access_token', 'users/movies/matake_private')
6
+ end
7
+
8
+ it 'should return movies pages as FbGraph::Page' do
9
+ pages = FbGraph::User.new('matake', :access_token => 'access_token').movies
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::Music, '#music' do
4
+ before(:all) do
5
+ fake_json(:get, 'matake/music?access_token=access_token', 'users/music/matake_private')
6
+ end
7
+
8
+ it 'should return music pages as FbGraph::Page' do
9
+ pages = FbGraph::User.new('matake', :access_token => 'access_token').music
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::Noreply, '#noreply' do
4
+ before(:all) do
5
+ fake_json(:get, 'smartday/noreply?access_token=access_token', 'events/noreply/smartday_private')
6
+ end
7
+
8
+ it 'should return noreply users as FbGraph::User' do
9
+ users = FbGraph::Event.new('smartday', :access_token => 'access_token').noreply
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Notes, '#notes' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/notes?access_token=access_token', 'users/notes/matake_private')
7
+ end
8
+
9
+ it 'should return notes as FbGraph::Note' do
10
+ notes = FbGraph::User.new('matake', :access_token => 'access_token').notes
11
+ notes.each do |note|
12
+ note.should be_instance_of(FbGraph::Note)
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ context 'when included by FbGraph::Page' do
19
+ describe FbGraph::Connections::Notes, '#note!' do
20
+ before do
21
+ fake_json(:post, '12345/notes', 'pages/notes/post_with_valid_access_token')
22
+ end
23
+
24
+ it 'should return generated note' do
25
+ note = FbGraph::Page.new('12345', :access_token => 'valid').note!(:subject => 'test', :message => 'hello')
26
+ note.identifier.should == 396664845100
27
+ note.subject.should == 'test'
28
+ note.message.should == 'hello'
29
+ note.access_token.should == 'valid'
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Photos, '#photos' do
4
+ before(:all) do
5
+ fake_json(:get, '12345/photos?access_token=access_token', 'albums/photos/matake_private')
6
+ end
7
+
8
+ it 'should return photos as FbGraph::Photo' do
9
+ photos = FbGraph::Album.new('12345', :access_token => 'access_token').photos
10
+ photos.each do |photo|
11
+ photo.should be_instance_of(FbGraph::Photo)
12
+ end
13
+ end
14
+ end
15
+
16
+ describe FbGraph::Connections::Photos, '#photo!' do
17
+ before do
18
+ fake_json(:post, '12345/photos', 'albums/photos/post_with_valid_access_token')
19
+ end
20
+
21
+ it 'should return generated photo' do
22
+ photo = FbGraph::Album.new('12345', :access_token => 'valid').photo!(
23
+ :image => Tempfile.new('image_file'),
24
+ :message => 'Hello, where is photo?'
25
+ )
26
+ photo.identifier.should == 401111132276
27
+ photo.name.should == 'Hello, where is photo?'
28
+ photo.access_token.should == 'valid'
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Picture, '#picture' do
4
+
5
+ context 'when included by FbGraph::User' do
6
+ it 'should return image url' do
7
+ FbGraph::User.new('matake').picture.should == File.join(FbGraph::ROOT_URL, 'matake/picture')
8
+ end
9
+
10
+ it 'should support size option' do
11
+ [:square, :large].each do |size|
12
+ FbGraph::User.new('matake').picture(size).should == File.join(FbGraph::ROOT_URL, "matake/picture?type=#{size}")
13
+ end
14
+ end
15
+ end
16
+
17
+ context 'when included by FbGraph::Page' do
18
+ it 'should return image url' do
19
+ FbGraph::Page.new('platform').picture.should == File.join(FbGraph::ROOT_URL, 'platform/picture')
20
+ end
21
+
22
+ it 'should support size option' do
23
+ [:square, :large].each do |size|
24
+ FbGraph::Page.new('platform').picture(size).should == File.join(FbGraph::ROOT_URL, "platform/picture?type=#{size}")
25
+ end
26
+ end
27
+ end
28
+
29
+ end
@@ -0,0 +1,35 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Posts, '#posts' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'arjun/posts', 'users/posts/arjun_public')
7
+ fake_json(:get, 'arjun/posts?access_token=access_token', 'users/posts/arjun_private')
8
+ end
9
+
10
+ context 'when no access_token given' do
11
+ it 'should return public posts the user created as FbGraph::Post' do
12
+ posts = FbGraph::User.new('arjun').posts
13
+ posts.first.should == FbGraph::Post.new(
14
+ '7901103_121392141207495',
15
+ :from => {
16
+ :id => '7901103',
17
+ :name => 'Arjun Banker'
18
+ },
19
+ :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',
20
+ :link => 'http://www.ted.com/talks/wade_davis_on_endangered_cultures.html',
21
+ :name => 'Wade Davis on endangered cultures | Video on TED.com',
22
+ :caption => 'www.ted.com',
23
+ :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.',
24
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/z9XZ8/hash/976ulj6z.gif',
25
+ :created_time => '2010-04-25T04:05:32+0000',
26
+ :updated_time => '2010-04-25T04:05:32+0000',
27
+ :likes => 1
28
+ )
29
+ posts.each do |post|
30
+ post.should be_instance_of(FbGraph::Post)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,74 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Statuses, '#statuses' do
4
+
5
+ context 'when included by FbGraph::User' do
6
+ before(:all) do
7
+ fake_json(:get, 'arjun/statuses', 'users/statuses/arjun_public')
8
+ fake_json(:get, 'arjun/statuses?access_token=access_token', 'users/statuses/arjun_private')
9
+ end
10
+
11
+ context 'when no access_token given' do
12
+ it 'should raise FbGraph::Unauthorized' do
13
+ lambda do
14
+ FbGraph::User.new('arjun').statuses
15
+ end.should raise_exception(FbGraph::Unauthorized)
16
+ end
17
+ end
18
+
19
+ context 'when access_token is given' do
20
+ it 'should return statuses as FbGraph::Status' do
21
+ statuses = FbGraph::User.new('arjun', :access_token => 'access_token').statuses
22
+ statuses.first.should == FbGraph::Status.new(
23
+ '113559395341627',
24
+ :access_token => 'access_token',
25
+ :from => {
26
+ :id => '7901103',
27
+ :name => 'Arjun Banker'
28
+ },
29
+ :message => 'http://www.facebook.com/photo.php?pid=60538827&l=79b44ffb74&id=7901103',
30
+ :updated_time => '2010-04-21T21:10:16+0000'
31
+ )
32
+ statuses.each do |status|
33
+ status.should be_instance_of(FbGraph::Status)
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ context 'when included by FbGraph::Page' do
40
+ before(:all) do
41
+ fake_json(:get, 'platform/statuses', 'pages/statuses/platform_public')
42
+ fake_json(:get, 'platform/statuses?access_token=access_token', 'pages/statuses/platform_private')
43
+ end
44
+
45
+ context 'when no access_token given' do
46
+ it 'should raise FbGraph::Unauthorized' do
47
+ lambda do
48
+ FbGraph::Page.new('platform').statuses
49
+ end.should raise_exception(FbGraph::Unauthorized)
50
+ end
51
+ end
52
+
53
+ context 'when access_token is given' do
54
+ it 'should return statuses as FbGraph::Status' do
55
+ statuses = FbGraph::Page.new('platform', :access_token => 'access_token').statuses
56
+ statuses.first.should == FbGraph::Status.new(
57
+ '111081598927600',
58
+ :access_token => 'access_token',
59
+ :from => {
60
+ :id => '19292868552',
61
+ :name => 'Facebook Platform',
62
+ :category => 'Technology'
63
+ },
64
+ :message => 'Here\'s more information on the new social plugins announced at f8 today - http://bit.ly/db8ahS',
65
+ :updated_time => '2010-04-21T20:17:04+0000'
66
+ )
67
+ statuses.each do |status|
68
+ status.should be_instance_of(FbGraph::Status)
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::Application' do
4
+ describe FbGraph::Connections::Subscriptions, '#subscriptions' do
5
+ before(:all) do
6
+ fake_json(:get, 'fb_graph/subscriptions?access_token=access_token', 'applications/subscriptions/fb_graph_private')
7
+ end
8
+
9
+ context 'when access_token is given' do
10
+ it 'should return liked pages as FbGraph::Page' do
11
+ subscriptions = FbGraph::Application.new('fb_graph', :access_token => 'access_token').subscriptions
12
+ subscriptions.each do |subscription|
13
+ subscription.should be_instance_of(FbGraph::Subscription)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Tagged, '#tagged' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'arjun/tagged', 'users/tagged/arjun_public')
7
+ fake_json(:get, 'arjun/tagged?access_token=access_token', 'users/tagged/arjun_private')
8
+ end
9
+
10
+ context 'when no access_token given' do
11
+ it 'should return posts the user has been tagged as FbGraph::Post' do
12
+ posts = FbGraph::User.new('arjun').tagged
13
+ posts.first.should == FbGraph::Post.new(
14
+ '7901103_117809521578252',
15
+ :from => {
16
+ :id => '1404401889',
17
+ :name => 'Elli Mooney'
18
+ },
19
+ :to => {
20
+ :data => [{
21
+ :id => '7901103',
22
+ :name => 'Arjun Banker'
23
+ }]
24
+ },
25
+ :message => '...uh oh, here comes a privacy issue....',
26
+ :picture => 'http://external.ak.fbcdn.net/safe_image.php?d=c659c86d415c60c37b2871bfd67f2a97&w=130&h=130&url=http%3A%2F%2Fcdn.venturebeat.com%2Fwp-content%2Fuploads%2F2010%2F04%2Fusethisone.jpg',
27
+ :link => 'http://venturebeat.com/2010/04/23/blippy-credit-card-citibank/',
28
+ :name => 'Blippy users’ credit card numbers found on Google | VentureBeat',
29
+ :caption => 'venturebeat.com',
30
+ :description => '[Update: Blippy cofounder Philip Kaplan emailed a response. CNET News is reporting that the cards in question were issued by ...',
31
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/zB010/hash/9yvl71tw.gif',
32
+ :created_time => '2010-04-24T08:07:59+0000',
33
+ :updated_time => '2010-04-24T08:07:59+0000',
34
+ :likes => 1
35
+ )
36
+ posts.each do |post|
37
+ post.should be_instance_of(FbGraph::Post)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Television, '#television' do
4
+ before(:all) do
5
+ fake_json(:get, 'matake/television?access_token=access_token', 'users/television/matake_private')
6
+ end
7
+
8
+ it 'should return television pages as FbGraph::Page' do
9
+ pages = FbGraph::User.new('matake', :access_token => 'access_token').television
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::Videos, '#videos' do
4
+ before(:all) do
5
+ fake_json(:get, 'kirk/videos?access_token=access_token', 'users/videos/kirk_private')
6
+ end
7
+
8
+ it 'should return videos as FbGraph::Video' do
9
+ videos = FbGraph::User.new('kirk', :access_token => 'access_token').videos
10
+ videos.each do |video|
11
+ video.should be_instance_of(FbGraph::Video)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,61 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe FbGraph::Education, '.new' do
4
+
5
+ it 'should setup all supported attributes' do
6
+ attributes = {
7
+ :school => {
8
+ :id => 110149592341159,
9
+ :name => "\u540c\u5fd7\u793e\u5927\u5b66"
10
+ },
11
+ :degree => {
12
+ :id => 110616875633830,
13
+ :name => "Master of Engineering"
14
+ },
15
+ :year => {
16
+ :id => 104926492884272,
17
+ :name => "2007"
18
+ },
19
+ :concentration => [
20
+ {
21
+ :id => 112303688789448,
22
+ :name => "Engineering"
23
+ },
24
+ {
25
+ :id => 102358546472290,
26
+ :name => "Intelligent Information"
27
+ },
28
+ {
29
+ :id => 108311762535367,
30
+ :name => "Intelligent Systems Design Laboratory"
31
+ }
32
+ ] }
33
+ education = FbGraph::Education.new(attributes)
34
+ education.school.should == FbGraph::Page.new(
35
+ 110149592341159,
36
+ :name => "\u540c\u5fd7\u793e\u5927\u5b66"
37
+ )
38
+ education.degree.should == FbGraph::Page.new(
39
+ 110616875633830,
40
+ :name => "Master of Engineering"
41
+ )
42
+ education.year.should == FbGraph::Page.new(
43
+ 104926492884272,
44
+ :name => "2007"
45
+ )
46
+ education.concentration.should == [
47
+ FbGraph::Page.new(
48
+ 112303688789448,
49
+ :name => "Engineering"
50
+ ),
51
+ FbGraph::Page.new(
52
+ 102358546472290,
53
+ :name => "Intelligent Information"
54
+ ),
55
+ FbGraph::Page.new(
56
+ 108311762535367,
57
+ :name => "Intelligent Systems Design Laboratory"
58
+ )
59
+ ]
60
+ end
61
+ end