slack-ruby-client 0.14.4 → 0.14.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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +19 -11
  3. data/.rubocop_todo.yml +66 -47
  4. data/CHANGELOG.md +8 -0
  5. data/Dangerfile +1 -0
  6. data/Gemfile +1 -0
  7. data/README.md +16 -9
  8. data/Rakefile +1 -0
  9. data/bin/commands.rb +6 -0
  10. data/bin/commands/admin_apps.rb +27 -0
  11. data/bin/commands/admin_apps_requests.rb +16 -0
  12. data/bin/commands/admin_users_session.rb +3 -2
  13. data/bin/commands/api.rb +3 -2
  14. data/bin/commands/apps.rb +3 -2
  15. data/bin/commands/apps_permissions.rb +5 -4
  16. data/bin/commands/apps_permissions_resources.rb +3 -2
  17. data/bin/commands/apps_permissions_scopes.rb +3 -2
  18. data/bin/commands/apps_permissions_users.rb +5 -4
  19. data/bin/commands/auth.rb +5 -4
  20. data/bin/commands/bots.rb +3 -2
  21. data/bin/commands/channels.rb +31 -30
  22. data/bin/commands/chat.rb +19 -18
  23. data/bin/commands/chat_scheduledMessages.rb +3 -2
  24. data/bin/commands/conversations.rb +35 -34
  25. data/bin/commands/dialog.rb +3 -2
  26. data/bin/commands/dnd.rb +9 -8
  27. data/bin/commands/emoji.rb +3 -2
  28. data/bin/commands/files.rb +13 -12
  29. data/bin/commands/files_comments.rb +3 -2
  30. data/bin/commands/files_remote.rb +78 -0
  31. data/bin/commands/groups.rb +33 -32
  32. data/bin/commands/im.rb +13 -12
  33. data/bin/commands/migration.rb +3 -2
  34. data/bin/commands/mpim.rb +11 -10
  35. data/bin/commands/oauth.rb +5 -4
  36. data/bin/commands/oauth_v2.rb +17 -0
  37. data/bin/commands/pins.rb +7 -8
  38. data/bin/commands/reactions.rb +10 -11
  39. data/bin/commands/reminders.rb +11 -10
  40. data/bin/commands/rtm.rb +5 -4
  41. data/bin/commands/search.rb +7 -6
  42. data/bin/commands/stars.rb +7 -6
  43. data/bin/commands/team.rb +9 -8
  44. data/bin/commands/team_profile.rb +3 -2
  45. data/bin/commands/usergroups.rb +11 -10
  46. data/bin/commands/usergroups_users.rb +5 -4
  47. data/bin/commands/users.rb +21 -20
  48. data/bin/commands/users_admin.rb +1 -0
  49. data/bin/commands/users_prefs.rb +1 -0
  50. data/bin/commands/users_profile.rb +5 -4
  51. data/bin/commands/views.rb +48 -0
  52. data/bin/slack +1 -2
  53. data/examples/hi_real_time/Gemfile +1 -0
  54. data/examples/hi_real_time/hi.rb +7 -3
  55. data/examples/hi_real_time_and_web/Gemfile +1 -0
  56. data/examples/hi_real_time_and_web/hi.rb +7 -3
  57. data/examples/hi_real_time_async_async/Gemfile +1 -0
  58. data/examples/hi_real_time_async_async/hi.rb +6 -2
  59. data/examples/hi_real_time_async_celluloid/Gemfile +1 -0
  60. data/examples/hi_real_time_async_celluloid/hi.rb +7 -3
  61. data/examples/hi_real_time_async_eventmachine/Gemfile +1 -0
  62. data/examples/hi_real_time_async_eventmachine/hi.rb +7 -3
  63. data/examples/hi_web/Gemfile +1 -0
  64. data/examples/hi_web/hi.rb +1 -0
  65. data/examples/new_ticket/Gemfile +1 -0
  66. data/examples/new_ticket/new_ticket.rb +1 -0
  67. data/lib/slack-ruby-client.rb +3 -2
  68. data/lib/slack.rb +1 -0
  69. data/lib/slack/config.rb +1 -0
  70. data/lib/slack/events/config.rb +1 -0
  71. data/lib/slack/events/request.rb +3 -1
  72. data/lib/slack/logger.rb +6 -5
  73. data/lib/slack/messages/formatting.rb +1 -0
  74. data/lib/slack/messages/message.rb +1 -0
  75. data/lib/slack/real_time/api/message.rb +3 -1
  76. data/lib/slack/real_time/api/message_id.rb +1 -0
  77. data/lib/slack/real_time/api/ping.rb +5 -2
  78. data/lib/slack/real_time/api/typing.rb +3 -1
  79. data/lib/slack/real_time/client.rb +19 -12
  80. data/lib/slack/real_time/concurrency.rb +1 -0
  81. data/lib/slack/real_time/concurrency/async.rb +15 -7
  82. data/lib/slack/real_time/concurrency/celluloid.rb +9 -3
  83. data/lib/slack/real_time/concurrency/eventmachine.rb +7 -4
  84. data/lib/slack/real_time/config.rb +6 -1
  85. data/lib/slack/real_time/models.rb +1 -0
  86. data/lib/slack/real_time/models/base.rb +1 -0
  87. data/lib/slack/real_time/models/bot.rb +1 -0
  88. data/lib/slack/real_time/models/channel.rb +1 -0
  89. data/lib/slack/real_time/models/group.rb +1 -0
  90. data/lib/slack/real_time/models/im.rb +1 -0
  91. data/lib/slack/real_time/models/team.rb +1 -0
  92. data/lib/slack/real_time/models/user.rb +1 -0
  93. data/lib/slack/real_time/socket.rb +14 -11
  94. data/lib/slack/real_time/stores.rb +1 -0
  95. data/lib/slack/real_time/stores/base.rb +1 -0
  96. data/lib/slack/real_time/stores/starter.rb +1 -0
  97. data/lib/slack/real_time/stores/store.rb +16 -25
  98. data/lib/slack/version.rb +2 -1
  99. data/lib/slack/web/api/endpoints.rb +11 -0
  100. data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
  101. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  102. data/lib/slack/web/api/endpoints/admin_users_session.rb +2 -1
  103. data/lib/slack/web/api/endpoints/api.rb +2 -1
  104. data/lib/slack/web/api/endpoints/apps.rb +2 -1
  105. data/lib/slack/web/api/endpoints/apps_permissions.rb +3 -2
  106. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +2 -1
  107. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +2 -1
  108. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +3 -2
  109. data/lib/slack/web/api/endpoints/auth.rb +3 -2
  110. data/lib/slack/web/api/endpoints/bots.rb +2 -1
  111. data/lib/slack/web/api/endpoints/channels.rb +16 -16
  112. data/lib/slack/web/api/endpoints/chat.rb +10 -9
  113. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +2 -1
  114. data/lib/slack/web/api/endpoints/conversations.rb +18 -17
  115. data/lib/slack/web/api/endpoints/dialog.rb +2 -1
  116. data/lib/slack/web/api/endpoints/dnd.rb +5 -4
  117. data/lib/slack/web/api/endpoints/emoji.rb +2 -1
  118. data/lib/slack/web/api/endpoints/files.rb +7 -6
  119. data/lib/slack/web/api/endpoints/files_comments.rb +2 -1
  120. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  121. data/lib/slack/web/api/endpoints/groups.rb +17 -22
  122. data/lib/slack/web/api/endpoints/im.rb +7 -8
  123. data/lib/slack/web/api/endpoints/migration.rb +2 -1
  124. data/lib/slack/web/api/endpoints/mpim.rb +6 -7
  125. data/lib/slack/web/api/endpoints/oauth.rb +3 -2
  126. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  127. data/lib/slack/web/api/endpoints/pins.rb +5 -9
  128. data/lib/slack/web/api/endpoints/reactions.rb +9 -12
  129. data/lib/slack/web/api/endpoints/reminders.rb +6 -5
  130. data/lib/slack/web/api/endpoints/rtm.rb +3 -2
  131. data/lib/slack/web/api/endpoints/search.rb +4 -3
  132. data/lib/slack/web/api/endpoints/stars.rb +4 -5
  133. data/lib/slack/web/api/endpoints/team.rb +5 -5
  134. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  135. data/lib/slack/web/api/endpoints/usergroups.rb +6 -5
  136. data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -2
  137. data/lib/slack/web/api/endpoints/users.rb +11 -16
  138. data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
  139. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  140. data/lib/slack/web/api/endpoints/users_profile.rb +3 -2
  141. data/lib/slack/web/api/endpoints/views.rb +97 -0
  142. data/lib/slack/web/api/error.rb +1 -0
  143. data/lib/slack/web/api/errors/slack_error.rb +2 -1
  144. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
  145. data/lib/slack/web/api/mixins.rb +1 -0
  146. data/lib/slack/web/api/mixins/channels.id.rb +1 -0
  147. data/lib/slack/web/api/mixins/groups.id.rb +1 -0
  148. data/lib/slack/web/api/mixins/ids.id.rb +4 -1
  149. data/lib/slack/web/api/mixins/users.id.rb +1 -0
  150. data/lib/slack/web/api/mixins/users.search.rb +1 -0
  151. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  152. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  153. data/lib/slack/web/api/templates/command.erb +1 -0
  154. data/lib/slack/web/api/templates/commands.erb +1 -0
  155. data/lib/slack/web/api/templates/endpoints.erb +1 -0
  156. data/lib/slack/web/api/templates/method.erb +1 -0
  157. data/lib/slack/web/api/templates/method_spec.erb +1 -0
  158. data/lib/slack/web/client.rb +1 -0
  159. data/lib/slack/web/config.rb +1 -0
  160. data/lib/slack/web/faraday/connection.rb +1 -0
  161. data/lib/slack/web/faraday/request.rb +1 -0
  162. data/lib/slack/web/faraday/response/raise_error.rb +7 -6
  163. data/lib/slack/web/pagination/cursor.rb +1 -0
  164. data/lib/slack_ruby_client.rb +1 -0
  165. data/lib/tasks/git.rake +1 -0
  166. data/lib/tasks/real_time.rake +12 -4
  167. data/lib/tasks/update.rake +1 -0
  168. data/lib/tasks/web.rake +17 -6
  169. data/screenshots/create-app.png +0 -0
  170. data/slack-ruby-client.gemspec +4 -1
  171. data/spec/integration/integration_spec.rb +16 -17
  172. data/spec/slack/config_spec.rb +2 -0
  173. data/spec/slack/events/config_spec.rb +8 -4
  174. data/spec/slack/events/request_spec.rb +67 -37
  175. data/spec/slack/messages/formatting_spec.rb +25 -13
  176. data/spec/slack/real_time/api/message_spec.rb +6 -1
  177. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  178. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  179. data/spec/slack/real_time/client_spec.rb +137 -39
  180. data/spec/slack/real_time/concurrency/celluloid_spec.rb +11 -6
  181. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +9 -1
  182. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  183. data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
  184. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  185. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
  186. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  187. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  188. data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
  189. data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
  190. data/spec/slack/real_time/rtm_connect_spec.rb +1 -0
  191. data/spec/slack/real_time/rtm_start_spec.rb +1 -0
  192. data/spec/slack/real_time/store_spec.rb +2 -1
  193. data/spec/slack/slack_spec.rb +37 -5
  194. data/spec/slack/version_spec.rb +2 -1
  195. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  196. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +8 -0
  197. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +1 -0
  198. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  199. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
  200. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
  201. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +1 -0
  202. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +1 -0
  203. data/spec/slack/web/api/endpoints/apps_spec.rb +1 -0
  204. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  205. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +1 -0
  206. data/spec/slack/web/api/endpoints/conversations_spec.rb +1 -0
  207. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
  208. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +2 -0
  209. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +80 -25
  210. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
  211. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
  212. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
  213. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  214. data/spec/slack/web/api/endpoints/dnd_spec.rb +1 -0
  215. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  216. data/spec/slack/web/api/endpoints/files_comments_spec.rb +1 -0
  217. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  218. data/spec/slack/web/api/endpoints/files_spec.rb +1 -0
  219. data/spec/slack/web/api/endpoints/im_spec.rb +1 -0
  220. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  221. data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -0
  222. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -0
  223. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
  224. data/spec/slack/web/api/endpoints/pins_spec.rb +5 -1
  225. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  226. data/spec/slack/web/api/endpoints/reminders_spec.rb +1 -0
  227. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  228. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  229. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  230. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  231. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  232. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  233. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +1 -0
  234. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  235. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  236. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  237. data/spec/slack/web/api/endpoints/views_spec.rb +29 -0
  238. data/spec/slack/web/api/error_spec.rb +4 -2
  239. data/spec/slack/web/api/errors/service_unavailable_spec.rb +6 -3
  240. data/spec/slack/web/api/errors/slack_error_spec.rb +4 -2
  241. data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
  242. data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
  243. data/spec/slack/web/api/mixins/users_spec.rb +17 -8
  244. data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
  245. data/spec/slack/web/client_spec.rb +45 -18
  246. data/spec/slack/web/faraday/response/raise_error_spec.rb +16 -5
  247. data/spec/spec_helper.rb +2 -1
  248. data/spec/support/queue_with_timeout.rb +1 -0
  249. data/spec/support/real_time/concurrency/mock.rb +1 -0
  250. data/spec/support/real_time/connected_client.rb +9 -3
  251. data/spec/support/real_time/event.rb +1 -0
  252. data/spec/support/token.rb +1 -0
  253. data/spec/support/vcr.rb +1 -0
  254. metadata +59 -7
  255. data/screenshots/register-bot.png +0 -0
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::FilesRemote do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'files.remote_add' do
9
+ it 'requires external_id' do
10
+ expect { client.files_remote_add(external_url: 'http://example.com/my_cloud_service_file/abc123', title: 'Danger, High Voltage!') }.to raise_error ArgumentError, /Required arguments :external_id missing/
11
+ end
12
+ it 'requires external_url' do
13
+ expect { client.files_remote_add(external_id: '123456', title: 'Danger, High Voltage!') }.to raise_error ArgumentError, /Required arguments :external_url missing/
14
+ end
15
+ it 'requires title' do
16
+ expect { client.files_remote_add(external_id: '123456', external_url: 'http://example.com/my_cloud_service_file/abc123') }.to raise_error ArgumentError, /Required arguments :title missing/
17
+ end
18
+ end
19
+ context 'files.remote_share' do
20
+ it 'requires channels' do
21
+ expect { client.files_remote_share }.to raise_error ArgumentError, /Required arguments :channels missing/
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::OauthV2 do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'oauth.v2_access' do
9
+ it 'requires code' do
10
+ expect { client.oauth_v2_access }.to raise_error ArgumentError, /Required arguments :code missing/
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -6,7 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Pins do
6
7
  let(:client) { Slack::Web::Client.new }
7
8
  context 'pins_add' do
8
9
  it 'requires channel' do
9
- expect { client.pins_add }.to raise_error ArgumentError, /Required arguments :channel missing/
10
+ expect { client.pins_add(timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :channel missing/
11
+ end
12
+ it 'requires timestamp' do
13
+ expect { client.pins_add(channel: 'C1234567890') }.to raise_error ArgumentError, /Required arguments :timestamp missing/
10
14
  end
11
15
  end
12
16
  context 'pins_list' do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -5,8 +6,14 @@ require 'spec_helper'
5
6
  RSpec.describe Slack::Web::Api::Endpoints::Reactions do
6
7
  let(:client) { Slack::Web::Client.new }
7
8
  context 'reactions_add' do
9
+ it 'requires channel' do
10
+ expect { client.reactions_add(name: 'thumbsup', timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :channel missing/
11
+ end
8
12
  it 'requires name' do
9
- expect { client.reactions_add }.to raise_error ArgumentError, /Required arguments :name missing/
13
+ expect { client.reactions_add(channel: 'C1234567890', timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :name missing/
14
+ end
15
+ it 'requires timestamp' do
16
+ expect { client.reactions_add(channel: 'C1234567890', name: 'thumbsup') }.to raise_error ArgumentError, /Required arguments :timestamp missing/
10
17
  end
11
18
  end
12
19
  context 'reactions_remove' do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Views do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'views_open' do
9
+ it 'requires trigger_id' do
10
+ expect { client.views_open(view: ' ') }.to raise_error ArgumentError, /Required arguments :trigger_id missing/
11
+ end
12
+ it 'requires view' do
13
+ expect { client.views_open(trigger_id: '12345.98765.abcd2358fdea') }.to raise_error ArgumentError, /Required arguments :view missing/
14
+ end
15
+ end
16
+ context 'views_push' do
17
+ it 'requires trigger_id' do
18
+ expect { client.views_push(view: ' ') }.to raise_error ArgumentError, /Required arguments :trigger_id missing/
19
+ end
20
+ it 'requires view' do
21
+ expect { client.views_push(trigger_id: '12345.98765.abcd2358fdea') }.to raise_error ArgumentError, /Required arguments :view missing/
22
+ end
23
+ end
24
+ context 'views_update' do
25
+ it 'requires view' do
26
+ expect { client.views_update }.to raise_error ArgumentError, /Required arguments :view missing/
27
+ end
28
+ end
29
+ end
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Error do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  it 'provides access to the response object', vcr: { cassette_name: 'web/auth_test_error' } do
6
8
  begin
7
9
  client.auth_test
8
10
  raise 'Expected to receive Slack::Web::Api::Error.'
9
- rescue Slack::Web::Api::Error => e
10
- expect(e.response).to_not be_nil
11
+ rescue described_class => e
12
+ expect(e.response).not_to be_nil
11
13
  expect(e.response.status).to eq 200
12
14
  end
13
15
  end
@@ -1,13 +1,16 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Client do
4
- let(:client) { Slack::Web::Client.new }
5
- it 'raises a Faraday::ClientError when Slack is unavailable', vcr: { cassette_name: 'web/503_error' } do
5
+ let(:client) { described_class.new }
6
+
7
+ it 'raises a Faraday::ClientError when Slack is unavailable',
8
+ vcr: { cassette_name: 'web/503_error' } do
6
9
  begin
7
10
  client.auth_test
8
11
  raise 'Expected to receive Faraday::ClientError.'
9
12
  rescue Faraday::ClientError => e
10
- expect(e.response).to_not be_nil
13
+ expect(e.response).not_to be_nil
11
14
  expect(e.response[:status]).to eq 503
12
15
  end
13
16
  end
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Errors::SlackError do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  it 'provides access to the response object', vcr: { cassette_name: 'web/auth_test_error' } do
6
8
  begin
7
9
  client.auth_test
8
10
  raise 'Expected to receive Slack::Web::Api::Errors::SlackError.'
9
- rescue Slack::Web::Api::Errors::SlackError => e
10
- expect(e.response).to_not be_nil
11
+ rescue described_class => e
12
+ expect(e.response).not_to be_nil
11
13
  expect(e.response.status).to eq 200
12
14
  end
13
15
  end
@@ -1,16 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Mixins::Channels do
5
+ subject(:channels) do
6
+ klass.new
7
+ end
8
+
4
9
  let(:klass) do
5
10
  Class.new do
6
11
  include Slack::Web::Api::Mixins::Channels
7
12
  end
8
13
  end
9
- subject do
10
- klass.new
11
- end
14
+
12
15
  before do
13
- allow(subject).to receive(:channels_list).and_return(
16
+ allow(channels).to receive(:channels_list).and_return(
14
17
  Slack::Messages::Message.new(
15
18
  'channels' => [{
16
19
  'id' => 'CDEADBEEF',
@@ -19,15 +22,22 @@ RSpec.describe Slack::Web::Api::Mixins::Channels do
19
22
  )
20
23
  )
21
24
  end
25
+
22
26
  context '#channels_id' do
23
27
  it 'leaves channels specified by ID alone' do
24
- expect(subject.channels_id(channel: 'C123456')).to eq('ok' => true, 'channel' => { 'id' => 'C123456' })
28
+ expect(channels.channels_id(channel: 'C123456')).to(
29
+ eq('ok' => true, 'channel' => { 'id' => 'C123456' })
30
+ )
25
31
  end
26
32
  it 'translates a channel that starts with a #' do
27
- expect(subject.channels_id(channel: '#general')).to eq('ok' => true, 'channel' => { 'id' => 'CDEADBEEF' })
33
+ expect(channels.channels_id(channel: '#general')).to(
34
+ eq('ok' => true, 'channel' => { 'id' => 'CDEADBEEF' })
35
+ )
28
36
  end
29
37
  it 'fails with an exception' do
30
- expect { subject.channels_id(channel: '#invalid') }.to raise_error Slack::Web::Api::Errors::SlackError, 'channel_not_found'
38
+ expect { channels.channels_id(channel: '#invalid') }.to(
39
+ raise_error(Slack::Web::Api::Errors::SlackError, 'channel_not_found')
40
+ )
31
41
  end
32
42
  end
33
43
  end
@@ -1,16 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Mixins::Groups do
5
+ subject(:groups) do
6
+ klass.new
7
+ end
8
+
4
9
  let(:klass) do
5
10
  Class.new do
6
11
  include Slack::Web::Api::Mixins::Groups
7
12
  end
8
13
  end
9
- subject do
10
- klass.new
11
- end
14
+
12
15
  before do
13
- allow(subject).to receive(:groups_list).and_return(
16
+ allow(groups).to receive(:groups_list).and_return(
14
17
  Slack::Messages::Message.new(
15
18
  'groups' => [{
16
19
  'id' => 'CDEADBEEF',
@@ -19,15 +22,22 @@ RSpec.describe Slack::Web::Api::Mixins::Groups do
19
22
  )
20
23
  )
21
24
  end
25
+
22
26
  context '#groups_id' do
23
27
  it 'leaves groups specified by ID alone' do
24
- expect(subject.groups_id(channel: 'C123456')).to eq('ok' => true, 'group' => { 'id' => 'C123456' })
28
+ expect(groups.groups_id(channel: 'C123456')).to(
29
+ eq('ok' => true, 'group' => { 'id' => 'C123456' })
30
+ )
25
31
  end
26
32
  it 'translates a channel that starts with a #' do
27
- expect(subject.groups_id(channel: '#general')).to eq('ok' => true, 'group' => { 'id' => 'CDEADBEEF' })
33
+ expect(groups.groups_id(channel: '#general')).to(
34
+ eq('ok' => true, 'group' => { 'id' => 'CDEADBEEF' })
35
+ )
28
36
  end
29
37
  it 'fails with an exception' do
30
- expect { subject.groups_id(channel: '#invalid') }.to raise_error Slack::Web::Api::Errors::SlackError, 'channel_not_found'
38
+ expect { groups.groups_id(channel: '#invalid') }.to(
39
+ raise_error(Slack::Web::Api::Errors::SlackError, 'channel_not_found')
40
+ )
31
41
  end
32
42
  end
33
43
  end
@@ -1,16 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Mixins::Users do
5
+ subject(:users) do
6
+ klass.new
7
+ end
8
+
4
9
  let(:klass) do
5
10
  Class.new do
6
11
  include Slack::Web::Api::Mixins::Users
7
12
  end
8
13
  end
9
- subject do
10
- klass.new
11
- end
14
+
12
15
  before do
13
- allow(subject).to receive(:users_list).and_return(
16
+ allow(users).to receive(:users_list).and_return(
14
17
  Slack::Messages::Message.new(
15
18
  'members' => [{
16
19
  'id' => 'UDEADBEEF',
@@ -20,21 +23,27 @@ RSpec.describe Slack::Web::Api::Mixins::Users do
20
23
  )
21
24
  )
22
25
  end
26
+
23
27
  context '#users_id' do
24
28
  it 'leaves users specified by ID alone' do
25
- expect(subject.users_id(user: 'U123456')).to eq('ok' => true, 'user' => { 'id' => 'U123456' })
29
+ expect(users.users_id(user: 'U123456')).to eq('ok' => true, 'user' => { 'id' => 'U123456' })
26
30
  end
27
31
  it 'translates a user that starts with a #' do
28
- expect(subject.users_id(user: '@aws')).to eq('ok' => true, 'user' => { 'id' => 'UDEADBEEF' })
32
+ expect(users.users_id(user: '@aws')).to eq('ok' => true, 'user' => { 'id' => 'UDEADBEEF' })
29
33
  end
30
34
  it 'fails with an exception' do
31
- expect { subject.users_id(user: '@foo') }.to raise_error Slack::Web::Api::Errors::SlackError, 'user_not_found'
35
+ expect { users.users_id(user: '@foo') }.to(
36
+ raise_error(Slack::Web::Api::Errors::SlackError, 'user_not_found')
37
+ )
32
38
  end
33
39
  end
40
+
34
41
  if defined?(Picky)
35
42
  context '#users_search' do
36
43
  it 'finds a user' do
37
- expect(subject.users_search(user: 'aws')).to eq('ok' => true, 'members' => [{ 'id' => 'UDEADBEEF', 'name' => 'aws', 'profile' => {} }])
44
+ expect(users.users_search(user: 'aws')).to(
45
+ eq('ok' => true, 'members' => [{ 'id' => 'UDEADBEEF', 'name' => 'aws', 'profile' => {} }])
46
+ )
38
47
  end
39
48
  end
40
49
  end
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Pagination::Cursor do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  context 'default cursor' do
6
- let(:cursor) { Slack::Web::Api::Pagination::Cursor.new(client, 'users_list', {}) }
8
+ let(:cursor) { described_class.new(client, 'users_list', {}) }
9
+
7
10
  it 'provides a default limit' do
8
11
  expect(client).to receive(:users_list).with(limit: 100, cursor: nil)
9
12
  cursor.first
@@ -13,7 +16,9 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
13
16
  cursor.to_a
14
17
  end
15
18
  it 'handles nil response metadata' do
16
- expect(client).to receive(:users_list).once.and_return(Slack::Messages::Message.new(response_metadata: nil))
19
+ expect(client).to(
20
+ receive(:users_list).once.and_return(Slack::Messages::Message.new(response_metadata: nil))
21
+ )
17
22
  cursor.to_a
18
23
  end
19
24
  it 'paginates with a cursor inside response metadata' do
@@ -26,21 +31,42 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
26
31
  end
27
32
  context 'with rate limiting' do
28
33
  let(:error) { Slack::Web::Api::Errors::TooManyRequestsError.new(nil) }
34
+
29
35
  context 'with default max retries' do
30
36
  it 'sleeps after a TooManyRequestsError' do
31
- expect(client).to receive(:users_list).with(limit: 100, cursor: nil).ordered.and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
32
- expect(client).to receive(:users_list).with(limit: 100, cursor: 'next').ordered.and_raise(error)
37
+ expect(client).to(
38
+ receive(:users_list)
39
+ .with(limit: 100, cursor: nil)
40
+ .ordered
41
+ .and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
42
+ )
43
+ expect(client).to(
44
+ receive(:users_list).with(limit: 100, cursor: 'next').ordered.and_raise(error)
45
+ )
33
46
  expect(error).to receive(:retry_after).once.ordered.and_return(9)
34
47
  expect(cursor).to receive(:sleep).once.ordered.with(9)
35
- expect(client).to receive(:users_list).with(limit: 100, cursor: 'next').ordered.and_return(Slack::Messages::Message.new)
48
+ expect(client).to(
49
+ receive(:users_list)
50
+ .with(limit: 100, cursor: 'next')
51
+ .ordered
52
+ .and_return(Slack::Messages::Message.new)
53
+ )
36
54
  cursor.to_a
37
55
  end
38
56
  end
57
+
39
58
  context 'with a custom max_retries' do
40
- let(:cursor) { Slack::Web::Api::Pagination::Cursor.new(client, 'users_list', max_retries: 4) }
59
+ let(:cursor) { described_class.new(client, 'users_list', max_retries: 4) }
60
+
41
61
  it 'raises the error after hitting the max retries' do
42
- expect(client).to receive(:users_list).with(limit: 100, cursor: nil).and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
43
- expect(client).to receive(:users_list).with(limit: 100, cursor: 'next').exactly(5).times.and_raise(error)
62
+ expect(client).to(
63
+ receive(:users_list)
64
+ .with(limit: 100, cursor: nil)
65
+ .and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
66
+ )
67
+ expect(client).to(
68
+ receive(:users_list).with(limit: 100, cursor: 'next').exactly(5).times.and_raise(error)
69
+ )
44
70
  expect(error).to receive(:retry_after).exactly(4).times.and_return(9)
45
71
  expect(cursor).to receive(:sleep).exactly(4).times.with(9)
46
72
  expect { cursor.to_a }.to raise_error(error)
@@ -48,15 +74,19 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
48
74
  end
49
75
  end
50
76
  end
77
+
51
78
  context 'with a custom limit' do
52
- let(:cursor) { Slack::Web::Api::Pagination::Cursor.new(client, 'users_list', limit: 42) }
79
+ let(:cursor) { described_class.new(client, 'users_list', limit: 42) }
80
+
53
81
  it 'overrides default limit' do
54
82
  expect(client).to receive(:users_list).with(limit: 42, cursor: nil)
55
83
  cursor.first
56
84
  end
57
85
  end
86
+
58
87
  context 'with a custom sleep_interval' do
59
- let(:cursor) { Slack::Web::Api::Pagination::Cursor.new(client, 'users_list', sleep_interval: 3) }
88
+ let(:cursor) { described_class.new(client, 'users_list', sleep_interval: 3) }
89
+
60
90
  it 'sleeps between requests' do
61
91
  expect(client).to receive(:users_list).exactly(3).times.and_return(
62
92
  Slack::Messages::Message.new(response_metadata: { next_cursor: 'next_a' }),