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,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::PromotablePosts do
4
+ describe '#promotable_posts' do
5
+ it 'should return promotable posts the user created as GSGraph::Post' do
6
+ mock_graph :get, 'GSGraph/promotable_posts', 'pages/promotable_posts/sample', :access_token => 'access_token' do
7
+ posts = GSGraph::Page.new('GSGraph', :access_token => 'access_token').promotable_posts
8
+ posts.class.should == GSGraph::Connection
9
+ posts.count.should == 4
10
+ posts.each.with_index do |post, index|
11
+ post.should be_instance_of GSGraph::PromotablePost
12
+ case index
13
+ when 0
14
+ post.is_published.should be_false
15
+ post.scheduled_publish_time.should == Time.at(1352473200)
16
+ else
17
+ post.is_published.should be_true
18
+ post.scheduled_publish_time.should be_nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::QuestionOptions, '#options' do
4
+ context 'when included by GSGraph::Question' do
5
+ it 'should return options as GSGraph::QuestionOption' do
6
+ mock_graph :get, '12345/options', 'questions/options/matake_private', :access_token => 'access_token' do
7
+ question_options = GSGraph::Question.new('12345', :access_token => 'access_token').question_options
8
+ question_options.each do |question_option|
9
+ question_option.should be_instance_of(GSGraph::QuestionOption)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Questions do
4
+ describe '#questions' do
5
+ it 'should return an Array of Questions' do
6
+ mock_graph :get, 'me/questions', 'users/questions/sample', :access_token => 'access_token' do
7
+ questions = GSGraph::User.me('access_token').questions
8
+ questions.class.should == GSGraph::Connection
9
+ questions.each do |question|
10
+ question.should be_instance_of(GSGraph::Question)
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '#question!' do
17
+ it 'should return GSGraph::Question without cached question_options collection' do
18
+ mock_graph :post, 'me/questions', 'users/questions/created', :params => {
19
+ :question => 'Do you like gs_graph?',
20
+ :options => ['Yes', 'Yes!', 'Yes!!'].to_json
21
+ }, :access_token => 'access_token' do
22
+ question = GSGraph::User.me('access_token').question!(
23
+ :question => 'Do you like gs_graph?',
24
+ :options => ['Yes', 'Yes!', 'Yes!!']
25
+ )
26
+ question.should be_instance_of(GSGraph::Question)
27
+ expect { question.question_options }.to request_to "#{question.identifier}/options"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::ReachEstimates, '#reach_estimates' do
4
+ context 'when included by GSGraph::AdAccount' do
5
+ context 'when access_token is given' do
6
+ it 'should return reach_estimates as GSGraph::ReachEstimate' do
7
+ mock_graph :get, 'act_123456789/reachestimate', 'ad_accounts/reach_estimates/test_reach_estimates', :params => {
8
+ :targeting_spec => {:country => ["US"]}.to_json
9
+ }, :access_token => 'access_token' do
10
+ ad_account = GSGraph::AdAccount.new('act_123456789')
11
+ reach_estimate = ad_account.reach_estimates(:access_token => 'access_token', :targeting_spec => {:country => ["US"]})
12
+ reach_estimate.should be_instance_of(GSGraph::ReachEstimate)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Roles do
4
+ let(:app) do
5
+ GSGraph::Application.new('app_id', :secret => 'app_secret')
6
+ end
7
+
8
+ describe '#roles' do
9
+ it 'should return an Array of GSGraph::Role' do
10
+ mock_graph :post, 'oauth/access_token', 'app_token_response' do
11
+ mock_graph :get, 'app_id/roles', 'applications/roles/list', :access_token => 'app_token' do
12
+ roles = app.roles
13
+ roles.should be_instance_of GSGraph::Connection
14
+ roles.each do |role|
15
+ role.should be_instance_of GSGraph::Role
16
+ end
17
+ roles.first.user.should == GSGraph::User.new('579612276')
18
+ roles.first.application.== GSGraph::Application.new('210798282372757')
19
+ roles.first.role.should == 'administrators'
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ {
26
+ :admin! => 'administrators',
27
+ :developer! => 'developers',
28
+ :tester! => 'testers',
29
+ :insights_user! => 'insights users'
30
+ }.each do |method, role|
31
+ describe "##{method}" do
32
+ it 'should return true' do
33
+ mock_graph :post, 'app_id/roles', 'true', :access_token => 'admin_user_token', :params => {
34
+ :user => 'new_admin_uid',
35
+ :role => role
36
+ } do
37
+ app.send(
38
+ method,
39
+ GSGraph::User.new('new_admin_uid'),
40
+ :access_token => 'admin_user_token'
41
+ ).should be_true
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '#unrole!' do
48
+ it 'should return true' do
49
+ mock_graph :delete, 'app_id/roles', 'true', :access_token => 'role_owner_token', :params => {
50
+ :user => 'role_owner_uid'
51
+ } do
52
+ app.unrole!(
53
+ GSGraph::User.new('role_owner_uid'),
54
+ :access_token => 'role_owner_token'
55
+ ).should be_true
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Scores do
4
+ let(:user) { GSGraph::User.new('matake', :access_token => 'user_access_token') }
5
+ let(:app) { GSGraph::Application.new('GSGraph', :access_token => 'app_access_token') }
6
+
7
+ describe '#scores' do
8
+ it 'should return an Array of Score' do
9
+ mock_graph :get, 'matake/scores', 'users/scores/sample', :access_token => 'user_access_token' do
10
+ scores = user.scores
11
+ scores.should be_a Array
12
+ scores.should_not be_blank
13
+ scores.each do |score|
14
+ score.should be_instance_of GSGraph::Score
15
+ score.user.should be_instance_of GSGraph::User
16
+ score.application.should be_instance_of GSGraph::Application
17
+ score.score.should be_a Integer
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '#score!' do
24
+ it 'should return true' do
25
+ mock_graph :post, 'matake/scores', 'true', :access_token => 'app_access_token', :params => {
26
+ :score => '10'
27
+ } do
28
+ user.score!(10, :access_token => app.access_token).should be_true
29
+ end
30
+ end
31
+ end
32
+
33
+ describe '#unscore!' do
34
+ it 'should return true' do
35
+ mock_graph :delete, 'matake/scores', 'true', :access_token => 'app_access_token' do
36
+ user.unscore!(:access_token => app.access_token).should be_true
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Senders, '#senders' do
4
+ it 'should return senders as GSGraph::User' do
5
+ mock_graph :get, '12345/senders', 'thread/senders/private', :params => {:no_cache => 'true'}, :access_token => 'access_token' do
6
+ senders = GSGraph::Thread.new(12345, :access_token => 'access_token').senders(:no_cache => true)
7
+ senders.each do |sender|
8
+ sender.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', :senders => {}) }
16
+
17
+ it 'should use cache' do
18
+ lambda do
19
+ thread.senders
20
+ end.should_not request_to '12345/senders?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.senders(:no_cache => true)
27
+ end.should request_to '12345/senders?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.senders
38
+ end.should request_to '12345/senders?access_token=access_token'
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Settings do
4
+
5
+ describe '#settings' do
6
+ subject do
7
+ mock_graph :get, 'sample/settings', 'pages/settings/sample', :access_token => 'page_token' do
8
+ GSGraph::Page.new('sample').settings(:access_token => 'page_token')
9
+ end
10
+ end
11
+
12
+ it do
13
+ should == [
14
+ :users_can_post,
15
+ :users_can_post_photos,
16
+ :users_can_post_videos
17
+ ]
18
+ end
19
+ end
20
+
21
+ describe 'setting specific methods' do
22
+ let(:page) { GSGraph::Page.new('page_id', :access_token => 'page_token') }
23
+
24
+ before do
25
+ mock_graph :get, 'page_id/settings', 'pages/settings/all_enabled', :access_token => 'page_token' do
26
+ page.settings # cache settings
27
+ end
28
+ end
29
+
30
+ GSGraph::Connections::Settings::AVAILABLE_SETTINGS.each do |setting|
31
+ describe "##{setting}?" do
32
+ it { page.send(:"#{setting}?").should be_true }
33
+
34
+ context 'when no_cache specified' do
35
+ it 'should request API' do
36
+ expect { page.send(:"#{setting}?", :no_cache => true) }.to request_to 'page_id/settings'
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#{setting}!" do
42
+ it "should enable it" do
43
+ mock_graph :post, 'page_id/settings', 'true', :access_token => 'page_token', :params => {
44
+ :setting => setting.to_s.upcase, :value => 'true'
45
+ } do
46
+ page.send(:"#{setting}!").should be_true
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "#{setting.to_s.sub('can', 'cannot')}!" do
52
+ it "should disable it" do
53
+ mock_graph :post, 'page_id/settings', 'true', :access_token => 'page_token', :params => {
54
+ :setting => setting.to_s.upcase, :value => 'false'
55
+ } do
56
+ page.send(:"#{setting.to_s.sub('can', 'cannot')}!").should be_true
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Statuses, '#statuses' do
4
+
5
+ context 'when included by GSGraph::User' do
6
+ context 'when no access_token given' do
7
+ it 'should raise GSGraph::Unauthorized' do
8
+ mock_graph :get, 'arjun/statuses', 'users/statuses/arjun_public', :status => [401, 'Unauthorized'] do
9
+ lambda do
10
+ GSGraph::User.new('arjun').statuses
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 statuses as GSGraph::Status' do
18
+ mock_graph :get, 'arjun/statuses', 'users/statuses/arjun_private', :access_token => 'access_token' do
19
+ statuses = GSGraph::User.new('arjun', :access_token => 'access_token').statuses
20
+ statuses.first.should == GSGraph::Status.new(
21
+ '113559395341627',
22
+ :access_token => 'access_token',
23
+ :from => {
24
+ :id => '7901103',
25
+ :name => 'Arjun Banker'
26
+ },
27
+ :message => 'http://www.gamestamper.com/photo.php?pid=60538827&l=79b44ffb74&id=7901103',
28
+ :updated_time => '2010-04-21T21:10:16+0000'
29
+ )
30
+ statuses.each do |status|
31
+ status.should be_instance_of(GSGraph::Status)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ context 'when included by GSGraph::Page' do
39
+ context 'when no access_token given' do
40
+ it 'should raise GSGraph::Unauthorized' do
41
+ mock_graph :get, 'platform/statuses', 'pages/statuses/platform_public', :status => [401, 'Unauthorized'] do
42
+ lambda do
43
+ GSGraph::Page.new('platform').statuses
44
+ end.should raise_exception(GSGraph::Unauthorized)
45
+ end
46
+ end
47
+ end
48
+
49
+ context 'when access_token is given' do
50
+ it 'should return statuses as GSGraph::Status' do
51
+ mock_graph :get, 'platform/statuses', 'pages/statuses/platform_private', :access_token => 'access_token' do
52
+ statuses = GSGraph::Page.new('platform', :access_token => 'access_token').statuses
53
+ statuses.first.should == GSGraph::Status.new(
54
+ '111081598927600',
55
+ :access_token => 'access_token',
56
+ :from => {
57
+ :id => '19292868552',
58
+ :name => 'Facebook Platform',
59
+ :category => 'Technology'
60
+ },
61
+ :message => 'Here\'s more information on the new social plugins announced at f8 today - http://bit.ly/db8ahS',
62
+ :updated_time => '2010-04-21T20:17:04+0000'
63
+ )
64
+ statuses.each do |status|
65
+ status.should be_instance_of(GSGraph::Status)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::SubscribedTo do
4
+ it 'should return subscribees as GSGraph::User' do
5
+ mock_graph :get, 'me/subscribedto', 'users/subscribed_to/sample', :access_token => 'access_token' do
6
+ subscribees = GSGraph::User.me('access_token').subscribed_to
7
+ subscribees.each do |subscribee|
8
+ subscribee.should be_instance_of GSGraph::User
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Subscribers do
4
+ it 'should return subscribers as GSGraph::User' do
5
+ mock_graph :get, 'me/subscribers', 'users/subscribers/sample', :access_token => 'access_token' do
6
+ subscribers = GSGraph::User.me('access_token').subscribers
7
+ subscribers.each do |subscriber|
8
+ subscriber.should be_instance_of GSGraph::User
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe GSGraph::Connections::Subscriptions, '#subscriptions' do
4
+ context 'when included by GSGraph::Application' do
5
+ context 'when access_token is given' do
6
+ it 'should return liked pages as GSGraph::Page' do
7
+ mock_graph :get, 'gs_graph/subscriptions', 'applications/subscriptions/gs_graph_private', :access_token => 'access_token' do
8
+ subscriptions = GSGraph::Application.new('gs_graph', :access_token => 'access_token').subscriptions
9
+ subscriptions.each do |subscription|
10
+ subscription.should be_instance_of(GSGraph::Subscription)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ describe GSGraph::Connections::Subscriptions, '#subscribe!' do
19
+ before do
20
+ @app = GSGraph::Application.new('gs_graph', :access_token => 'access_token')
21
+ end
22
+
23
+ it 'should POST to /:app_id/subscriptions' do
24
+ lambda do
25
+ @app.subscribe!(
26
+ :object => "user",
27
+ :fields => "name,email",
28
+ :callback_url => "http://fbgraphsample.heroku.com/subscription",
29
+ :verify_token => "Define by yourself"
30
+ )
31
+ end.should request_to 'gs_graph/subscriptions', :post
32
+ end
33
+ end
34
+
35
+ describe GSGraph::Connections::Subscriptions, '#unsubscribe!' do
36
+ before do
37
+ @app = GSGraph::Application.new('gs_graph', :access_token => 'access_token')
38
+ end
39
+
40
+ it 'should DELETE /:app_id/subscriptions' do
41
+ mock_graph :delete, 'gs_graph/subscriptions', 'true', :params => {:object => 'user'}, :access_token => 'access_token' do
42
+ @app.unsubscribe!(
43
+ :object => 'user'
44
+ )
45
+ end
46
+ end
47
+ end