slack-ruby-bot-bhe 0.5.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +17 -0
  2. data/.gitignore +3 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +6 -0
  5. data/.rubocop_todo.yml +58 -0
  6. data/.travis.yml +3 -0
  7. data/CHANGELOG.md +81 -0
  8. data/CONTRIBUTING.md +139 -0
  9. data/DEPLOYMENT.md +33 -0
  10. data/Gemfile +3 -0
  11. data/LICENSE.md +22 -0
  12. data/README.md +263 -0
  13. data/RELEASING.md +67 -0
  14. data/Rakefile +19 -0
  15. data/TUTORIAL.md +205 -0
  16. data/UPGRADING.md +64 -0
  17. data/examples/minimal/Gemfile +3 -0
  18. data/examples/minimal/Procfile +1 -0
  19. data/examples/minimal/pongbot.rb +9 -0
  20. data/examples/weather/Gemfile +3 -0
  21. data/examples/weather/Procfile +1 -0
  22. data/examples/weather/weatherbot.rb +9 -0
  23. data/lib/config/application.rb +14 -0
  24. data/lib/config/boot.rb +8 -0
  25. data/lib/config/environment.rb +3 -0
  26. data/lib/initializers/giphy.rb +5 -0
  27. data/lib/slack-ruby-bot.rb +25 -0
  28. data/lib/slack-ruby-bot/about.rb +7 -0
  29. data/lib/slack-ruby-bot/app.rb +46 -0
  30. data/lib/slack-ruby-bot/bot.rb +7 -0
  31. data/lib/slack-ruby-bot/client.rb +44 -0
  32. data/lib/slack-ruby-bot/commands.rb +5 -0
  33. data/lib/slack-ruby-bot/commands/about.rb +12 -0
  34. data/lib/slack-ruby-bot/commands/base.rb +121 -0
  35. data/lib/slack-ruby-bot/commands/help.rb +9 -0
  36. data/lib/slack-ruby-bot/commands/hi.rb +9 -0
  37. data/lib/slack-ruby-bot/commands/unknown.rb +11 -0
  38. data/lib/slack-ruby-bot/config.rb +40 -0
  39. data/lib/slack-ruby-bot/hooks.rb +3 -0
  40. data/lib/slack-ruby-bot/hooks/base.rb +10 -0
  41. data/lib/slack-ruby-bot/hooks/hello.rb +11 -0
  42. data/lib/slack-ruby-bot/hooks/message.rb +50 -0
  43. data/lib/slack-ruby-bot/rspec.rb +12 -0
  44. data/lib/slack-ruby-bot/rspec/support/fixtures/slack/auth_test.yml +16 -0
  45. data/lib/slack-ruby-bot/rspec/support/fixtures/slack/migration_in_progress.yml +30 -0
  46. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/it_behaves_like_a_slack_bot.rb +27 -0
  47. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_error.rb +30 -0
  48. data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb +19 -0
  49. data/lib/slack-ruby-bot/rspec/support/slack_api_key.rb +5 -0
  50. data/lib/slack-ruby-bot/rspec/support/slack_ruby_bot_configure.rb +9 -0
  51. data/lib/slack-ruby-bot/rspec/support/vcr.rb +8 -0
  52. data/lib/slack-ruby-bot/server.rb +111 -0
  53. data/lib/slack-ruby-bot/version.rb +3 -0
  54. data/lib/slack_ruby_bot.rb +1 -0
  55. data/screenshots/aliases.gif +0 -0
  56. data/screenshots/demo.gif +0 -0
  57. data/screenshots/dms.gif +0 -0
  58. data/screenshots/register-bot.png +0 -0
  59. data/screenshots/weather.gif +0 -0
  60. data/slack-ruby-bot.gemspec +28 -0
  61. data/slack.png +0 -0
  62. data/spec/slack-ruby-bot/app_spec.rb +15 -0
  63. data/spec/slack-ruby-bot/commands/about_spec.rb +19 -0
  64. data/spec/slack-ruby-bot/commands/aliases_spec.rb +22 -0
  65. data/spec/slack-ruby-bot/commands/bot_spec.rb +19 -0
  66. data/spec/slack-ruby-bot/commands/commands_precedence_spec.rb +22 -0
  67. data/spec/slack-ruby-bot/commands/commands_regexp_escape_spec.rb +17 -0
  68. data/spec/slack-ruby-bot/commands/commands_spaces_spec.rb +20 -0
  69. data/spec/slack-ruby-bot/commands/commands_spec.rb +21 -0
  70. data/spec/slack-ruby-bot/commands/commands_with_block_spec.rb +23 -0
  71. data/spec/slack-ruby-bot/commands/direct_messages_spec.rb +38 -0
  72. data/spec/slack-ruby-bot/commands/empty_text_spec.rb +22 -0
  73. data/spec/slack-ruby-bot/commands/help_spec.rb +10 -0
  74. data/spec/slack-ruby-bot/commands/hi_spec.rb +19 -0
  75. data/spec/slack-ruby-bot/commands/match_spec.rb +17 -0
  76. data/spec/slack-ruby-bot/commands/message_loop_spec.rb +34 -0
  77. data/spec/slack-ruby-bot/commands/nil_message_spec.rb +22 -0
  78. data/spec/slack-ruby-bot/commands/not_implemented_spec.rb +15 -0
  79. data/spec/slack-ruby-bot/commands/operators_spec.rb +20 -0
  80. data/spec/slack-ruby-bot/commands/operators_with_block_spec.rb +23 -0
  81. data/spec/slack-ruby-bot/commands/send_gif_spec.rb +32 -0
  82. data/spec/slack-ruby-bot/commands/send_message_spec.rb +19 -0
  83. data/spec/slack-ruby-bot/commands/send_message_with_gif_spec.rb +73 -0
  84. data/spec/slack-ruby-bot/commands/unknown_spec.rb +18 -0
  85. data/spec/slack-ruby-bot/config_spec.rb +55 -0
  86. data/spec/slack-ruby-bot/rspec/respond_with_error_spec.rb +19 -0
  87. data/spec/slack-ruby-bot/server_spec.rb +73 -0
  88. data/spec/slack-ruby-bot/version_spec.rb +7 -0
  89. data/spec/spec_helper.rb +1 -0
  90. metadata +313 -0
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot do
4
+ def app
5
+ SlackRubyBot::App.new
6
+ end
7
+ context 'it responds to direct messages' do
8
+ it 'with bot name' do
9
+ expect(message: "#{SlackRubyBot.config.user} hi", channel: 'DEADBEEF').to respond_with_slack_message('Hi <@user>!')
10
+ end
11
+ it 'with bot name capitalized' do
12
+ expect(message: "#{SlackRubyBot.config.user.upcase} hi", channel: 'DEADBEEF').to respond_with_slack_message('Hi <@user>!')
13
+ end
14
+ it 'with bot user id' do
15
+ expect(message: "<@#{SlackRubyBot.config.user_id}> hi", channel: 'DEADBEEF').to respond_with_slack_message('Hi <@user>!')
16
+ end
17
+ it 'without bot name' do
18
+ expect(message: 'hi', channel: 'DEADBEEF').to respond_with_slack_message('Hi <@user>!')
19
+ end
20
+ end
21
+ context 'it responds to direct name calling' do
22
+ it 'with bot name' do
23
+ expect(message: "#{SlackRubyBot.config.user}", channel: 'DEADBEEF').to respond_with_slack_message(SlackRubyBot::ABOUT)
24
+ end
25
+ it 'with bot name capitalized' do
26
+ expect(message: "#{SlackRubyBot.config.user.upcase}", channel: 'DEADBEEF').to respond_with_slack_message(SlackRubyBot::ABOUT)
27
+ end
28
+ it 'with bot user id' do
29
+ expect(message: "<@#{SlackRubyBot.config.user_id}>", channel: 'DEADBEEF').to respond_with_slack_message(SlackRubyBot::ABOUT)
30
+ end
31
+ it 'with bot user id and a colon' do
32
+ expect(message: "<@#{SlackRubyBot.config.user_id}>:", channel: 'DEADBEEF').to respond_with_slack_message(SlackRubyBot::ABOUT)
33
+ end
34
+ it 'with bot user id and a colon and a space' do
35
+ expect(message: "<@#{SlackRubyBot.config.user_id}>: ", channel: 'DEADBEEF').to respond_with_slack_message(SlackRubyBot::ABOUT)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'empty_text'
7
+
8
+ def self.call(client, data, _match)
9
+ send_message client, data.channel, nil
10
+ end
11
+ end
12
+ end
13
+ def app
14
+ SlackRubyBot::App.new
15
+ end
16
+ let(:client) { app.send(:client) }
17
+ it 'sends default text' do
18
+ allow(Giphy).to receive(:random)
19
+ expect(SlackRubyBot::Commands::Base).to receive(:send_message_with_gif).with(client, 'channel', 'Nothing to see here.', 'nothing', {})
20
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} empty_text", channel: 'channel', user: 'user')
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands::Help do
4
+ def app
5
+ SlackRubyBot::App.new
6
+ end
7
+ it 'help' do
8
+ expect(message: "#{SlackRubyBot.config.user} help").to respond_with_slack_message('See https://github.com/dblock/slack-ruby-bot, please.')
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands::Hi do
4
+ def app
5
+ SlackRubyBot::App.new
6
+ end
7
+ it 'says hi' do
8
+ expect(message: "#{SlackRubyBot.config.user} hi").to respond_with_slack_message('Hi <@user>!')
9
+ end
10
+ it 'says hi to bot:' do
11
+ expect(message: "#{SlackRubyBot.config.user}: hi").to respond_with_slack_message('Hi <@user>!')
12
+ end
13
+ it 'says hi to @bot' do
14
+ expect(message: "<@#{SlackRubyBot.config.user_id}> hi").to respond_with_slack_message('Hi <@user>!')
15
+ end
16
+ it 'says hi to @bot: ' do
17
+ expect(message: "<@#{SlackRubyBot.config.user_id}>: hi").to respond_with_slack_message('Hi <@user>!')
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ match(/^Reticulate (?<spline_name>\w*)$/) do |client, data, match|
7
+ send_message client, data.channel, "Reticulated #{match[:spline_name]}."
8
+ end
9
+ end
10
+ end
11
+ def app
12
+ SlackRubyBot::App.new
13
+ end
14
+ it 'matches' do
15
+ expect(message: 'Reticulate spline').to respond_with_slack_message('Reticulated spline.')
16
+ end
17
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::App do
4
+ def app
5
+ SlackRubyBot::App.new
6
+ end
7
+ let(:client) { subject.send(:client) }
8
+ before do
9
+ allow(client).to receive(:self).and_return('id' => 'UDEADBEEF')
10
+ allow(Giphy).to receive(:random)
11
+ end
12
+ context 'default' do
13
+ it 'does not respond to self' do
14
+ expect(SlackRubyBot::Commands::Base).to_not receive(:send_client_message)
15
+ subject.send(:message, client, text: "#{SlackRubyBot.config.user} hi", channel: 'channel', user: 'UDEADBEEF')
16
+ end
17
+ end
18
+ context 'with allow_message_loops=true' do
19
+ before do
20
+ SlackRubyBot.configure do |config|
21
+ config.allow_message_loops = true
22
+ end
23
+ end
24
+ after do
25
+ SlackRubyBot.configure do |config|
26
+ config.allow_message_loops = nil
27
+ end
28
+ end
29
+ it 'responds to self' do
30
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message)
31
+ subject.send(:message, client, text: "#{SlackRubyBot.config.user} hi", channel: 'channel', user: 'UDEADBEEF')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'nil_text'
7
+
8
+ def self.call(_client, data, _match)
9
+ send_message cilent, data.channel, nil
10
+ end
11
+ end
12
+ end
13
+ def app
14
+ SlackRubyBot::App.new
15
+ end
16
+ let(:client) { app.send(:client) }
17
+ it 'ignores nil messages' do
18
+ allow(Giphy).to receive(:random)
19
+ expect(SlackRubyBot::Commands::Base).to_not receive(:send_message_with_gif)
20
+ app.send(:message, client, text: nil, channel: 'channel', user: 'user')
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands::Base do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'not_implemented'
7
+ end
8
+ end
9
+ def app
10
+ SlackRubyBot::App.new
11
+ end
12
+ it 'raises not implemented' do
13
+ expect(message: "#{SlackRubyBot.config.user} not_implemented").to respond_with_error(NotImplementedError, 'rubybot not_implemented')
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ operator '='
7
+ operator '-'
8
+
9
+ def self.call(client, data, match)
10
+ send_message client, data.channel, "#{match[:operator]}: #{match[:expression]}"
11
+ end
12
+ end
13
+ end
14
+ def app
15
+ SlackRubyBot::App.new
16
+ end
17
+ it 'supports operators' do
18
+ expect(message: '=2+2').to respond_with_slack_message('=: 2+2')
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ operator '=' do |client, data, match|
7
+ send_message client, data.channel, "#{match[:operator]}: #{match[:expression]}"
8
+ end
9
+
10
+ operator '+', '-' do |client, data, match|
11
+ send_message client, data.channel, "#{match[:operator]}: #{match[:expression]}"
12
+ end
13
+ end
14
+ end
15
+ def app
16
+ SlackRubyBot::App.new
17
+ end
18
+ it 'supports operator blocks' do
19
+ expect(message: '=2+2').to respond_with_slack_message('=: 2+2')
20
+ expect(message: '+2+2').to respond_with_slack_message('+: 2+2')
21
+ expect(message: '-2+2').to respond_with_slack_message('-: 2+2')
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'send_gif_spec' do |client, data, _match|
7
+ send_gif client, data.channel, 'dummy'
8
+ end
9
+ end
10
+ end
11
+ def app
12
+ SlackRubyBot::App.new
13
+ end
14
+ let(:client) { app.send(:client) }
15
+ let(:gif_image_url) { 'http://media2.giphy.com/media/pzOijFsdDrsS4/giphy.gif' }
16
+ it 'sends a gif' do
17
+ gif = Giphy::RandomGif.new('image_url' => gif_image_url)
18
+ expect(Giphy).to receive(:random).and_return(gif)
19
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: gif_image_url)
20
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
21
+ end
22
+ it 'eats up the error' do
23
+ expect(Giphy).to receive(:random) { fail 'oh no!' }
24
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: '')
25
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
26
+ end
27
+ it 'eats up nil gif' do
28
+ expect(Giphy).to receive(:random).and_return(nil)
29
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: '')
30
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'send_message_spec' do |client, data, match|
7
+ send_message client, data.channel, match['expression']
8
+ end
9
+ end
10
+ end
11
+ def app
12
+ SlackRubyBot::App.new
13
+ end
14
+ let(:client) { app.send(:client) }
15
+ it 'sends a message' do
16
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
17
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_spec message", channel: 'channel', user: 'user')
18
+ end
19
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'send_message_with_gif_spec' do |client, data, match|
7
+ send_message_with_gif client, data.channel, match['expression'], 'dummy'
8
+ end
9
+ end
10
+ end
11
+ def app
12
+ SlackRubyBot::App.new
13
+ end
14
+ let(:client) { app.send(:client) }
15
+ let(:gif_image_url) { 'http://media2.giphy.com/media/pzOijFsdDrsS4/giphy.gif' }
16
+ it 'sends a message with gif' do
17
+ gif = Giphy::RandomGif.new('image_url' => gif_image_url)
18
+ expect(Giphy).to receive(:random).and_return(gif)
19
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: "message\n#{gif_image_url}")
20
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
21
+ end
22
+ it 'eats up the error' do
23
+ expect(Giphy).to receive(:random) { fail 'oh no!' }
24
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
25
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
26
+ end
27
+ it 'eats up nil gif' do
28
+ expect(Giphy).to receive(:random).and_return(nil)
29
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
30
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
31
+ end
32
+ context 'send_gifs' do
33
+ context 'set to false via client' do
34
+ before do
35
+ client.send_gifs = false
36
+ end
37
+ it 'does not send a gif' do
38
+ expect(Giphy).to_not receive(:random)
39
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
40
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
41
+ end
42
+ after do
43
+ client.send_gifs = true
44
+ end
45
+ end
46
+ context 'set to false via config' do
47
+ before do
48
+ SlackRubyBot::Config.send_gifs = false
49
+ end
50
+ it 'does not send a gif' do
51
+ expect(Giphy).to_not receive(:random)
52
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
53
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
54
+ end
55
+ after do
56
+ SlackRubyBot::Config.send_gifs = nil
57
+ end
58
+ end
59
+ context 'set to false via SLACK_RUBY_BOT_SEND_GIFS' do
60
+ before do
61
+ ENV['SLACK_RUBY_BOT_SEND_GIFS'] = 'false'
62
+ end
63
+ it 'does not send a gif' do
64
+ expect(Giphy).to_not receive(:random)
65
+ expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
66
+ app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
67
+ end
68
+ after do
69
+ ENV.delete 'SLACK_RUBY_BOT_SEND_GIFS'
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Commands::Unknown do
4
+ def app
5
+ SlackRubyBot::App.new
6
+ end
7
+ let(:client) { app.send(:client) }
8
+ it 'invalid command' do
9
+ expect(message: "#{SlackRubyBot.config.user} foobar").to respond_with_slack_message("Sorry <@user>, I don't understand that command!")
10
+ end
11
+ it 'invalid command with @bot:' do
12
+ expect(message: "<@#{SlackRubyBot.config.user_id}>: foobar").to respond_with_slack_message("Sorry <@user>, I don't understand that command!")
13
+ end
14
+ it 'does not respond to sad face' do
15
+ expect(SlackRubyBot::Commands::Base).to_not receive(:send_message)
16
+ SlackRubyBot::App.new.send(:message, client, text: ':((')
17
+ end
18
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe SlackRubyBot::Config do
4
+ context 'send_gifs?' do
5
+ context 'default' do
6
+ it 'is true' do
7
+ expect(SlackRubyBot::Config.send_gifs?).to be true
8
+ end
9
+ end
10
+ context 'set to false' do
11
+ before do
12
+ SlackRubyBot::Config.send_gifs = false
13
+ end
14
+ it 'is false' do
15
+ expect(SlackRubyBot::Config.send_gifs?).to be false
16
+ end
17
+ after do
18
+ SlackRubyBot::Config.send_gifs = nil
19
+ end
20
+ end
21
+ context 'set to false via SLACK_RUBY_BOT_SEND_GIFS' do
22
+ before do
23
+ ENV['SLACK_RUBY_BOT_SEND_GIFS'] = 'false'
24
+ end
25
+ it 'is false' do
26
+ expect(SlackRubyBot::Config.send_gifs?).to be false
27
+ end
28
+ after do
29
+ ENV.delete 'SLACK_RUBY_BOT_SEND_GIFS'
30
+ end
31
+ end
32
+ context 'set to true' do
33
+ before do
34
+ SlackRubyBot::Config.send_gifs = true
35
+ end
36
+ it 'is false' do
37
+ expect(SlackRubyBot::Config.send_gifs?).to be true
38
+ end
39
+ after do
40
+ SlackRubyBot::Config.send_gifs = nil
41
+ end
42
+ end
43
+ context 'set to true via SLACK_RUBY_BOT_SEND_GIFS' do
44
+ before do
45
+ ENV['SLACK_RUBY_BOT_SEND_GIFS'] = 'true'
46
+ end
47
+ it 'is false' do
48
+ expect(SlackRubyBot::Config.send_gifs?).to be true
49
+ end
50
+ after do
51
+ ENV.delete 'SLACK_RUBY_BOT_SEND_GIFS'
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe RSpec do
4
+ let! :command do
5
+ Class.new(SlackRubyBot::Commands::Base) do
6
+ command 'raise'
7
+
8
+ def self.call(_client, _data, match)
9
+ fail ArgumentError, match[:command]
10
+ end
11
+ end
12
+ end
13
+ def app
14
+ SlackRubyBot::App.new
15
+ end
16
+ it 'respond_with_error' do
17
+ expect(message: "#{SlackRubyBot.config.user} raise").to respond_with_error(ArgumentError, 'raise')
18
+ end
19
+ end