gs_graph 2.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +22 -0
  3. data/.gitignore +26 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +3 -0
  6. data/Gemfile +11 -0
  7. data/Gemfile.lock +95 -0
  8. data/LICENSE +20 -0
  9. data/README.rdoc +314 -0
  10. data/Rakefile +25 -0
  11. data/VERSION +1 -0
  12. data/assets/fb_graph.ai +1726 -6
  13. data/assets/fb_graph.png +0 -0
  14. data/gs_graph.gemspec +28 -0
  15. data/lib/gs_graph.rb +174 -0
  16. data/lib/gs_graph/achievement.rb +44 -0
  17. data/lib/gs_graph/action.rb +12 -0
  18. data/lib/gs_graph/ad_account.rb +51 -0
  19. data/lib/gs_graph/ad_campaign.rb +39 -0
  20. data/lib/gs_graph/ad_campaign_stat.rb +22 -0
  21. data/lib/gs_graph/ad_connection_object.rb +53 -0
  22. data/lib/gs_graph/ad_creative.rb +44 -0
  23. data/lib/gs_graph/ad_group.rb +51 -0
  24. data/lib/gs_graph/ad_group_stat.rb +22 -0
  25. data/lib/gs_graph/ad_keyword.rb +20 -0
  26. data/lib/gs_graph/ad_keyword_suggestion.rb +8 -0
  27. data/lib/gs_graph/ad_keyword_valid.rb +23 -0
  28. data/lib/gs_graph/ad_preview.rb +10 -0
  29. data/lib/gs_graph/ad_user.rb +58 -0
  30. data/lib/gs_graph/age_range.rb +12 -0
  31. data/lib/gs_graph/album.rb +59 -0
  32. data/lib/gs_graph/app_request.rb +24 -0
  33. data/lib/gs_graph/application.rb +119 -0
  34. data/lib/gs_graph/auth.rb +88 -0
  35. data/lib/gs_graph/auth/cookie.rb +20 -0
  36. data/lib/gs_graph/auth/signed_request.rb +44 -0
  37. data/lib/gs_graph/broad_targeting_category.rb +13 -0
  38. data/lib/gs_graph/checkin.rb +51 -0
  39. data/lib/gs_graph/collection.rb +55 -0
  40. data/lib/gs_graph/comment.rb +24 -0
  41. data/lib/gs_graph/comparison.rb +13 -0
  42. data/lib/gs_graph/connection.rb +37 -0
  43. data/lib/gs_graph/connections.rb +3 -0
  44. data/lib/gs_graph/connections/accounts.rb +23 -0
  45. data/lib/gs_graph/connections/achievements.rb +21 -0
  46. data/lib/gs_graph/connections/activities.rb +14 -0
  47. data/lib/gs_graph/connections/ad_accounts.rb +15 -0
  48. data/lib/gs_graph/connections/ad_campaign_stats.rb +22 -0
  49. data/lib/gs_graph/connections/ad_campaigns.rb +30 -0
  50. data/lib/gs_graph/connections/ad_connection_objects.rb +14 -0
  51. data/lib/gs_graph/connections/ad_creatives.rb +14 -0
  52. data/lib/gs_graph/connections/ad_group_stats.rb +22 -0
  53. data/lib/gs_graph/connections/ad_groups.rb +35 -0
  54. data/lib/gs_graph/connections/ad_previews.rb +10 -0
  55. data/lib/gs_graph/connections/admins.rb +10 -0
  56. data/lib/gs_graph/connections/albums.rb +21 -0
  57. data/lib/gs_graph/connections/app_notifications.rb +10 -0
  58. data/lib/gs_graph/connections/app_requests.rb +21 -0
  59. data/lib/gs_graph/connections/attending.rb +26 -0
  60. data/lib/gs_graph/connections/banned.rb +31 -0
  61. data/lib/gs_graph/connections/blocked.rb +36 -0
  62. data/lib/gs_graph/connections/books.rb +14 -0
  63. data/lib/gs_graph/connections/broad_targeting_categories.rb +14 -0
  64. data/lib/gs_graph/connections/checkins.rb +21 -0
  65. data/lib/gs_graph/connections/comments.rb +21 -0
  66. data/lib/gs_graph/connections/conversations.rb +14 -0
  67. data/lib/gs_graph/connections/declined.rb +25 -0
  68. data/lib/gs_graph/connections/docs.rb +14 -0
  69. data/lib/gs_graph/connections/events.rb +21 -0
  70. data/lib/gs_graph/connections/family.rb +14 -0
  71. data/lib/gs_graph/connections/feed.rb +21 -0
  72. data/lib/gs_graph/connections/former_participants.rb +14 -0
  73. data/lib/gs_graph/connections/friend_lists.rb +21 -0
  74. data/lib/gs_graph/connections/friend_requests.rb +12 -0
  75. data/lib/gs_graph/connections/friends.rb +14 -0
  76. data/lib/gs_graph/connections/games.rb +14 -0
  77. data/lib/gs_graph/connections/groups.rb +14 -0
  78. data/lib/gs_graph/connections/home.rb +14 -0
  79. data/lib/gs_graph/connections/inbox.rb +20 -0
  80. data/lib/gs_graph/connections/insights.rb +27 -0
  81. data/lib/gs_graph/connections/interests.rb +14 -0
  82. data/lib/gs_graph/connections/invited.rb +36 -0
  83. data/lib/gs_graph/connections/likes.rb +29 -0
  84. data/lib/gs_graph/connections/links.rb +21 -0
  85. data/lib/gs_graph/connections/maybe.rb +25 -0
  86. data/lib/gs_graph/connections/members.rb +22 -0
  87. data/lib/gs_graph/connections/messages.rb +22 -0
  88. data/lib/gs_graph/connections/milestones.rb +21 -0
  89. data/lib/gs_graph/connections/movies.rb +14 -0
  90. data/lib/gs_graph/connections/music.rb +14 -0
  91. data/lib/gs_graph/connections/mutual_friends.rb +26 -0
  92. data/lib/gs_graph/connections/noreply.rb +23 -0
  93. data/lib/gs_graph/connections/notes.rb +21 -0
  94. data/lib/gs_graph/connections/notifications.rb +18 -0
  95. data/lib/gs_graph/connections/offers.rb +22 -0
  96. data/lib/gs_graph/connections/outbox.rb +20 -0
  97. data/lib/gs_graph/connections/participants.rb +14 -0
  98. data/lib/gs_graph/connections/payments.rb +14 -0
  99. data/lib/gs_graph/connections/permissions.rb +16 -0
  100. data/lib/gs_graph/connections/photos.rb +21 -0
  101. data/lib/gs_graph/connections/picture.rb +39 -0
  102. data/lib/gs_graph/connections/pokes.rb +12 -0
  103. data/lib/gs_graph/connections/posts.rb +14 -0
  104. data/lib/gs_graph/connections/promotable_posts.rb +14 -0
  105. data/lib/gs_graph/connections/question_options.rb +14 -0
  106. data/lib/gs_graph/connections/questions.rb +22 -0
  107. data/lib/gs_graph/connections/reach_estimates.rb +12 -0
  108. data/lib/gs_graph/connections/roles.rb +36 -0
  109. data/lib/gs_graph/connections/scores.rb +22 -0
  110. data/lib/gs_graph/connections/senders.rb +14 -0
  111. data/lib/gs_graph/connections/settings.rb +65 -0
  112. data/lib/gs_graph/connections/statuses.rb +14 -0
  113. data/lib/gs_graph/connections/subscribed_to.rb +14 -0
  114. data/lib/gs_graph/connections/subscribers.rb +14 -0
  115. data/lib/gs_graph/connections/subscriptions.rb +53 -0
  116. data/lib/gs_graph/connections/tabs.rb +23 -0
  117. data/lib/gs_graph/connections/tagged.rb +14 -0
  118. data/lib/gs_graph/connections/tags.rb +23 -0
  119. data/lib/gs_graph/connections/television.rb +14 -0
  120. data/lib/gs_graph/connections/test_users.rb +19 -0
  121. data/lib/gs_graph/connections/threads.rb +14 -0
  122. data/lib/gs_graph/connections/user_achievements.rb +22 -0
  123. data/lib/gs_graph/connections/user_likes.rb +19 -0
  124. data/lib/gs_graph/connections/videos.rb +21 -0
  125. data/lib/gs_graph/connections/votes.rb +9 -0
  126. data/lib/gs_graph/cover.rb +10 -0
  127. data/lib/gs_graph/debugger.rb +28 -0
  128. data/lib/gs_graph/device.rb +11 -0
  129. data/lib/gs_graph/doc.rb +18 -0
  130. data/lib/gs_graph/domain.rb +32 -0
  131. data/lib/gs_graph/education.rb +32 -0
  132. data/lib/gs_graph/event.rb +52 -0
  133. data/lib/gs_graph/exception.rb +139 -0
  134. data/lib/gs_graph/friend_list.rb +13 -0
  135. data/lib/gs_graph/friend_request.rb +14 -0
  136. data/lib/gs_graph/group.rb +29 -0
  137. data/lib/gs_graph/image.rb +11 -0
  138. data/lib/gs_graph/insight.rb +13 -0
  139. data/lib/gs_graph/klass.rb +31 -0
  140. data/lib/gs_graph/link.rb +32 -0
  141. data/lib/gs_graph/location.rb +20 -0
  142. data/lib/gs_graph/message.rb +30 -0
  143. data/lib/gs_graph/milestone.rb +26 -0
  144. data/lib/gs_graph/node.rb +149 -0
  145. data/lib/gs_graph/note.rb +32 -0
  146. data/lib/gs_graph/notification.rb +32 -0
  147. data/lib/gs_graph/offer.rb +33 -0
  148. data/lib/gs_graph/open_graph.rb +3 -0
  149. data/lib/gs_graph/open_graph/action.rb +42 -0
  150. data/lib/gs_graph/open_graph/application_context.rb +10 -0
  151. data/lib/gs_graph/open_graph/object.rb +29 -0
  152. data/lib/gs_graph/open_graph/user_context.rb +21 -0
  153. data/lib/gs_graph/order.rb +55 -0
  154. data/lib/gs_graph/page.rb +57 -0
  155. data/lib/gs_graph/page/category_attributes.rb +117 -0
  156. data/lib/gs_graph/photo.rb +48 -0
  157. data/lib/gs_graph/picture.rb +14 -0
  158. data/lib/gs_graph/place.rb +7 -0
  159. data/lib/gs_graph/poke.rb +19 -0
  160. data/lib/gs_graph/post.rb +117 -0
  161. data/lib/gs_graph/privacy.rb +27 -0
  162. data/lib/gs_graph/project.rb +4 -0
  163. data/lib/gs_graph/promotable_post.rb +34 -0
  164. data/lib/gs_graph/property.rb +13 -0
  165. data/lib/gs_graph/query.rb +47 -0
  166. data/lib/gs_graph/question.rb +26 -0
  167. data/lib/gs_graph/question_option.rb +22 -0
  168. data/lib/gs_graph/reach_estimate.rb +22 -0
  169. data/lib/gs_graph/role.rb +13 -0
  170. data/lib/gs_graph/score.rb +16 -0
  171. data/lib/gs_graph/searchable.rb +33 -0
  172. data/lib/gs_graph/searchable/result.rb +31 -0
  173. data/lib/gs_graph/serialization.rb +19 -0
  174. data/lib/gs_graph/status.rb +27 -0
  175. data/lib/gs_graph/subscription.rb +14 -0
  176. data/lib/gs_graph/tab.rb +17 -0
  177. data/lib/gs_graph/tag.rb +30 -0
  178. data/lib/gs_graph/tagged_object.rb +23 -0
  179. data/lib/gs_graph/targeting.rb +23 -0
  180. data/lib/gs_graph/test_user.rb +24 -0
  181. data/lib/gs_graph/thread.rb +71 -0
  182. data/lib/gs_graph/user.rb +153 -0
  183. data/lib/gs_graph/user_achievement.rb +35 -0
  184. data/lib/gs_graph/venue.rb +14 -0
  185. data/lib/gs_graph/video.rb +41 -0
  186. data/lib/gs_graph/work.rb +48 -0
  187. data/lib/patch/rack/oauth2/access_token.rb +11 -0
  188. data/lib/patch/rack/oauth2/access_token/introspectable.rb +37 -0
  189. data/lib/patch/rack/oauth2/client.rb +13 -0
  190. data/lib/patch/rack/oauth2/grant/fb_exchange_token.rb +11 -0
  191. data/lib/patch/rack/oauth2/util.rb +14 -0
  192. data/spec/gs_graph/achievement_spec.rb +59 -0
  193. data/spec/gs_graph/ad_account_spec.rb +124 -0
  194. data/spec/gs_graph/ad_campaign_spec.rb +99 -0
  195. data/spec/gs_graph/ad_connection_object_spec.rb +71 -0
  196. data/spec/gs_graph/ad_creative_spec.rb +87 -0
  197. data/spec/gs_graph/ad_group_spec.rb +95 -0
  198. data/spec/gs_graph/ad_keyword_spec.rb +27 -0
  199. data/spec/gs_graph/ad_keyword_suggestion_spec.rb +17 -0
  200. data/spec/gs_graph/ad_keyword_valid_spec.rb +19 -0
  201. data/spec/gs_graph/ad_user_spec.rb +67 -0
  202. data/spec/gs_graph/album_spec.rb +93 -0
  203. data/spec/gs_graph/app_request_spec.rb +40 -0
  204. data/spec/gs_graph/application_spec.rb +251 -0
  205. data/spec/gs_graph/auth/cookie_spec.rb +29 -0
  206. data/spec/gs_graph/auth/signed_request_spec.rb +22 -0
  207. data/spec/gs_graph/auth_spec.rb +223 -0
  208. data/spec/gs_graph/broad_targeting_category_spec.rb +17 -0
  209. data/spec/gs_graph/checkin_spec.rb +42 -0
  210. data/spec/gs_graph/collection_spec.rb +50 -0
  211. data/spec/gs_graph/comment_spec.rb +31 -0
  212. data/spec/gs_graph/connection_spec.rb +42 -0
  213. data/spec/gs_graph/connections/accounts_spec.rb +78 -0
  214. data/spec/gs_graph/connections/achievements_spec.rb +27 -0
  215. data/spec/gs_graph/connections/activities_spec.rb +34 -0
  216. data/spec/gs_graph/connections/ad_accounts_spec.rb +28 -0
  217. data/spec/gs_graph/connections/ad_campaign_stat_spec.rb +35 -0
  218. data/spec/gs_graph/connections/ad_campaigns_spec.rb +36 -0
  219. data/spec/gs_graph/connections/ad_connection_objects_spec.rb +20 -0
  220. data/spec/gs_graph/connections/ad_creatives_spec.rb +29 -0
  221. data/spec/gs_graph/connections/ad_group_stat_spec.rb +54 -0
  222. data/spec/gs_graph/connections/ad_groups_spec.rb +92 -0
  223. data/spec/gs_graph/connections/ad_previews_spec.rb +18 -0
  224. data/spec/gs_graph/connections/admins_spec.rb +20 -0
  225. data/spec/gs_graph/connections/albums_spec.rb +63 -0
  226. data/spec/gs_graph/connections/app_notifications_spec.rb +23 -0
  227. data/spec/gs_graph/connections/app_requests_spec.rb +28 -0
  228. data/spec/gs_graph/connections/attending_spec.rb +47 -0
  229. data/spec/gs_graph/connections/banned_spec.rb +63 -0
  230. data/spec/gs_graph/connections/blocked_spec.rb +56 -0
  231. data/spec/gs_graph/connections/books_spec.rb +32 -0
  232. data/spec/gs_graph/connections/broad_targeting_categories_spec.rb +18 -0
  233. data/spec/gs_graph/connections/checkins_spec.rb +153 -0
  234. data/spec/gs_graph/connections/comments_spec.rb +75 -0
  235. data/spec/gs_graph/connections/conversations_spec.rb +19 -0
  236. data/spec/gs_graph/connections/declined_spec.rb +47 -0
  237. data/spec/gs_graph/connections/docs_spec.rb +14 -0
  238. data/spec/gs_graph/connections/events_spec.rb +52 -0
  239. data/spec/gs_graph/connections/family_spec.rb +32 -0
  240. data/spec/gs_graph/connections/feed_spec.rb +124 -0
  241. data/spec/gs_graph/connections/former_participants_spec.rb +44 -0
  242. data/spec/gs_graph/connections/friend_lists_spec.rb +26 -0
  243. data/spec/gs_graph/connections/friend_requests_spec.rb +16 -0
  244. data/spec/gs_graph/connections/friends_spec.rb +51 -0
  245. data/spec/gs_graph/connections/games_spec.rb +20 -0
  246. data/spec/gs_graph/connections/groups_spec.rb +31 -0
  247. data/spec/gs_graph/connections/home_spec.rb +62 -0
  248. data/spec/gs_graph/connections/inbox_spec.rb +16 -0
  249. data/spec/gs_graph/connections/insights_spec.rb +104 -0
  250. data/spec/gs_graph/connections/interests_spec.rb +12 -0
  251. data/spec/gs_graph/connections/invited_spec.rb +84 -0
  252. data/spec/gs_graph/connections/likes_spec.rb +127 -0
  253. data/spec/gs_graph/connections/links_spec.rb +31 -0
  254. data/spec/gs_graph/connections/maybe_spec.rb +47 -0
  255. data/spec/gs_graph/connections/members_spec.rb +57 -0
  256. data/spec/gs_graph/connections/messages_spec.rb +58 -0
  257. data/spec/gs_graph/connections/milestones_spec.rb +40 -0
  258. data/spec/gs_graph/connections/movies_spec.rb +12 -0
  259. data/spec/gs_graph/connections/music_spec.rb +12 -0
  260. data/spec/gs_graph/connections/mutual_friends_spec.rb +28 -0
  261. data/spec/gs_graph/connections/noreply_spec.rb +39 -0
  262. data/spec/gs_graph/connections/notes_spec.rb +31 -0
  263. data/spec/gs_graph/connections/notifications_spec.rb +30 -0
  264. data/spec/gs_graph/connections/outbox_spec.rb +16 -0
  265. data/spec/gs_graph/connections/participants_spec.rb +42 -0
  266. data/spec/gs_graph/connections/payments_spec.rb +17 -0
  267. data/spec/gs_graph/connections/permissions_spec.rb +44 -0
  268. data/spec/gs_graph/connections/photos_spec.rb +39 -0
  269. data/spec/gs_graph/connections/picture_spec.rb +92 -0
  270. data/spec/gs_graph/connections/pokes_spec.rb +16 -0
  271. data/spec/gs_graph/connections/posts_spec.rb +34 -0
  272. data/spec/gs_graph/connections/promotable_posts_spec.rb +24 -0
  273. data/spec/gs_graph/connections/question_options_spec.rb +14 -0
  274. data/spec/gs_graph/connections/questions_spec.rb +31 -0
  275. data/spec/gs_graph/connections/reach_estimates_spec.rb +18 -0
  276. data/spec/gs_graph/connections/roles_spec.rb +59 -0
  277. data/spec/gs_graph/connections/scores_spec.rb +40 -0
  278. data/spec/gs_graph/connections/senders_spec.rb +42 -0
  279. data/spec/gs_graph/connections/settings_spec.rb +62 -0
  280. data/spec/gs_graph/connections/statuses_spec.rb +72 -0
  281. data/spec/gs_graph/connections/subscribed_to_spec.rb +12 -0
  282. data/spec/gs_graph/connections/subscribers_spec.rb +12 -0
  283. data/spec/gs_graph/connections/subscriptions_spec.rb +47 -0
  284. data/spec/gs_graph/connections/tabs_spec.rb +47 -0
  285. data/spec/gs_graph/connections/tagged_spec.rb +42 -0
  286. data/spec/gs_graph/connections/tags_spec.rb +30 -0
  287. data/spec/gs_graph/connections/television_spec.rb +12 -0
  288. data/spec/gs_graph/connections/test_users_spec.rb +65 -0
  289. data/spec/gs_graph/connections/threads_spec.rb +12 -0
  290. data/spec/gs_graph/connections/user_achievements_spec.rb +37 -0
  291. data/spec/gs_graph/connections/user_likes_spec.rb +55 -0
  292. data/spec/gs_graph/connections/videos_spec.rb +27 -0
  293. data/spec/gs_graph/connections/votes_spec.rb +15 -0
  294. data/spec/gs_graph/debugger_spec.rb +33 -0
  295. data/spec/gs_graph/doc_spec.rb +27 -0
  296. data/spec/gs_graph/domain_spec.rb +23 -0
  297. data/spec/gs_graph/education_spec.rb +61 -0
  298. data/spec/gs_graph/event_spec.rb +70 -0
  299. data/spec/gs_graph/exception_spec.rb +310 -0
  300. data/spec/gs_graph/friend_list_spec.rb +22 -0
  301. data/spec/gs_graph/group_spec.rb +28 -0
  302. data/spec/gs_graph/image_spec.rb +16 -0
  303. data/spec/gs_graph/insight_spec.rb +18 -0
  304. data/spec/gs_graph/link_spec.rb +41 -0
  305. data/spec/gs_graph/location_spec.rb +28 -0
  306. data/spec/gs_graph/message_spec.rb +47 -0
  307. data/spec/gs_graph/node_spec.rb +91 -0
  308. data/spec/gs_graph/note_spec.rb +37 -0
  309. data/spec/gs_graph/notification_spec.rb +59 -0
  310. data/spec/gs_graph/offer_spec.rb +30 -0
  311. data/spec/gs_graph/open_graph/action_spec.rb +112 -0
  312. data/spec/gs_graph/open_graph/application_context_spec.rb +28 -0
  313. data/spec/gs_graph/open_graph/object_spec.rb +76 -0
  314. data/spec/gs_graph/open_graph/user_context_spec.rb +33 -0
  315. data/spec/gs_graph/order_spec.rb +66 -0
  316. data/spec/gs_graph/page/local_business_spec.rb +88 -0
  317. data/spec/gs_graph/page/movie_spec.rb +25 -0
  318. data/spec/gs_graph/page/music_spec.rb +25 -0
  319. data/spec/gs_graph/page/person_spec.rb +23 -0
  320. data/spec/gs_graph/page/product_spec.rb +36 -0
  321. data/spec/gs_graph/page_spec.rb +81 -0
  322. data/spec/gs_graph/photo_spec.rb +85 -0
  323. data/spec/gs_graph/place_spec.rb +8 -0
  324. data/spec/gs_graph/post_spec.rb +238 -0
  325. data/spec/gs_graph/privacy_spec.rb +33 -0
  326. data/spec/gs_graph/project_spec.rb +46 -0
  327. data/spec/gs_graph/promotable_post_spec.rb +57 -0
  328. data/spec/gs_graph/qeustion_option_spec.rb +35 -0
  329. data/spec/gs_graph/query_spec.rb +73 -0
  330. data/spec/gs_graph/question_spec.rb +73 -0
  331. data/spec/gs_graph/reach_estimate_spec.rb +48 -0
  332. data/spec/gs_graph/searchable_spec.rb +47 -0
  333. data/spec/gs_graph/seriarization_spec.rb +29 -0
  334. data/spec/gs_graph/status_spec.rb +31 -0
  335. data/spec/gs_graph/subscription_spec.rb +5 -0
  336. data/spec/gs_graph/tag_spec.rb +34 -0
  337. data/spec/gs_graph/tagged_object_spec.rb +45 -0
  338. data/spec/gs_graph/targeting_spec.rb +34 -0
  339. data/spec/gs_graph/test_user_spec.rb +50 -0
  340. data/spec/gs_graph/thread_spec.rb +86 -0
  341. data/spec/gs_graph/user_achievement_spec.rb +53 -0
  342. data/spec/gs_graph/user_spec.rb +185 -0
  343. data/spec/gs_graph/venue_spec.rb +23 -0
  344. data/spec/gs_graph/video_spec.rb +31 -0
  345. data/spec/gs_graph/work_spec.rb +101 -0
  346. data/spec/gs_graph_spec.rb +57 -0
  347. data/spec/spec_helper.rb +9 -0
  348. metadata +538 -0
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Movies, '#movies' do
4
+ it 'should return movies pages as GSGraph::Page' do
5
+ mock_graph :get, 'matake/movies', 'users/movies/matake_private', :access_token => 'access_token' do
6
+ pages = GSGraph::User.new('matake', :access_token => 'access_token').movies
7
+ pages.each do |page|
8
+ page.should be_instance_of(GSGraph::Page)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Music, '#music' do
4
+ it 'should return music pages as GSGraph::Page' do
5
+ mock_graph :get, 'matake/music', 'users/music/matake_private', :access_token => 'access_token' do
6
+ pages = GSGraph::User.new('matake', :access_token => 'access_token').music
7
+ pages.each do |page|
8
+ page.should be_instance_of(GSGraph::Page)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::MutualFriends do
4
+ let(:me) { GSGraph::User.me('access_token') }
5
+
6
+ shared_examples_for :fetch_mutual_friends_between_me_and_friend do
7
+ it 'should return an Array of GSGraph::User' do
8
+ mock_graph :get, 'me/mutualfriends/agektmr', 'users/mutual_friends/me_and_agektmr', :access_token => 'access_token' do
9
+ friends = me.mutual_friends(friend)
10
+ friends.each do |friend|
11
+ friend.should be_instance_of GSGraph::User
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ describe '#mutual_friends' do
18
+ context 'when friend is a GSGraph::User' do
19
+ let(:friend) { GSGraph::User.new('agektmr') }
20
+ it_behaves_like :fetch_mutual_friends_between_me_and_friend
21
+ end
22
+
23
+ context 'when friend is just an identifier' do
24
+ let(:friend) { 'agektmr' }
25
+ it_behaves_like :fetch_mutual_friends_between_me_and_friend
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Noreply do
4
+ let(:event) do
5
+ GSGraph::Event.new('smartday', :access_token => 'access_token')
6
+ end
7
+
8
+ describe '#no_reply' do
9
+ it 'should return noreply users as GSGraph::User' do
10
+ mock_graph :get, 'smartday/noreply', 'events/noreply/smartday_private', :access_token => 'access_token' do
11
+ event.no_reply.each do |user|
12
+ user.should be_instance_of(GSGraph::User)
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '#no_reply?' do
19
+ context 'when no_reply' do
20
+ it 'should return true' do
21
+ mock_graph :get, 'smartday/noreply/uid', 'events/invited/not_replied', :access_token => 'access_token' do
22
+ event.no_reply?(
23
+ GSGraph::User.new('uid')
24
+ ).should be_true
25
+ end
26
+ end
27
+ end
28
+
29
+ context 'otherwise' do
30
+ it 'should return false' do
31
+ mock_graph :get, 'smartday/noreply/uid', 'empty', :access_token => 'access_token' do
32
+ event.no_reply?(
33
+ GSGraph::User.new('uid')
34
+ ).should be_false
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Notes, '#notes' do
4
+ context 'when included by GSGraph::User' do
5
+ it 'should return notes as GSGraph::Note' do
6
+ mock_graph :get, 'matake/notes', 'users/notes/matake_private', :access_token => 'access_token' do
7
+ notes = GSGraph::User.new('matake', :access_token => 'access_token').notes
8
+ notes.each do |note|
9
+ note.should be_instance_of(GSGraph::Note)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ describe GSGraph::Connections::Notes, '#note!' do
17
+ context 'when included by GSGraph::Page' do
18
+ it 'should return generated note' do
19
+ mock_graph :post, '12345/notes', 'pages/notes/post_with_valid_access_token', :params => {
20
+ :subject => 'test',
21
+ :message => 'hello'
22
+ }, :access_token => 'valid' do
23
+ note = GSGraph::Page.new('12345', :access_token => 'valid').note!(:subject => 'test', :message => 'hello')
24
+ note.identifier.should == 396664845100
25
+ note.subject.should == 'test'
26
+ note.message.should == 'hello'
27
+ note.access_token.should == 'valid'
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Notifications do
4
+ describe '#notifications' do
5
+ it 'should return notifications as GSGraph::Notification' do
6
+ mock_graph :get, 'me/notifications', 'users/notifications/all', :params => {
7
+ :include_read => 'true'
8
+ }, :access_token => 'access_token' do
9
+ notifications = GSGraph::User.me('access_token').notifications(:include_read => true)
10
+ notifications.each do |notification|
11
+ notification.should be_instance_of GSGraph::Notification
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ describe '#notification!' do
18
+ it 'should return success json' do
19
+ mock_graph :post, 'matake/notifications', 'success', :params => {
20
+ :template => 'hello'
21
+ }, :access_token => 'app_access_token' do
22
+ response = GSGraph::User.new('matake').notification!(
23
+ :access_token => 'app_access_token',
24
+ :template => 'hello'
25
+ )
26
+ response.should == {'success' => true}
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Outbox, '#outbox' do
4
+ context 'before message platform transition' do
5
+ it 'should return threads as GSGraph::Thread::BeforeTransition' do
6
+ mock_graph :get, 'me/outbox', 'users/outbox/me_private', :access_token => 'access_token' do
7
+ threads = GSGraph::User.me('access_token').outbox
8
+ threads.each do |thread|
9
+ thread.should be_instance_of(GSGraph::Thread::BeforeTransition)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ # TODO: after transition, check JSON format and put test here
16
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Participants, '#participants' do
4
+ it 'should return participants as GSGraph::User' do
5
+ mock_graph :get, '12345/participants', 'thread/participants/private', :params => {:no_cache => 'true'}, :access_token => 'access_token' do
6
+ participants = GSGraph::Thread.new(12345, :access_token => 'access_token').participants(:no_cache => true)
7
+ participants.each do |participant|
8
+ participant.should be_instance_of(GSGraph::User)
9
+ end
10
+ end
11
+ end
12
+
13
+ describe 'cached messages' do
14
+ context 'when cached' do
15
+ let(:thread) { GSGraph::Thread.new(12345, :access_token => 'access_token', :participants => {}) }
16
+
17
+ it 'should use cache' do
18
+ lambda do
19
+ thread.participants
20
+ end.should_not request_to '12345/participants?access_token=access_token'
21
+ end
22
+
23
+ context 'when options are specified' do
24
+ it 'should not use cache' do
25
+ lambda do
26
+ thread.participants(:no_cache => true)
27
+ end.should request_to '12345/participants?access_token=access_token&no_cache=true'
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'otherwise' do
33
+ let(:thread) { GSGraph::Thread.new(12345, :access_token => 'access_token') }
34
+
35
+ it 'should not use cache' do
36
+ lambda do
37
+ thread.participants
38
+ end.should request_to '12345/participants?access_token=access_token'
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Payments do
4
+ describe '#payments' do
5
+ let(:app) { GSGraph::Application.new('app_id', :secret => 'sec sec') }
6
+
7
+ it 'should return payments as GSGraph::Order' do
8
+ mock_graph :post, 'oauth/access_token', 'token_response' do
9
+ mock_graph :get, 'app_id/payments', 'applications/payments/sample', :access_token => 'token' do
10
+ app.payments.each do |payment|
11
+ payment.should be_a GSGraph::Order
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Permissions do
4
+ describe '#permissions' do
5
+ let :permissions do
6
+ mock_graph :get, 'me/permissions', 'users/permissions/me_private', :access_token => 'access_token' do
7
+ GSGraph::User.me('access_token').permissions
8
+ end
9
+ end
10
+
11
+ it 'should be an Array of Symbol' do
12
+ permissions.should be_instance_of Array
13
+ permissions.should_not be_blank
14
+ permissions.each do |permission|
15
+ permission.should be_instance_of Symbol
16
+ end
17
+ end
18
+
19
+ context 'when blank' do
20
+ it 'should return blank array' do
21
+ mock_graph :get, 'me/permissions', 'users/permissions/blank', :access_token => 'access_token' do
22
+ permissions = GSGraph::User.me('access_token').permissions
23
+ permissions.should == []
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '#revoke!' do
30
+ it 'should DELETE /:user_id/permissions' do
31
+ mock_graph :delete, 'me/permissions', 'true', :access_token => 'access_token' do
32
+ GSGraph::User.me('access_token').revoke!
33
+ end
34
+ end
35
+
36
+ it 'should support revoking specific permission' do
37
+ mock_graph :delete, 'me/permissions', 'true', :access_token => 'access_token', :params => {
38
+ :permission => :email
39
+ } do
40
+ GSGraph::User.me('access_token').revoke! :email
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Photos, '#photos' do
4
+ context 'when included by GSGraph::Album' do
5
+ it 'should return photos as GSGraph::Photo' do
6
+ mock_graph :get, '12345/photos', 'albums/photos/matake_private', :access_token => 'access_token' do
7
+ photos = GSGraph::Album.new('12345', :access_token => 'access_token').photos
8
+ photos.each do |photo|
9
+ photo.should be_instance_of(GSGraph::Photo)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ describe GSGraph::Connections::Photos, '#photo!' do
17
+ it 'should return generated photo' do
18
+ mock_graph :post, '12345/photos', 'albums/photos/post_with_valid_access_token' do
19
+ photo = GSGraph::Album.new('12345', :access_token => 'valid').photo!(
20
+ :source => Tempfile.new('image_file'),
21
+ :message => 'Hello, where is photo?'
22
+ )
23
+ photo.identifier.should == 401111132276
24
+ photo.name.should == 'Hello, where is photo?'
25
+ photo.access_token.should == 'valid'
26
+ end
27
+ end
28
+
29
+ it 'should support Tag' do
30
+ mock_graph :post, '12345/photos', 'albums/photos/post_with_valid_access_token' do
31
+ photo = GSGraph::Album.new('12345', :access_token => 'valid').photo!(
32
+ :source => Tempfile.new('image_file'),
33
+ :message => 'Hello, where is photo?',
34
+ :tags => [GSGraph::Tag.new(:id => 12345, :name => 'me', :x => 0, :y => 10)]
35
+ )
36
+ photo.tags.should == [GSGraph::Tag.new(:id => 12345, :name => 'me', :x => 0, :y => 10)]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Picture do
4
+ describe '#picture' do
5
+ context 'when included by GSGraph::User' do
6
+ it 'should return image url' do
7
+ GSGraph::User.new('matake').picture.should == File.join(GSGraph::graph_url, 'matake/picture')
8
+ end
9
+
10
+ it 'should support size option' do
11
+ [:square, :small, :normal, :large].each do |size|
12
+ GSGraph::User.new('matake').picture(size).should == File.join(GSGraph::graph_url, "matake/picture?type=#{size}")
13
+ GSGraph::User.new('matake').picture(:type => size).should == File.join(GSGraph::graph_url, "matake/picture?type=#{size}")
14
+ end
15
+ end
16
+
17
+ it 'should support width option' do
18
+ GSGraph::User.new('matake').picture(:width => 13).should == File.join(GSGraph::graph_url, "matake/picture?width=13")
19
+ end
20
+
21
+ it 'should support height option' do
22
+ GSGraph::User.new('matake').picture(:height => 37).should == File.join(GSGraph::graph_url, "matake/picture?height=37")
23
+ end
24
+
25
+ it 'should support width and height options at the same time' do
26
+ # Because we can't be sure of order of arguments and order by itself doesn't matter
27
+ GSGraph::User.new('matake').picture(:width => 13, :height => 37).should satisfy { |uri|
28
+ [
29
+ File.join(GSGraph::graph_url, "matake/picture?width=13&height=37"),
30
+ File.join(GSGraph::graph_url, "matake/picture?height=37&width=13")
31
+ ].include? uri
32
+ }
33
+ end
34
+
35
+ context 'when no-redirect' do
36
+ it 'should return Picture object' do
37
+ mock_graph :get, 'matake/picture', 'users/picture/success', :params => {
38
+ :redirect => 'false'
39
+ } do
40
+ picture = GSGraph::User.new('matake').picture(:redirect => false)
41
+ picture.should be_instance_of GSGraph::Picture
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ context 'when included by GSGraph::Page' do
48
+ it 'should return image url' do
49
+ GSGraph::Page.new('platform').picture.should == File.join(GSGraph::graph_url, 'platform/picture')
50
+ end
51
+
52
+ it 'should support size option' do
53
+ [:square, :small, :normal, :large].each do |size|
54
+ GSGraph::Page.new('platform').picture(size).should == File.join(GSGraph::graph_url, "platform/picture?type=#{size}")
55
+ GSGraph::Page.new('platform').picture(:type => size).should == File.join(GSGraph::graph_url, "platform/picture?type=#{size}")
56
+ end
57
+ end
58
+
59
+ it 'should support width option' do
60
+ GSGraph::Page.new('platform').picture(:width => 13).should == File.join(GSGraph::graph_url, "platform/picture?width=13")
61
+ end
62
+
63
+ it 'should support height option' do
64
+ GSGraph::Page.new('platform').picture(:height => 37).should == File.join(GSGraph::graph_url, "platform/picture?height=37")
65
+ end
66
+
67
+ it 'should support width and height options at the same time' do
68
+ GSGraph::Page.new('platform').picture(:width => 13, :height => 37).should satisfy { |uri|
69
+ [
70
+ File.join(GSGraph::graph_url, "platform/picture?width=13&height=37"),
71
+ File.join(GSGraph::graph_url, "platform/picture?height=37&width=13")
72
+ ].include? uri
73
+ }
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ describe GSGraph::Connections::Picture::Updatable do
80
+ describe '#picture!' do
81
+ it 'should update profile picture' do
82
+ mock_graph :post, 'GSGraph/picture', 'true', :access_token => 'page_token', :params => {
83
+ :picture => 'http://example.com/images/GSGraph.png'
84
+ } do
85
+ page = GSGraph::Page.new('GSGraph', :access_token => 'page_token')
86
+ page.picture!(
87
+ :picture => 'http://example.com/images/GSGraph.png'
88
+ ).should be_true
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Pokes do
4
+ describe '#pokes' do
5
+ it 'should return an Array of Poke' do
6
+ mock_graph :get, 'me/pokes', 'users/pokes/sample', :access_token => 'access_token' do
7
+ pokes = GSGraph::User.me('access_token').pokes
8
+ pokes.should be_instance_of GSGraph::Connection
9
+ pokes.should be_present
10
+ pokes.each do |poke|
11
+ poke.should be_instance_of GSGraph::Poke
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Posts, '#posts' do
4
+ context 'when included by GSGraph::User' do
5
+ context 'when no access_token given' do
6
+ it 'should return public posts the user created as GSGraph::Post' do
7
+ mock_graph :get, 'arjun/posts', 'users/posts/arjun_public' do
8
+ posts = GSGraph::User.new('arjun').posts
9
+ posts.first.should == GSGraph::Post.new(
10
+ '7901103_121392141207495',
11
+ :from => {
12
+ :id => '7901103',
13
+ :name => 'Arjun Banker'
14
+ },
15
+ :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',
16
+ :link => 'http://www.ted.com/talks/wade_davis_on_endangered_cultures.html',
17
+ :name => 'Wade Davis on endangered cultures | Video on TED.com',
18
+ :caption => 'www.ted.com',
19
+ :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.',
20
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/z9XZ8/hash/976ulj6z.gif',
21
+ :created_time => '2010-04-25T04:05:32+0000',
22
+ :updated_time => '2010-04-25T04:05:32+0000',
23
+ :privacy => {
24
+ :value => 'EVERYONE'
25
+ }
26
+ )
27
+ posts.each do |post|
28
+ post.should be_instance_of(GSGraph::Post)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end