boty 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +18 -1
- data/README.md +39 -3
- data/Rakefile +1 -1
- data/boty.gemspec +9 -5
- data/lib/boty.rb +2 -1
- data/lib/boty/action.rb +26 -35
- data/lib/boty/action_description.rb +24 -0
- data/lib/boty/bot.rb +36 -25
- data/lib/boty/dsl.rb +3 -3
- data/lib/boty/eventable.rb +4 -3
- data/lib/boty/http.rb +3 -4
- data/lib/boty/locale.rb +12 -13
- data/lib/boty/logger.rb +14 -3
- data/lib/boty/rspec.rb +15 -16
- data/lib/boty/session.rb +7 -8
- data/lib/boty/slack.rb +11 -3
- data/lib/boty/slack/channel.rb +2 -1
- data/lib/boty/slack/chat.rb +5 -1
- data/lib/boty/slack/rtm.rb +1 -1
- data/lib/boty/slack/url.rb +10 -5
- data/lib/boty/slack/user.rb +2 -1
- data/lib/boty/slack/users.rb +1 -1
- data/lib/boty/version.rb +1 -1
- data/script/knows.rb +10 -9
- data/script/pug.rb +5 -1
- data/spec/boty/bot_spec.rb +89 -72
- data/spec/boty/cli_spec.rb +5 -5
- data/spec/boty/dsl_spec.rb +12 -13
- data/spec/boty/rspec_spec.rb +2 -1
- data/spec/boty/script_loader_spec.rb +8 -6
- data/spec/boty/session_spec.rb +2 -2
- data/spec/boty/slack/chat_spec.rb +18 -18
- data/spec/boty/slack/im_spec.rb +4 -4
- data/spec/boty/slack/message_spec.rb +11 -9
- data/spec/boty/slack/rtm_spec.rb +3 -3
- data/spec/boty/slack/url_spec.rb +5 -5
- data/spec/boty/slack/users_spec.rb +23 -23
- data/spec/happy_path_spec.rb +19 -18
- data/spec/script/i18n_spec.rb +18 -10
- data/spec/script/knows_spec.rb +8 -7
- data/spec/script/pug_spec.rb +27 -10
- data/spec/script/remember_spec.rb +27 -21
- data/spec/spec_helper.rb +4 -3
- data/spec/support/em_support.rb +1 -3
- data/spec/support/faraday_support.rb +0 -1
- data/spec/support/faye_support.rb +9 -6
- data/spec/support/file_system_matchers.rb +4 -4
- data/spec/support/logger_support.rb +9 -12
- data/spec/support/session_support.rb +26 -15
- data/spec/support/slack_support.rb +9 -6
- data/spec/support/template_project_support.rb +24 -23
- data/spec/support/thor_support.rb +3 -3
- data/template/project/%bot_name%.rb +4 -1
- data/template/project/spec/spec_helper.rb +4 -2
- metadata +21 -4
data/spec/boty/cli_spec.rb
CHANGED
@@ -6,21 +6,21 @@ module Boty
|
|
6
6
|
subject(:cli) { described_class.new }
|
7
7
|
|
8
8
|
before(:all) do
|
9
|
-
FileUtils.mkdir_p "tmp"
|
9
|
+
FileUtils.mkdir_p "tmp" unless Dir.exist? "tmp"
|
10
10
|
FileUtils.chdir "tmp"
|
11
11
|
end
|
12
12
|
|
13
13
|
before do
|
14
|
-
FileUtils.rm_rf "nice_bot" if Dir.
|
14
|
+
FileUtils.rm_rf "nice_bot" if Dir.exist? "nice_bot"
|
15
15
|
|
16
|
-
allow(cli).to receive(:ask)
|
17
|
-
and_return ENV["SLACK_COMPANY"], ENV["SLACK_BOT_API_TOKEN"]
|
16
|
+
allow(cli).to receive(:ask)
|
17
|
+
.and_return ENV["SLACK_COMPANY"], ENV["SLACK_BOT_API_TOKEN"]
|
18
18
|
|
19
19
|
allow(cli).to receive(:run)
|
20
20
|
end
|
21
21
|
|
22
22
|
after(:all) do
|
23
|
-
FileUtils.rm_rf "nice_bot" if Dir.
|
23
|
+
FileUtils.rm_rf "nice_bot" if Dir.exist? "nice_bot"
|
24
24
|
FileUtils.chdir "../"
|
25
25
|
end
|
26
26
|
|
data/spec/boty/dsl_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Boty
|
2
2
|
RSpec.describe DSL do
|
3
|
-
let(:bot) { Bot.new(
|
3
|
+
let(:bot) { Bot.new("id" => "U123", "name" => "jeeba") }
|
4
4
|
subject(:dsl) { described_class.new bot }
|
5
5
|
|
6
6
|
def message(text, extras = {})
|
@@ -13,12 +13,11 @@ module Boty
|
|
13
13
|
|
14
14
|
before do
|
15
15
|
# used by message class
|
16
|
-
allow(Slack.users).to receive(:info).with("U5678")
|
17
|
-
and_return
|
16
|
+
allow(Slack.users).to receive(:info).with("U5678")
|
17
|
+
.and_return Slack::User.new("id" => "U5678", "name" => "julian")
|
18
18
|
end
|
19
19
|
|
20
|
-
methods_from_bot =
|
21
|
-
:desc, :respond, :match ]
|
20
|
+
methods_from_bot = %i(name brain know_how im say desc respond match)
|
22
21
|
methods_from_bot.each do |bot_method|
|
23
22
|
it "responds to :#{bot_method}" do
|
24
23
|
expect(dsl.respond_to?(bot_method)).to eq true
|
@@ -36,8 +35,8 @@ module Boty
|
|
36
35
|
say "Ohay <@#{user.id}>! I'm here, that's for sure."
|
37
36
|
end
|
38
37
|
|
39
|
-
expect(dsl).to receive(:say)
|
40
|
-
with "Ohay <@U5678>! I'm here, that's for sure."
|
38
|
+
expect(dsl).to receive(:say)
|
39
|
+
.with "Ohay <@U5678>! I'm here, that's for sure."
|
41
40
|
|
42
41
|
message "jeeba, are you there?"
|
43
42
|
end
|
@@ -47,8 +46,8 @@ module Boty
|
|
47
46
|
say "Ohay <@#{user.id}>! It matched."
|
48
47
|
end
|
49
48
|
|
50
|
-
expect(bot).to receive(:say)
|
51
|
-
with "Ohay <@U5678>! It matched."
|
49
|
+
expect(bot).to receive(:say)
|
50
|
+
.with "Ohay <@U5678>! It matched."
|
52
51
|
|
53
52
|
message "called with match?"
|
54
53
|
end
|
@@ -80,16 +79,16 @@ module Boty
|
|
80
79
|
executed = false
|
81
80
|
dsl.match "omg" do executed = true end
|
82
81
|
|
83
|
-
expect { message "bbq omg lol." }
|
84
|
-
to change { executed }.from(false).to true
|
82
|
+
expect { message "bbq omg lol." }
|
83
|
+
.to change { executed }.from(false).to true
|
85
84
|
end
|
86
85
|
|
87
86
|
it "binds a string with #respond" do
|
88
87
|
executed = false
|
89
88
|
dsl.respond "omg" do executed = true end
|
90
89
|
|
91
|
-
expect { message "<@jeeba>: bbq omg lol." }
|
92
|
-
to change { executed }.from(false).to true
|
90
|
+
expect { message "<@jeeba>: bbq omg lol." }
|
91
|
+
.to change { executed }.from(false).to true
|
93
92
|
end
|
94
93
|
end
|
95
94
|
|
data/spec/boty/rspec_spec.rb
CHANGED
@@ -28,7 +28,8 @@ module Boty
|
|
28
28
|
|
29
29
|
context "helpers" do
|
30
30
|
it "includes #message_event to fire `data['type'] = 'message' events" do
|
31
|
-
expect(@_bot).to receive(:event)
|
31
|
+
expect(@_bot).to receive(:event)
|
32
|
+
.with "type" => "message", "text" => "omg"
|
32
33
|
message "omg"
|
33
34
|
end
|
34
35
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
module Boty
|
2
2
|
RSpec.describe Boty::ScriptLoader, :fakefs, :users do
|
3
|
-
let(:dsl) { Boty::DSL.new Bot.new(
|
4
|
-
let(:data)
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
let(:dsl) { Boty::DSL.new Bot.new("name" => "jabber", "id" => "123") }
|
4
|
+
let(:data) do
|
5
|
+
{
|
6
|
+
"type" => "message",
|
7
|
+
"text" => "hey <@jabber>, pug me"
|
8
|
+
}
|
9
|
+
end
|
8
10
|
|
9
11
|
subject(:loader) { described_class.new Boty::DSL.new(bot) }
|
10
12
|
|
11
13
|
before do
|
12
|
-
FileUtils.mkdir "script" unless Dir.
|
14
|
+
FileUtils.mkdir "script" unless Dir.exist? "script"
|
13
15
|
File.open "script/omg.rb", "w" do |f|
|
14
16
|
f.write <<-RUBY
|
15
17
|
respond(/pug me/i) do
|
data/spec/boty/session_spec.rb
CHANGED
@@ -33,8 +33,8 @@ module Boty
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "intializes the sse client with the session url" do
|
36
|
-
expect(Faye::WebSocket::Client).to receive(:new)
|
37
|
-
with("ws://example.org/slack/sse/url")
|
36
|
+
expect(Faye::WebSocket::Client).to receive(:new)
|
37
|
+
.with("ws://example.org/slack/sse/url")
|
38
38
|
|
39
39
|
session.start
|
40
40
|
end
|
@@ -8,26 +8,26 @@ module Boty
|
|
8
8
|
}
|
9
9
|
|
10
10
|
let(:post_message_url) {
|
11
|
-
"https://slack.com/api/chat.postMessage?"
|
12
|
-
|
11
|
+
"https://slack.com/api/chat.postMessage?" \
|
12
|
+
"token=#{ENV['SLACK_BOT_API_TOKEN']}&#{parameters}"
|
13
13
|
}
|
14
14
|
|
15
15
|
describe "#post_message" do
|
16
16
|
it "uses api end point to send message with default parameters" do
|
17
|
-
expect(Slack::URL).to receive(:get)
|
18
|
-
with(post_message_url + "&text=omglolbbq")
|
17
|
+
expect(Slack::URL).to receive(:get)
|
18
|
+
.with(post_message_url + "&text=omglolbbq")
|
19
19
|
chat.post_message "omglolbbq"
|
20
20
|
end
|
21
21
|
|
22
22
|
it "uri encodes the message" do
|
23
|
-
expect(Slack::URL).to receive(:get)
|
24
|
-
with(post_message_url + "&text=omg%20lol%20bbq")
|
23
|
+
expect(Slack::URL).to receive(:get)
|
24
|
+
.with(post_message_url + "&text=omg%20lol%20bbq")
|
25
25
|
chat.post_message "omg lol bbq"
|
26
26
|
end
|
27
27
|
|
28
28
|
it "accepts extra api parameters" do
|
29
|
-
expect(Slack::URL).to receive(:get)
|
30
|
-
with(post_message_url + "&text=omg&extra=param")
|
29
|
+
expect(Slack::URL).to receive(:get)
|
30
|
+
.with(post_message_url + "&text=omg&extra=param")
|
31
31
|
chat.post_message "omg", extra: "param"
|
32
32
|
end
|
33
33
|
|
@@ -35,8 +35,8 @@ module Boty
|
|
35
35
|
let(:parameters) { "as_user=true&channel=lol" }
|
36
36
|
|
37
37
|
it "sends to a specific channel when one is given" do
|
38
|
-
expect(Slack::URL).to receive(:get)
|
39
|
-
with(post_message_url + "&text=omg")
|
38
|
+
expect(Slack::URL).to receive(:get)
|
39
|
+
.with(post_message_url + "&text=omg")
|
40
40
|
chat.post_message "omg", channel: "lol"
|
41
41
|
end
|
42
42
|
end
|
@@ -44,26 +44,26 @@ module Boty
|
|
44
44
|
|
45
45
|
describe "#post_im" do
|
46
46
|
let(:im_open_url) {
|
47
|
-
"https://slack.com/api/im.open?"
|
48
|
-
|
47
|
+
"https://slack.com/api/im.open?" \
|
48
|
+
"token=#{ENV['SLACK_BOT_API_TOKEN']}&user=U1234"
|
49
49
|
}
|
50
50
|
|
51
51
|
before do
|
52
|
-
allow(Slack::URL).to receive(:get).with(im_open_url)
|
53
|
-
and_return("channel" => { "id" => "C4321" })
|
52
|
+
allow(Slack::URL).to receive(:get).with(im_open_url)
|
53
|
+
.and_return("channel" => { "id" => "C4321" })
|
54
54
|
allow(chat).to receive(:post_message)
|
55
55
|
end
|
56
56
|
|
57
57
|
it "calls `#im.open` to open the channel" do
|
58
|
-
expect(chat.im).to receive(:open).with("U1234")
|
59
|
-
and_return Channel.new(id: "C4321", info: {})
|
58
|
+
expect(chat.im).to receive(:open).with("U1234")
|
59
|
+
.and_return Channel.new(id: "C4321", info: {})
|
60
60
|
|
61
61
|
chat.post_im "U1234", "message"
|
62
62
|
end
|
63
63
|
|
64
64
|
it "sends the message to the im channel returned by `#im.open`" do
|
65
|
-
expect(chat).to receive(:post_message)
|
66
|
-
with "message", channel: "C4321"
|
65
|
+
expect(chat).to receive(:post_message)
|
66
|
+
.with "message", channel: "C4321"
|
67
67
|
|
68
68
|
chat.post_im "U1234", "message"
|
69
69
|
end
|
data/spec/boty/slack/im_spec.rb
CHANGED
@@ -8,8 +8,8 @@ module Boty
|
|
8
8
|
let(:action) { :open }
|
9
9
|
|
10
10
|
let(:im_url) {
|
11
|
-
"https://slack.com/api/im.#{action}?"
|
12
|
-
|
11
|
+
"https://slack.com/api/im.#{action}?" \
|
12
|
+
"token=#{ENV['SLACK_BOT_API_TOKEN']}"
|
13
13
|
}
|
14
14
|
|
15
15
|
describe "#open" do
|
@@ -20,8 +20,8 @@ module Boty
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "returns a channel object with the im channel information" do
|
23
|
-
expect(Slack::URL).to receive(:get).with(im_url + "&user=U1234")
|
24
|
-
and_return(
|
23
|
+
expect(Slack::URL).to receive(:get).with(im_url + "&user=U1234")
|
24
|
+
.and_return(
|
25
25
|
"ok" => true,
|
26
26
|
"channel" => { "id" => "D024BFF1M" }
|
27
27
|
)
|
@@ -6,14 +6,16 @@ module Boty
|
|
6
6
|
let(:user_id) { "U7777" }
|
7
7
|
let(:user_name) { "julian" }
|
8
8
|
|
9
|
-
let(:message_json)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
let(:message_json) do
|
10
|
+
{
|
11
|
+
"type" => "message",
|
12
|
+
"text" => "omg lol bbq",
|
13
|
+
"user" => "U7777",
|
14
|
+
"channel" => "333",
|
15
|
+
"ts" => "1234",
|
16
|
+
"team" => "3452"
|
17
|
+
}
|
18
|
+
end
|
17
19
|
|
18
20
|
it "uses Slack.users.info to create a User instance" do
|
19
21
|
expect(message.user.id).to eq "U7777"
|
@@ -25,7 +27,7 @@ module Boty
|
|
25
27
|
expect(message.from? "U7777").to eq true
|
26
28
|
end
|
27
29
|
|
28
|
-
it "returns true
|
30
|
+
it "returns true when param `#respond_to? :id` is the message author" do
|
29
31
|
expect(message.from? OpenStruct.new(id: "U7777")).to eq true
|
30
32
|
end
|
31
33
|
end
|
data/spec/boty/slack/rtm_spec.rb
CHANGED
@@ -4,9 +4,9 @@ module Boty
|
|
4
4
|
subject(:rtm) { described_class.new }
|
5
5
|
|
6
6
|
let(:url_with_default_parameters) {
|
7
|
-
"https://#{ENV[
|
8
|
-
|
9
|
-
|
7
|
+
"https://#{ENV['SLACK_COMPANY']}.slack.com/api/rtm.start?" \
|
8
|
+
"token=#{ENV['SLACK_BOT_API_TOKEN']}&" \
|
9
|
+
"simple_latest=true&no_unreads=true"
|
10
10
|
}
|
11
11
|
|
12
12
|
describe "#start" do
|
data/spec/boty/slack/url_spec.rb
CHANGED
@@ -31,8 +31,8 @@ module Boty
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "parses the json response" do
|
34
|
-
expect(Net::HTTP).to receive(:get).with(URI("http://example.org"))
|
35
|
-
and_return "{\"it\": \"works\"}"
|
34
|
+
expect(Net::HTTP).to receive(:get).with(URI("http://example.org"))
|
35
|
+
.and_return "{\"it\": \"works\"}"
|
36
36
|
response = url.get "http://example.org"
|
37
37
|
expect(response).to eq "it" => "works"
|
38
38
|
end
|
@@ -48,11 +48,11 @@ module Boty
|
|
48
48
|
|
49
49
|
it "appends the api token" do
|
50
50
|
url = client.send :parameterize, {}
|
51
|
-
expect(url).to include "token=#{ENV[
|
51
|
+
expect(url).to include "token=#{ENV['SLACK_BOT_API_TOKEN']}"
|
52
52
|
end
|
53
53
|
|
54
54
|
it "add extra parameters" do
|
55
|
-
url = client.send :parameterize,
|
55
|
+
url = client.send :parameterize, really: "omg"
|
56
56
|
expect(url).to include "really=omg"
|
57
57
|
end
|
58
58
|
|
@@ -62,7 +62,7 @@ module Boty
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "applies URI.encode to parameter values" do
|
65
|
-
url = client.send :parameterize,
|
65
|
+
url = client.send :parameterize, really: "omg lol"
|
66
66
|
expect(url).to include "really=omg%20lol"
|
67
67
|
end
|
68
68
|
end
|
@@ -2,49 +2,49 @@ module Boty
|
|
2
2
|
module Slack
|
3
3
|
RSpec.describe Users do
|
4
4
|
def url_for(action)
|
5
|
-
"https://slack.com/api/users.#{action}?"
|
5
|
+
"https://slack.com/api/users.#{action}?" \
|
6
6
|
"token=#{ENV['SLACK_BOT_API_TOKEN']}"
|
7
7
|
end
|
8
8
|
|
9
9
|
subject(:users) { described_class.new }
|
10
10
|
|
11
11
|
before do
|
12
|
-
allow(Slack::URL).to receive(:get)
|
13
|
-
and_return(
|
12
|
+
allow(Slack::URL).to receive(:get)
|
13
|
+
.with(url_for(:info) + "&user=U123456").and_return(
|
14
14
|
"ok" => true,
|
15
15
|
"user" => {
|
16
16
|
"id" => "U123456",
|
17
17
|
"name" => "julian"
|
18
18
|
}
|
19
|
-
|
19
|
+
)
|
20
20
|
|
21
|
-
allow(Slack::URL).to receive(:get).with(url_for(:list))
|
22
|
-
and_return(
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
36
|
-
)
|
21
|
+
allow(Slack::URL).to receive(:get).with(url_for(:list))
|
22
|
+
.and_return(
|
23
|
+
"ok" => true,
|
24
|
+
"members" => [
|
25
|
+
{
|
26
|
+
"id" => "U023BECGF",
|
27
|
+
"name" => "bobby"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"id" => "U123456",
|
31
|
+
"name" => "julian"
|
32
|
+
}
|
33
|
+
]
|
34
|
+
)
|
37
35
|
end
|
38
36
|
|
39
37
|
describe "#info" do
|
40
38
|
it "calls Slack::URL get with token and user" do
|
41
|
-
expect(Slack::URL).to receive(:get)
|
39
|
+
expect(Slack::URL).to receive(:get)
|
40
|
+
.with(url_for(:info) + "&user=U123456")
|
42
41
|
|
43
42
|
users.info "U123456"
|
44
43
|
end
|
45
44
|
|
46
45
|
it "returns a channel object with the im channel information" do
|
47
|
-
expect(Slack::URL).to receive(:get)
|
46
|
+
expect(Slack::URL).to receive(:get)
|
47
|
+
.with(url_for(:info) + "&user=U123456")
|
48
48
|
|
49
49
|
user = users.info("U123456")
|
50
50
|
|
@@ -56,7 +56,7 @@ module Boty
|
|
56
56
|
describe "#list" do
|
57
57
|
it "retrieves the users list" do
|
58
58
|
list = Slack.users.list
|
59
|
-
expect(list.map(&:name)).to eq
|
59
|
+
expect(list.map(&:name)).to eq %w(bobby julian)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
data/spec/happy_path_spec.rb
CHANGED
@@ -5,13 +5,13 @@ module Boty
|
|
5
5
|
def start_session(only_knows: nil)
|
6
6
|
executable_bot = File.read "bot"
|
7
7
|
@session = instance_eval executable_bot, "bot", 1
|
8
|
+
return unless only_knows
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
bot.no command_desc
|
10
|
+
bot.know_how.each { |action|
|
11
|
+
unless only_knows.include? action.desc.command
|
12
|
+
bot.no action.desc.command
|
13
13
|
end
|
14
|
-
|
14
|
+
}
|
15
15
|
end
|
16
16
|
|
17
17
|
def message(message)
|
@@ -37,13 +37,14 @@ module Boty
|
|
37
37
|
allow(cli).to receive(:ask).and_return "omg", "lol"
|
38
38
|
cli.new bot_name
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
|
+
expect(Dir.exist? bot_name).to eq true
|
41
42
|
|
42
43
|
Dir.chdir bot_name
|
43
44
|
|
44
|
-
expect(File.read ".env.local").to eq %
|
45
|
+
expect(File.read ".env.local").to eq %(SLACK_COMPANY=omg
|
45
46
|
SLACK_BOT_API_TOKEN=lol
|
46
|
-
|
47
|
+
)
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
@@ -61,37 +62,37 @@ SLACK_BOT_API_TOKEN=lol
|
|
61
62
|
expect(Faye::WebSocket::Client).to receive(:new).with(rtm_ws_url)
|
62
63
|
start_session
|
63
64
|
|
64
|
-
expect(bot).to receive(:say)
|
65
|
-
with "Ohay <@#{current_user}>! I'm here, that's for sure."
|
65
|
+
expect(bot).to receive(:say)
|
66
|
+
.with "Ohay <@#{current_user}>! I'm here, that's for sure."
|
66
67
|
message "hey boty!"
|
67
68
|
end
|
68
69
|
|
69
70
|
describe "knows" do
|
70
71
|
before do
|
71
|
-
start_session only_knows: [
|
72
|
+
start_session only_knows: ["knows"]
|
72
73
|
end
|
73
74
|
|
74
75
|
it "responds in particular with the known commands and handlers" do
|
75
76
|
# check that a im arrived to the current user with knows result
|
76
77
|
message = "```\nknows: List all the commands known by this bot.\n```"
|
77
|
-
expect{ message "<@boty>: knows" }
|
78
|
-
to send_im(current_user_id, message)
|
78
|
+
expect { message "<@boty>: knows" }
|
79
|
+
.to send_im(current_user_id, message)
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
82
83
|
it "overrides default locale with the project specific one" do
|
83
84
|
File.open("locale/xpto.yml", "w") do |file|
|
84
|
-
file.write(%
|
85
|
+
file.write(%(xpto:
|
85
86
|
scripts:
|
86
|
-
knows: "Wow! Such commands!"
|
87
|
+
knows: "Wow! Such commands!"))
|
87
88
|
end
|
88
|
-
start_session only_knows: [
|
89
|
+
start_session only_knows: ["knows"]
|
89
90
|
::Boty.locale = :xpto
|
90
91
|
|
91
92
|
message = "```\nknows: List all the commands known by this bot.\n```"
|
92
93
|
|
93
|
-
expect{ message "<@boty>: knows" }
|
94
|
-
to send_im(current_user_id, message)
|
94
|
+
expect { message "<@boty>: knows" }
|
95
|
+
.to send_im(current_user_id, message)
|
95
96
|
end
|
96
97
|
end
|
97
98
|
end
|