slack-ruby-bot 0.12.0 → 0.13.0

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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.rubocop.yml +14 -1
  4. data/.rubocop_todo.yml +13 -36
  5. data/.travis.yml +7 -5
  6. data/CHANGELOG.md +9 -0
  7. data/DEPLOYMENT.md +61 -5
  8. data/Dangerfile +2 -0
  9. data/Gemfile +10 -3
  10. data/LICENSE.md +1 -1
  11. data/README.md +78 -10
  12. data/Rakefile +2 -0
  13. data/TUTORIAL.md +23 -0
  14. data/UPGRADING.md +8 -0
  15. data/examples/inventory/Gemfile +2 -0
  16. data/examples/inventory/inventorybot.rb +5 -1
  17. data/examples/market/Gemfile +4 -3
  18. data/examples/market/marketbot.rb +22 -15
  19. data/examples/minimal/Gemfile +2 -0
  20. data/examples/minimal/pongbot.rb +2 -0
  21. data/examples/weather/Gemfile +2 -0
  22. data/examples/weather/weatherbot.rb +2 -0
  23. data/lib/config/application.rb +4 -2
  24. data/lib/config/boot.rb +2 -0
  25. data/lib/config/environment.rb +3 -1
  26. data/lib/initializers/giphy.rb +2 -0
  27. data/lib/initializers/giphy_client.rb +2 -0
  28. data/lib/slack-ruby-bot.rb +3 -1
  29. data/lib/slack-ruby-bot/about.rb +3 -1
  30. data/lib/slack-ruby-bot/app.rb +2 -0
  31. data/lib/slack-ruby-bot/bot.rb +2 -0
  32. data/lib/slack-ruby-bot/client.rb +7 -4
  33. data/lib/slack-ruby-bot/commands.rb +2 -0
  34. data/lib/slack-ruby-bot/commands/about.rb +2 -0
  35. data/lib/slack-ruby-bot/commands/base.rb +12 -1
  36. data/lib/slack-ruby-bot/commands/help.rb +9 -7
  37. data/lib/slack-ruby-bot/commands/hi.rb +2 -0
  38. data/lib/slack-ruby-bot/commands/support/attrs.rb +2 -0
  39. data/lib/slack-ruby-bot/commands/support/help.rb +4 -0
  40. data/lib/slack-ruby-bot/commands/support/match.rb +4 -3
  41. data/lib/slack-ruby-bot/commands/unknown.rb +2 -0
  42. data/lib/slack-ruby-bot/config.rb +3 -0
  43. data/lib/slack-ruby-bot/hooks.rb +2 -0
  44. data/lib/slack-ruby-bot/hooks/hello.rb +22 -3
  45. data/lib/slack-ruby-bot/hooks/hook_support.rb +2 -0
  46. data/lib/slack-ruby-bot/hooks/message.rb +5 -2
  47. data/lib/slack-ruby-bot/hooks/set.rb +3 -1
  48. data/lib/slack-ruby-bot/mvc.rb +2 -0
  49. data/lib/slack-ruby-bot/mvc/controller/base.rb +4 -3
  50. data/lib/slack-ruby-bot/mvc/model/base.rb +2 -0
  51. data/lib/slack-ruby-bot/mvc/mvc.rb +2 -0
  52. data/lib/slack-ruby-bot/mvc/view/base.rb +2 -0
  53. data/lib/slack-ruby-bot/rspec.rb +3 -1
  54. data/lib/slack-ruby-bot/rspec/support/bots_for_tests.rb +2 -0
  55. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/it_behaves_like_a_slack_bot.rb +2 -0
  56. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/not_respond.rb +3 -5
  57. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_error.rb +3 -5
  58. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb +16 -13
  59. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_messages.rb +27 -18
  60. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/start_typing.rb +32 -0
  61. data/lib/slack-ruby-bot/rspec/support/slack_api_key.rb +2 -0
  62. data/lib/slack-ruby-bot/rspec/support/slack_ruby_bot_configure.rb +2 -0
  63. data/lib/slack-ruby-bot/rspec/support/spec_helpers.rb +2 -0
  64. data/lib/slack-ruby-bot/rspec/support/vcr.rb +2 -0
  65. data/lib/slack-ruby-bot/server.rb +2 -0
  66. data/lib/slack-ruby-bot/support/loggable.rb +2 -0
  67. data/lib/slack-ruby-bot/version.rb +3 -1
  68. data/lib/slack_ruby_bot.rb +2 -0
  69. data/screenshots/create-app.png +0 -0
  70. data/slack-ruby-bot.gemspec +5 -2
  71. data/spec/slack-ruby-bot/app_spec.rb +2 -0
  72. data/spec/slack-ruby-bot/client_spec.rb +2 -0
  73. data/spec/slack-ruby-bot/commands/about_spec.rb +2 -0
  74. data/spec/slack-ruby-bot/commands/aliases_spec.rb +2 -0
  75. data/spec/slack-ruby-bot/commands/attachment_spec.rb +2 -0
  76. data/spec/slack-ruby-bot/commands/bot_message_spec.rb +2 -0
  77. data/spec/slack-ruby-bot/commands/bot_spec.rb +2 -0
  78. data/spec/slack-ruby-bot/commands/commands_command_classes_spec.rb +2 -0
  79. data/spec/slack-ruby-bot/commands/commands_permitted_spec.rb +2 -0
  80. data/spec/slack-ruby-bot/commands/commands_precedence_spec.rb +2 -0
  81. data/spec/slack-ruby-bot/commands/commands_regexp_escape_spec.rb +2 -0
  82. data/spec/slack-ruby-bot/commands/commands_regexp_spec.rb +2 -0
  83. data/spec/slack-ruby-bot/commands/commands_spaces_spec.rb +2 -0
  84. data/spec/slack-ruby-bot/commands/commands_spec.rb +2 -0
  85. data/spec/slack-ruby-bot/commands/commands_with_block_spec.rb +2 -0
  86. data/spec/slack-ruby-bot/commands/commands_with_expression_spec.rb +2 -0
  87. data/spec/slack-ruby-bot/commands/direct_messages_spec.rb +2 -0
  88. data/spec/slack-ruby-bot/commands/empty_text_spec.rb +2 -0
  89. data/spec/slack-ruby-bot/commands/help_spec.rb +15 -13
  90. data/spec/slack-ruby-bot/commands/hi_spec.rb +2 -0
  91. data/spec/slack-ruby-bot/commands/match_spec.rb +2 -0
  92. data/spec/slack-ruby-bot/commands/message_loop_spec.rb +2 -0
  93. data/spec/slack-ruby-bot/commands/nil_message_spec.rb +2 -0
  94. data/spec/slack-ruby-bot/commands/not_implemented_spec.rb +2 -0
  95. data/spec/slack-ruby-bot/commands/operators_spec.rb +2 -0
  96. data/spec/slack-ruby-bot/commands/operators_with_block_spec.rb +2 -0
  97. data/spec/slack-ruby-bot/commands/scan_spec.rb +2 -0
  98. data/spec/slack-ruby-bot/commands/send_gif_spec.rb +2 -0
  99. data/spec/slack-ruby-bot/commands/send_message_spec.rb +2 -0
  100. data/spec/slack-ruby-bot/commands/send_message_with_gif_spec.rb +2 -0
  101. data/spec/slack-ruby-bot/commands/support/attrs_spec.rb +2 -0
  102. data/spec/slack-ruby-bot/commands/support/help_spec.rb +2 -0
  103. data/spec/slack-ruby-bot/commands/support/match_spec.rb +2 -0
  104. data/spec/slack-ruby-bot/commands/unknown_spec.rb +2 -0
  105. data/spec/slack-ruby-bot/config_spec.rb +2 -0
  106. data/spec/slack-ruby-bot/hooks/hello_spec.rb +51 -0
  107. data/spec/slack-ruby-bot/hooks/hook_support_spec.rb +2 -0
  108. data/spec/slack-ruby-bot/hooks/message_spec.rb +3 -1
  109. data/spec/slack-ruby-bot/hooks/set_spec.rb +2 -0
  110. data/spec/slack-ruby-bot/initializers/giphy_client_spec.rb +2 -0
  111. data/spec/slack-ruby-bot/initializers/giphy_spec.rb +2 -0
  112. data/spec/slack-ruby-bot/mvc/controller/controller_to_command_spec.rb +2 -0
  113. data/spec/slack-ruby-bot/rspec/respond_with_error_spec.rb +2 -0
  114. data/spec/slack-ruby-bot/rspec/respond_with_slack_message_spec.rb +20 -0
  115. data/spec/slack-ruby-bot/rspec/respond_with_slack_messages_spec.rb +36 -0
  116. data/spec/slack-ruby-bot/rspec/start_typing_spec.rb +36 -0
  117. data/spec/slack-ruby-bot/server_spec.rb +2 -0
  118. data/spec/slack-ruby-bot/support/loggable_spec.rb +2 -0
  119. data/spec/slack-ruby-bot/version_spec.rb +2 -0
  120. data/spec/spec_helper.rb +2 -0
  121. metadata +12 -8
  122. data/screenshots/register-bot.png +0 -0
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe RSpec do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'types on the correct channel' do |client, data, _match|
7
+ client.typing(channel: data.channel)
8
+ end
9
+ command 'types on another channel' do |client, _data, _match|
10
+ client.typing(channel: 'another')
11
+ end
12
+ end
13
+ end
14
+
15
+ def app
16
+ SlackRubyBot::App.new
17
+ end
18
+ it 'types on any channel' do
19
+ expect(message: "#{SlackRubyBot.config.user} types on the correct channel", channel: 'channel')
20
+ .to start_typing
21
+ end
22
+ it 'types on another channel' do
23
+ expect(message: "#{SlackRubyBot.config.user} types on another channel", channel: 'channel')
24
+ .to start_typing(channel: 'another')
25
+ end
26
+ it 'types an invalid channel' do
27
+ expect(message: "#{SlackRubyBot.config.user} types on another channel", channel: 'channel')
28
+ .to_not start_typing(channel: 'invalid')
29
+ end
30
+ it 'correctly reports error' do
31
+ expect do
32
+ expect(message: "#{SlackRubyBot.config.user} types on another channel", channel: 'channel')
33
+ .to start_typing(channel: 'invalid')
34
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError, "expected to receive typing with: {:channel=>\"invalid\"} once,\n received:{:channel=>\"another\"}"
35
+ end
36
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe SlackRubyBot::Server do
2
4
  let(:logger) { subject.send :logger }
3
5
  let(:client) { Slack::RealTime::Client.new }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe SlackRubyBot::Loggable do
2
4
  let!(:class_with_logger) { Class.new SlackRubyBot::Commands::Base }
3
5
  let!(:child_class_with_logger) { Class.new class_with_logger }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe SlackRubyBot do
2
4
  it 'has a version' do
3
5
  expect(SlackRubyBot::VERSION).to_not be nil
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'slack-ruby-bot/rspec'
2
4
  require 'webmock/rspec'
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-25 00:00:00.000000000 Z
11
+ date: 2020-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.58.2
89
+ version: 0.80.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.58.2
96
+ version: 0.80.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: vcr
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -197,6 +197,7 @@ files:
197
197
  - lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_error.rb
198
198
  - lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb
199
199
  - lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_messages.rb
200
+ - lib/slack-ruby-bot/rspec/support/slack-ruby-bot/start_typing.rb
200
201
  - lib/slack-ruby-bot/rspec/support/slack_api_key.rb
201
202
  - lib/slack-ruby-bot/rspec/support/slack_ruby_bot_configure.rb
202
203
  - lib/slack-ruby-bot/rspec/support/spec_helpers.rb
@@ -206,11 +207,11 @@ files:
206
207
  - lib/slack-ruby-bot/version.rb
207
208
  - lib/slack_ruby_bot.rb
208
209
  - screenshots/aliases.gif
210
+ - screenshots/create-app.png
209
211
  - screenshots/demo.gif
210
212
  - screenshots/dms.gif
211
213
  - screenshots/help.png
212
214
  - screenshots/market.gif
213
- - screenshots/register-bot.png
214
215
  - screenshots/weather.gif
215
216
  - slack-ruby-bot.gemspec
216
217
  - slack.png
@@ -249,6 +250,7 @@ files:
249
250
  - spec/slack-ruby-bot/commands/support/match_spec.rb
250
251
  - spec/slack-ruby-bot/commands/unknown_spec.rb
251
252
  - spec/slack-ruby-bot/config_spec.rb
253
+ - spec/slack-ruby-bot/hooks/hello_spec.rb
252
254
  - spec/slack-ruby-bot/hooks/hook_support_spec.rb
253
255
  - spec/slack-ruby-bot/hooks/message_spec.rb
254
256
  - spec/slack-ruby-bot/hooks/set_spec.rb
@@ -258,6 +260,7 @@ files:
258
260
  - spec/slack-ruby-bot/rspec/respond_with_error_spec.rb
259
261
  - spec/slack-ruby-bot/rspec/respond_with_slack_message_spec.rb
260
262
  - spec/slack-ruby-bot/rspec/respond_with_slack_messages_spec.rb
263
+ - spec/slack-ruby-bot/rspec/start_typing_spec.rb
261
264
  - spec/slack-ruby-bot/server_spec.rb
262
265
  - spec/slack-ruby-bot/support/loggable_spec.rb
263
266
  - spec/slack-ruby-bot/version_spec.rb
@@ -274,15 +277,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
277
  requirements:
275
278
  - - ">="
276
279
  - !ruby/object:Gem::Version
277
- version: '0'
280
+ version: '2.3'
278
281
  required_rubygems_version: !ruby/object:Gem::Requirement
279
282
  requirements:
280
283
  - - ">="
281
284
  - !ruby/object:Gem::Version
282
285
  version: 1.3.6
283
286
  requirements: []
284
- rubyforge_project:
285
- rubygems_version: 2.7.6
287
+ rubygems_version: 3.0.3
286
288
  signing_key:
287
289
  specification_version: 4
288
290
  summary: The easiest way to write a Slack bot in Ruby.
@@ -322,6 +324,7 @@ test_files:
322
324
  - spec/slack-ruby-bot/commands/support/match_spec.rb
323
325
  - spec/slack-ruby-bot/commands/unknown_spec.rb
324
326
  - spec/slack-ruby-bot/config_spec.rb
327
+ - spec/slack-ruby-bot/hooks/hello_spec.rb
325
328
  - spec/slack-ruby-bot/hooks/hook_support_spec.rb
326
329
  - spec/slack-ruby-bot/hooks/message_spec.rb
327
330
  - spec/slack-ruby-bot/hooks/set_spec.rb
@@ -331,6 +334,7 @@ test_files:
331
334
  - spec/slack-ruby-bot/rspec/respond_with_error_spec.rb
332
335
  - spec/slack-ruby-bot/rspec/respond_with_slack_message_spec.rb
333
336
  - spec/slack-ruby-bot/rspec/respond_with_slack_messages_spec.rb
337
+ - spec/slack-ruby-bot/rspec/start_typing_spec.rb
334
338
  - spec/slack-ruby-bot/server_spec.rb
335
339
  - spec/slack-ruby-bot/support/loggable_spec.rb
336
340
  - spec/slack-ruby-bot/version_spec.rb
Binary file