palidanx-fb_graph 1.0.4

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.
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,29 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe FbGraph::Checkin, '.new' do
4
+ # TODO
5
+ end
6
+
7
+ describe FbGraph::Checkin, '.search' do
8
+ before(:all) do
9
+ fake_json(:get, 'search?type=checkin', 'checkins/search_public')
10
+ fake_json(:get, 'search?type=checkin&access_token=access_token', 'checkins/search_private')
11
+ end
12
+
13
+ context 'when no access_token given' do
14
+ it 'should raise FbGraph::Unauthorized' do
15
+ lambda do
16
+ FbGraph::Checkin.search
17
+ end.should raise_exception(FbGraph::Unauthorized)
18
+ end
19
+ end
20
+
21
+ context 'when access_token is given' do
22
+ it 'should return checkins as FbGraph::Checkin' do
23
+ checkins = FbGraph::Checkin.search(:access_token => 'access_token')
24
+ checkins.each do |checkin|
25
+ checkin.should be_instance_of(FbGraph::Checkin)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,45 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe FbGraph::Collection, '.new' do
4
+ before(:all) do
5
+ fake_json(:get, 'platform/statuses?access_token=access_token', 'pages/statuses/platform_private')
6
+ end
7
+
8
+ it 'should return an array with pagination info' do
9
+ collection = FbGraph::Page.new('platform', :access_token => 'access_token').statuses.collection
10
+ collection.should be_kind_of(Array)
11
+ collection.previous.should be_kind_of(Hash)
12
+ collection.next.should be_kind_of(Hash)
13
+ end
14
+
15
+ it 'should allow blank data' do
16
+ patterns = [
17
+ FbGraph::Collection.new,
18
+ FbGraph::Collection.new({}),
19
+ FbGraph::Collection.new({:count => 5}),
20
+ FbGraph::Collection.new(nil)
21
+ ]
22
+ patterns.each do |collection|
23
+ collection.should be_kind_of(Array)
24
+ collection.previous.should be_kind_of(Hash)
25
+ collection.next.should be_kind_of(Hash)
26
+ collection.should be_blank
27
+ collection.previous.should be_blank
28
+ collection.next.should be_blank
29
+ end
30
+ end
31
+
32
+ it 'should fetch count as total_count' do
33
+ collection = FbGraph::Collection.new({:count => 5})
34
+ collection.total_count.should == 5
35
+ end
36
+
37
+ it 'should accept Array' do
38
+ collection = FbGraph::Collection.new([1, 2, 3])
39
+ collection.total_count.should == 3
40
+ collection.should == [1, 2, 3]
41
+ collection.previous.should be_blank
42
+ collection.next.should be_blank
43
+ end
44
+
45
+ end
@@ -0,0 +1,31 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe FbGraph::Comment, '.new' do
4
+
5
+ it 'should setup all supported attributes' do
6
+ attributes = {
7
+ :id => '12345',
8
+ :from => {
9
+ :id => '23456',
10
+ :name => 'nov matake'
11
+ },
12
+ :message => 'hello',
13
+ :created_time => '2010-01-02T15:37:40+0000'
14
+ }
15
+ comment = FbGraph::Comment.new(attributes.delete(:id), attributes)
16
+ comment.identifier.should == '12345'
17
+ comment.from.should == FbGraph::User.new('23456', :name => 'nov matake')
18
+ comment.message.should == 'hello'
19
+ comment.created_time.should == Time.parse('2010-01-02T15:37:40+0000')
20
+ end
21
+
22
+ it 'should support page as from' do
23
+ page_comment = FbGraph::Comment.new('12345', :from => {
24
+ :id => '23456',
25
+ :name => 'Smart.fm',
26
+ :category => 'Web Site'
27
+ })
28
+ page_comment.from.should == FbGraph::Page.new('23456', :name => 'Smart.fm', :category => 'Web Site')
29
+ end
30
+
31
+ end
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe FbGraph::Connection, '.new' do
4
+ before(:all) do
5
+ fake_json(:get, 'platform/statuses?access_token=access_token', 'pages/statuses/platform_private')
6
+ end
7
+
8
+ it 'should return an array with connection info' do
9
+ page = FbGraph::Page.new('platform', :access_token => 'access_token')
10
+ statuses = page.statuses
11
+ statuses.should be_kind_of(Array)
12
+ statuses.collection.should be_kind_of(FbGraph::Collection)
13
+ statuses.owner.should == page
14
+ statuses.connection.should == :statuses
15
+ end
16
+ end
17
+
18
+ describe FbGraph::Connection do
19
+ before(:all) do
20
+ fake_json(:get, 'me/home?access_token=access_token', 'users/home/me_private')
21
+ fake_json(:get, 'me/home?limit=25&since=2010-04-27T13%3A06%3A14%2B0000&access_token=access_token', 'users/home/me_private_previous')
22
+ fake_json(:get, 'me/home?limit=25&access_token=access_token&until=2010-04-27T11%3A07%3A48%2B0000', 'users/home/me_private_next')
23
+ end
24
+
25
+ it 'should be useful for pagenation' do
26
+ me = FbGraph::User.new('me', :access_token => 'access_token')
27
+ posts = me.home
28
+ posts.first.created_time.should == Time.parse('2010-04-27T13:06:14+0000')
29
+ posts.last.created_time.should == Time.parse('2010-04-27T11:07:48+0000')
30
+ previous_posts = posts.previous
31
+ previous_posts.first.created_time.should == Time.parse('2010-04-27T13:23:08+0000')
32
+ previous_posts.last.created_time.should == Time.parse('2010-04-27T13:10:56+0000')
33
+ next_posts = posts.next
34
+ next_posts.first.created_time.should == Time.parse('2010-04-27T11:06:29+0000')
35
+ next_posts.last.created_time.should == Time.parse('2010-04-27T09:44:28+0000')
36
+ end
37
+
38
+ end
@@ -0,0 +1,47 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Accounts, '#accounts' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/accounts', 'users/accounts/matake_public')
7
+ fake_json(:get, 'matake/accounts?access_token=access_token', 'users/accounts/matake_private')
8
+ fake_json(:get, 'matake/accounts?access_token=access_token_with_manage_pages_permission', 'users/accounts/matake_private_with_manage_pages_permission')
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('matake').accounts
15
+ end.should raise_exception(FbGraph::Unauthorized)
16
+ end
17
+ end
18
+
19
+ context 'when access_token is given' do
20
+ it 'should return accounts as FbGraph::Page' do
21
+ accounts = FbGraph::User.new('matake', :access_token => 'access_token').accounts
22
+ accounts.class.should == FbGraph::Connection
23
+ accounts.first.should == FbGraph::Page.new(
24
+ '140478125968442',
25
+ :access_token => 'access_token',
26
+ :name => 'OAuth.jp',
27
+ :category => 'Technology'
28
+ )
29
+ accounts.each do |account|
30
+ account.should be_instance_of(FbGraph::Page)
31
+ end
32
+ end
33
+
34
+ context 'when manage_pages permission given' do
35
+ it 'should has special access_token behalf of the page' do
36
+ accounts = FbGraph::User.new('matake', :access_token => 'access_token_with_manage_pages_permission').accounts
37
+ accounts.first.should == FbGraph::Page.new(
38
+ '140478125968442',
39
+ :access_token => 'access_token_for_oauth_jp',
40
+ :name => 'OAuth.jp',
41
+ :category => 'Technology'
42
+ )
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,34 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Activities, '#activities' do
5
+ before(:all) do
6
+ fake_json(:get, 'arjun/activities', 'users/activities/arjun_public')
7
+ fake_json(:get, 'arjun/activities?access_token=access_token', 'users/activities/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').activities
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return activities as FbGraph::Page' do
20
+ activities = FbGraph::User.new('arjun', :access_token => 'access_token').activities
21
+ activities.class.should == FbGraph::Connection
22
+ activities.first.should == FbGraph::Page.new(
23
+ '378209722137',
24
+ :access_token => 'access_token',
25
+ :name => 'Doing Things at the Last Minute',
26
+ :category => '活動'
27
+ )
28
+ activities.each do |activity|
29
+ activity.should be_instance_of(FbGraph::Page)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,60 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Albums, '#albums' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/albums', 'users/albums/matake_public')
7
+ fake_json(:get, 'matake/albums?access_token=access_token', 'users/albums/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').albums
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return albums as FbGraph::Album' do
20
+ albums = FbGraph::User.new('matake', :access_token => 'access_token').albums
21
+ albums.first.should == FbGraph::Album.new(
22
+ '19351532276',
23
+ :access_token => 'access_token',
24
+ :from => {
25
+ :id => '579612276',
26
+ :name => 'Nov Matake'
27
+ },
28
+ :name => 'モバイルアップロード',
29
+ :description => 'hello facebookers!',
30
+ :link => 'http://www.facebook.com/album.php?aid=25463&id=579612276',
31
+ :location => 'NYC',
32
+ :count => 3,
33
+ :privacy => 'everyone',
34
+ :created_time => '2008-07-27T11:38:15+0000',
35
+ :updated_time => '2009-02-07T16:09:53+0000'
36
+ )
37
+ albums.each do |album|
38
+ album.should be_instance_of(FbGraph::Album)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe FbGraph::Connections::Albums, '#album!' do
45
+ before do
46
+ fake_json(:post, 'matake/albums', 'users/albums/post_with_valid_access_token')
47
+ end
48
+
49
+ it 'should return generated album' do
50
+ album = FbGraph::User.new('matake', :access_token => 'valid').album!(
51
+ :name => 'FbGraph test',
52
+ :message => 'test test test'
53
+ )
54
+ album.identifier.should == 401096332276
55
+ album.access_token.should == 'valid'
56
+ album.name.should == 'FbGraph test'
57
+ album.description.should == 'test test test'
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Attending, '#attending' do
4
+ before(:all) do
5
+ fake_json(:get, 'smartday/attending?access_token=access_token', 'events/attending/smartday_private')
6
+ end
7
+
8
+ it 'should return attending users as FbGraph::User' do
9
+ users = FbGraph::Event.new('smartday', :access_token => 'access_token').attending
10
+ users.each do |user|
11
+ user.should be_instance_of(FbGraph::User)
12
+ end
13
+ end
14
+ end
15
+
16
+ describe FbGraph::Connections::Attending, '#attending!' do
17
+ before do
18
+ fake_json(:post, '12345/attending', 'events/attending/post_with_valid_access_token')
19
+ end
20
+
21
+ it 'should return true' do
22
+ FbGraph::Event.new('12345', :access_token => 'valid').attending!.should be_true
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Connections::Books, '#books' do
4
+ context 'when included by FbGraph::User' do
5
+ before(:all) do
6
+ fake_json(:get, 'matake/books', 'users/books/matake_public')
7
+ fake_json(:get, 'matake/books?access_token=access_token', 'users/books/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').books
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return books as FbGraph::Page' do
20
+ books = FbGraph::User.new('matake', :access_token => 'access_token').books
21
+ books.first.should == FbGraph::Page.new(
22
+ '102253616477130',
23
+ :access_token => 'access_token',
24
+ :name => 'Momo Michael Ende',
25
+ :category => 'Unknown'
26
+ )
27
+ books.each do |book|
28
+ book.should be_instance_of(FbGraph::Page)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,109 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ context 'when included by FbGraph::User' do
4
+ describe FbGraph::Connections::Checkins, '#checkins' do
5
+ before(:all) do
6
+ fake_json(:get, 'mattt/checkins', 'users/checkins/mattt_public')
7
+ fake_json(:get, 'mattt/checkins?access_token=access_token', 'users/checkins/mattt_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('mattt').checkins
14
+ end.should raise_exception(FbGraph::Unauthorized)
15
+ end
16
+ end
17
+
18
+ context 'when access_token is given' do
19
+ it 'should return checkins as FbGraph::Checkin' do
20
+ checkins = FbGraph::User.new('mattt', :access_token => 'access_token').checkins
21
+ checkins.first.should == FbGraph::Checkin.new(
22
+ '696876187499',
23
+ :access_token => 'access_token',
24
+ :from => {
25
+ :id => '12820552',
26
+ :name => 'Roger Pincombe'
27
+ },
28
+ :tags => {
29
+ :data => [{
30
+ :id => '4810308',
31
+ :name => 'Mattt Thompson'
32
+ }]
33
+ },
34
+ :message => 'Checking out Austin, TX',
35
+ :place => {
36
+ :id => '120454134658381',
37
+ :name => 'Gowalla HQ',
38
+ :location => {
39
+ :latitude => 30.26876,
40
+ :longitude => -97.74962
41
+ }
42
+ },
43
+ :application => {
44
+ :id => '6628568379',
45
+ :name => 'Facebook for iPhone'
46
+ },
47
+ :created_time => '2010-09-08T00:09:25+0000'
48
+ )
49
+ checkins.each do |checkin|
50
+ checkin.should be_instance_of(FbGraph::Checkin)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ context 'when included by FbGraph::Page' do
58
+ describe FbGraph::Connections::Checkins, '#checkins' do
59
+ before(:all) do
60
+ fake_json(:get, 'gowalla/checkins', 'pages/checkins/gowalla_public')
61
+ fake_json(:get, 'gowalla/checkins?access_token=access_token', 'pages/checkins/gowalla_private')
62
+ end
63
+
64
+ context 'when no access_token given' do
65
+ it 'should raise FbGraph::Unauthorized' do
66
+ lambda do
67
+ FbGraph::Page.new('gowalla').checkins
68
+ end.should raise_exception(FbGraph::Unauthorized)
69
+ end
70
+ end
71
+
72
+ context 'when access_token is given' do
73
+ it 'should return checkins as FbGraph::Checkin' do
74
+ checkins = FbGraph::Page.new('gowalla', :access_token => 'access_token').checkins
75
+ checkins.first.should == FbGraph::Checkin.new(
76
+ '696876187499',
77
+ :access_token => 'access_token',
78
+ :from => {
79
+ :id => '12820552',
80
+ :name => 'Roger Pincombe'
81
+ },
82
+ :tags => {
83
+ :data => [{
84
+ :id => '4810308',
85
+ :name => 'Mattt Thompson'
86
+ }]
87
+ },
88
+ :message => 'Checking out Austin, TX',
89
+ :place => {
90
+ :id => '120454134658381',
91
+ :name => 'Gowalla HQ',
92
+ :location => {
93
+ :latitude => 30.26876,
94
+ :longitude => -97.74962
95
+ }
96
+ },
97
+ :application => {
98
+ :id => '6628568379',
99
+ :name => 'Facebook for iPhone'
100
+ },
101
+ :created_time => '2010-09-08T00:09:25+0000'
102
+ )
103
+ checkins.each do |checkin|
104
+ checkin.should be_instance_of(FbGraph::Checkin)
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end