gs_graph 2.6.5

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 (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,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Tabs do
4
+ let(:page) { GSGraph::Page.new('GSGraph', :access_token => 'page_token') }
5
+
6
+ describe '#tabs' do
7
+ it 'should return tabs as GSGraph::Tab' do
8
+ mock_graph :get, 'GSGraph/tabs', 'pages/tabs/gs_graph', :access_token => 'page_token' do
9
+ page.tabs.each do |tab|
10
+ tab.should be_a GSGraph::Tab
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '#tab!' do
17
+ it 'should add a tab' do
18
+ mock_graph :post, 'GSGraph/tabs', 'true', :access_token => 'page_token', :params => {
19
+ :app_id => '12345'
20
+ } do
21
+ page.tab!(:app_id => 12345).should be_true
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#tab?' do
27
+ context 'when installed' do
28
+ it 'shoud return true' do
29
+ mock_graph :get, 'GSGraph/tabs/wall', 'pages/tabs/wall', :access_token => 'page_token' do
30
+ page.tab?(
31
+ GSGraph::Application.new('wall')
32
+ ).should be_true
33
+ end
34
+ end
35
+ end
36
+
37
+ context 'otherwise' do
38
+ it 'shoud return false' do
39
+ mock_graph :get, 'GSGraph/tabs/app_id', 'pages/tabs/blank', :access_token => 'page_token' do
40
+ page.tab?(
41
+ GSGraph::Application.new('app_id')
42
+ ).should be_false
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe GSGraph::Connections::Tagged, '#tagged' do
5
+ context 'when included by GSGraph::User' do
6
+ context 'when no access_token given' do
7
+ it 'should return posts the user has been tagged as GSGraph::Post' do
8
+ mock_graph :get, 'arjun/tagged', 'users/tagged/arjun_public' do
9
+ posts = GSGraph::User.new('arjun').tagged
10
+ posts.first.should == GSGraph::Post.new(
11
+ '7901103_117809521578252',
12
+ :from => {
13
+ :id => '1404401889',
14
+ :name => 'Elli Mooney'
15
+ },
16
+ :to => {
17
+ :data => [{
18
+ :id => '7901103',
19
+ :name => 'Arjun Banker'
20
+ }]
21
+ },
22
+ :message => '...uh oh, here comes a privacy issue....',
23
+ :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',
24
+ :link => 'http://venturebeat.com/2010/04/23/blippy-credit-card-citibank/',
25
+ :name => 'Blippy users’ credit card numbers found on Google | VentureBeat',
26
+ :caption => 'venturebeat.com',
27
+ :description => '[Update: Blippy cofounder Philip Kaplan emailed a response. CNET News is reporting that the cards in question were issued by ...',
28
+ :icon => 'http://static.ak.fbcdn.net/rsrc.php/zB010/hash/9yvl71tw.gif',
29
+ :created_time => '2010-04-24T08:07:59+0000',
30
+ :updated_time => '2010-04-24T08:07:59+0000',
31
+ :privacy => {
32
+ :value => 'EVERYONE'
33
+ }
34
+ )
35
+ posts.each do |post|
36
+ post.should be_instance_of(GSGraph::Post)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Tags do
4
+ let :photo do
5
+ mock_graph :get, 'with_tags', 'photos/with_tags' do
6
+ GSGraph::Photo.fetch('with_tags')
7
+ end
8
+ end
9
+
10
+ describe '#tags' do
11
+ context 'when cached' do
12
+ it 'should not make request' do
13
+ expect { photo.tags }.not_to request_to "#{photo.identifier}/tags"
14
+ end
15
+ it 'should make request when any options are specified' do
16
+ expect { photo.tags(:no_cache => true) }.to request_to "#{photo.identifier}/tags"
17
+ end
18
+ end
19
+ end
20
+
21
+ describe GSGraph::Connections::Tags::Taggable do
22
+ describe '#tag!' do
23
+ it 'should post a tag' do
24
+ expect do
25
+ photo.tag!(:to => 'matake', :x => 50, :y => 50)
26
+ end.to request_to "#{photo.identifier}/tags", :post
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Television, '#television' do
4
+ it 'should return television pages as GSGraph::Page' do
5
+ mock_graph :get, 'matake/television', 'users/television/matake_private', :access_token => 'access_token' do
6
+ pages = GSGraph::User.new('matake', :access_token => 'access_token').television
7
+ pages.each do |page|
8
+ page.should be_instance_of(GSGraph::Page)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::TestUsers do
4
+ describe '#test_users' do
5
+ before do
6
+ @app = GSGraph::Application.new('client_id', :secret => 'secret')
7
+ end
8
+
9
+ context 'when access_token is not given' do
10
+ it 'should get access_token first' do
11
+ lambda do
12
+ @app.test_users
13
+ end.should request_to('oauth/access_token', :post)
14
+ end
15
+ end
16
+
17
+ context 'when access_token is given' do
18
+ it 'should return test_users as GSGraph::TestUser' do
19
+ mock_graph :get, 'client_id/accounts/test-users', 'applications/test_users/private', :access_token => 'access_token' do
20
+ @app.access_token = 'access_token'
21
+ test_users = @app.test_users
22
+ test_users.each do |test_user|
23
+ test_user.should be_instance_of(GSGraph::TestUser)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ describe '#test_user!' do
31
+ before do
32
+ @app = GSGraph::Application.new('client_id', :secret => 'secret')
33
+ end
34
+
35
+ context 'when access_token is not given' do
36
+ it 'should get access_token first' do
37
+ lambda do
38
+ @app.test_user!
39
+ end.should request_to('oauth/access_token', :post)
40
+ end
41
+ end
42
+
43
+ context 'when access_token is given' do
44
+ before do
45
+ @app.access_token = 'access_token'
46
+ end
47
+
48
+ it 'should return a GSGraph::TestUser' do
49
+ mock_graph :post, 'client_id/accounts/test-users', 'applications/test_users/created' do
50
+ @app.test_user!.should be_instance_of GSGraph::TestUser
51
+ end
52
+ end
53
+
54
+ context 'when installed=false' do
55
+ it 'should post "installed=false" as params' do
56
+ mock_graph :post, 'client_id/accounts/test-users', 'applications/test_users/created', :access_token => 'access_token', :params => {
57
+ :installed => 'false'
58
+ } do
59
+ @app.test_user!(:installed => false)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Threads, '#threads' do
4
+ it 'should return threads as GSGraph::Thread' do
5
+ mock_graph :get, 'me/threads', 'users/threads/me_private', :access_token => 'access_token' do
6
+ threads = GSGraph::User.me('access_token').threads
7
+ threads.each do |thread|
8
+ thread.should be_instance_of(GSGraph::Thread)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::UserAchievements do
4
+ let(:user) { GSGraph::User.new('matake', :access_token => 'access_token') }
5
+
6
+ describe '#achievements' do
7
+ it 'should return an Array of GSGraph::UserAchievement' do
8
+ mock_graph :get, 'matake/achievements', 'users/user_achievements/sample', :access_token => 'access_token' do
9
+ user.achievements.each do |achievement|
10
+ achievement.should be_instance_of GSGraph::UserAchievement
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '#achieve!' do
17
+ let(:achievement_url) { 'http://fbgraphsample.heroku.com/achievements/1' }
18
+ it 'should return GSGraph::UserAchievement' do
19
+ mock_graph :post, 'matake/achievements', 'users/user_achievements/created', :access_token => 'access_token', :params => {
20
+ :achievement => achievement_url
21
+ } do
22
+ user.achieve!(achievement_url).should be_instance_of GSGraph::UserAchievement
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '#unachieve!' do
28
+ let(:achievement_url) { 'http://fbgraphsample.heroku.com/achievements/1' }
29
+ it 'should return true' do
30
+ mock_graph :delete, 'matake/achievements', 'true', :access_token => 'access_token', :params => {
31
+ :achievement => achievement_url
32
+ } do
33
+ user.unachieve!(achievement_url).should be_true
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe GSGraph::Connections::Likes do
5
+ describe '#likes' do
6
+ context 'when no access_token given' do
7
+ it 'should raise GSGraph::Unauthorized' do
8
+ mock_graph :get, 'arjun/likes', 'users/likes/arjun_public', :status => [401, 'Unauthorized'] do
9
+ lambda do
10
+ GSGraph::User.new('arjun').likes
11
+ end.should raise_exception(GSGraph::Unauthorized)
12
+ end
13
+ end
14
+ end
15
+
16
+ context 'when access_token is given' do
17
+ it 'should return liked pages as GSGraph::Page' do
18
+ mock_graph :get, 'arjun/likes', 'users/likes/arjun_private', :access_token => 'access_token' do
19
+ likes = GSGraph::User.new('arjun', :access_token => 'access_token').likes
20
+ likes.first.should == GSGraph::Page.new(
21
+ '378209722137',
22
+ :access_token => 'access_token',
23
+ :name => 'Doing Things at the Last Minute',
24
+ :category => '活動'
25
+ )
26
+ likes.each do |like|
27
+ like.should be_instance_of(GSGraph::Page)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ describe '#like?' do
35
+ let(:user) { GSGraph::User.new(579612276, :access_token => 'access_token') }
36
+ let(:gs_graph) { GSGraph::Page.new(117513961602338) }
37
+ let(:poken) { GSGraph::Page.new(1234567890) }
38
+
39
+ context 'when liked' do
40
+ it 'should retrun true' do
41
+ mock_graph :get, '579612276/likes/117513961602338', 'users/likes/gs_graph', :access_token => 'access_token' do
42
+ user.like?(gs_graph).should be_true
43
+ end
44
+ end
45
+ end
46
+
47
+ context 'otherwise' do
48
+ it 'should retrun true' do
49
+ mock_graph :get, '579612276/likes/1234567890', 'users/likes/poken', :access_token => 'access_token' do
50
+ user.like?(poken).should be_false
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Videos do
4
+ describe '#videos' do
5
+ it 'should return videos as GSGraph::Video' do
6
+ mock_graph :get, 'kirk/videos', 'users/videos/kirk_private', :access_token => 'access_token' do
7
+ videos = GSGraph::User.new('kirk', :access_token => 'access_token').videos
8
+ videos.each do |video|
9
+ video.should be_instance_of(GSGraph::Video)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ describe '#video!' do
16
+ it 'should return generated photo' do
17
+ mock_graph :post, 'me/videos', 'users/videos/posted' do
18
+ me = GSGraph::User.me('access_token')
19
+ video = me.video!(
20
+ :source => Tempfile.new('movie_file')
21
+ )
22
+ video.should be_a GSGraph::Video
23
+ video.identifier.should == '10150241488822277'
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Votes, '#votes' do
4
+ context 'when included by GSGraph::QuestionOption' do
5
+ it 'should return votes with user id and name' do
6
+ mock_graph :get, '12345/votes', 'questions/options/votes/matake_private', :access_token => 'access_token' do
7
+ votes = GSGraph::QuestionOption.new('12345', :access_token => 'access_token').votes
8
+ votes.each do |vote|
9
+ vote["id"].should_not be_blank
10
+ vote["name"].should_not be_blank
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Debugger::RequestFilter do
4
+ let(:resource_endpoint) { 'https://graph.gamestamper.com/matake' }
5
+ let(:request) { HTTP::Message.new_request(:get, URI.parse(resource_endpoint)) }
6
+ let(:response) { HTTP::Message.new_response({:hello => 'world'}.to_json) }
7
+ let(:request_filter) { GSGraph::Debugger::RequestFilter.new }
8
+
9
+ describe '#filter_request' do
10
+ it 'should log request' do
11
+ [
12
+ "======= [GSGraph] API REQUEST STARTED =======",
13
+ request.dump
14
+ ].each do |output|
15
+ GSGraph.logger.should_receive(:info).with output
16
+ end
17
+ request_filter.filter_request(request)
18
+ end
19
+ end
20
+
21
+ describe '#filter_response' do
22
+ it 'should log response' do
23
+ [
24
+ "--------------------------------------------------",
25
+ response.dump,
26
+ "======= [GSGraph] API REQUEST FINISHED ======="
27
+ ].each do |output|
28
+ GSGraph.logger.should_receive(:info).with output
29
+ end
30
+ request_filter.filter_response(request, response)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Doc do
4
+ describe '.new' do
5
+ let :attributes do
6
+ {
7
+ :id => '12345',
8
+ :from => {
9
+ :id => '123456',
10
+ :name => 'Nov Matake'
11
+ },
12
+ :subject => 'Subject',
13
+ :icon => 'https://s-static.ak.gamestamper.com/rsrc.php/v1/yi/r/-64q65AWgXb.png',
14
+ :updated_time => '2011-03-12T02:43:04+0000',
15
+ :revision => 207279219287628
16
+ }
17
+ end
18
+ it 'should setup all supported attributes' do
19
+ doc = GSGraph::Doc.new(attributes[:id], attributes)
20
+ doc.identifier.should == '12345'
21
+ doc.from.should == GSGraph::User.new('123456', :name => 'Nov Matake')
22
+ doc.subject.should == 'Subject'
23
+ doc.icon.should == 'https://s-static.ak.gamestamper.com/rsrc.php/v1/yi/r/-64q65AWgXb.png'
24
+ doc.revision.should == 207279219287628
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Domain do
4
+ describe '.search' do
5
+ let :results do
6
+ mock_graph :get, '/', 'domains/search_public', :params => {
7
+ :domains => 'apple.com,fake.com'
8
+ } do
9
+ GSGraph::Domain.search('apple.com')
10
+ end
11
+ end
12
+
13
+ it 'should return array of GSGraph::Domain' do
14
+ results.each do |result|
15
+ result.should be_instance_of(GSGraph::Domain)
16
+ end
17
+ end
18
+
19
+ it 'should ignore fake.com' do
20
+ results.collect(&:name).should_not include 'fake.com'
21
+ end
22
+ end
23
+ end