lita-coffee 0.0.1 → 0.0.2
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/lib/lita/handlers/coffee.rb +27 -27
- data/lita-coffee.gemspec +1 -1
- data/spec/lita/handlers/coffee_spec.rb +46 -27
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b49345f070b8d118bf1d960e0f07dcd7a56dffc
|
4
|
+
data.tar.gz: 7ff14d8b53dbeb2cee7200933edcd8e164e96c2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48816a6a46e4569e3b64a2e3393c9be8daa0855bcb5db2260b248be329e0ecb215c24f4337ec549caa47537953793b54933e34b3575fd7344ad78ae1779ca113
|
7
|
+
data.tar.gz: b897fd6aa5f26089d1a0d57636ffe8163f33f9f509f7a2e3282856fc0b92f13a294de8e0b12acbe7aa4c91233a309aebbe617abf8c34ef533cce0f9ee2747dcc
|
data/lib/lita/handlers/coffee.rb
CHANGED
@@ -19,18 +19,18 @@ module Lita
|
|
19
19
|
end
|
20
20
|
|
21
21
|
route(
|
22
|
-
/^\(coffee\)(\s+\-[bcdgist]?|\s+\+)?(.*)/i,
|
22
|
+
/^\(?coffee\)?(\s+\-[bcdgist]?|\s+\+)?(.*)/i,
|
23
23
|
:coffee,
|
24
24
|
help: {
|
25
|
-
'
|
26
|
-
'
|
27
|
-
'
|
28
|
-
'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'
|
25
|
+
'coffee' => "List the orders for your group",
|
26
|
+
'coffee -i' => "Display your profile",
|
27
|
+
'coffee -s Colombian Filter' => "Set your coffee preference",
|
28
|
+
'coffee -g Cool Kids' => "Change your group",
|
29
|
+
'coffee +' => "Order a coffee",
|
30
|
+
'coffee -c' => "Cancel your order",
|
31
|
+
'coffee -b You owe me one!' => "Buy coffee for your group, clear the orders and send a message to each coffee drinker",
|
32
|
+
'coffee -t' => "Display system settings",
|
33
|
+
'coffee -d' => "Delete you from the coffee system",
|
34
34
|
}
|
35
35
|
)
|
36
36
|
|
@@ -50,71 +50,71 @@ module Lita
|
|
50
50
|
group = get_group(my_user)
|
51
51
|
|
52
52
|
# Setup new users
|
53
|
-
response.reply("Welcome to
|
53
|
+
response.reply("Welcome to coffee! You have been added to the #{@@DEFAULT_GROUP} group with an order of #{@@DEFAULT_COFFEE}. Type help coffee for help.") if initialize_user_redis(my_user) == :new_user
|
54
54
|
|
55
55
|
# Retrieve my preference
|
56
56
|
if get_settings
|
57
57
|
settings = get_settings(my_user)
|
58
|
-
response.reply("Your current
|
58
|
+
response.reply("Your current coffee is #{settings['coffee']}. You are in the #{settings['group']} group.")
|
59
59
|
# Set my coffee
|
60
60
|
elsif set_coffee
|
61
61
|
result = set_coffee(my_user,preference)
|
62
62
|
if result == "OK"
|
63
|
-
response.reply("
|
63
|
+
response.reply("Coffee set to #{preference}")
|
64
64
|
else
|
65
|
-
response.reply("(sadpanda) Failed to set your
|
65
|
+
response.reply("(sadpanda) Failed to set your coffee for some reason: #{result.inspect}")
|
66
66
|
end
|
67
67
|
# Delete me altogether
|
68
68
|
elsif delete_me
|
69
69
|
result = delete_user(my_user)
|
70
70
|
if result == 1
|
71
|
-
response.reply("You have been deleted from
|
71
|
+
response.reply("You have been deleted from coffee")
|
72
72
|
else
|
73
|
-
response.reply("(sadpanda) Failed to delete you from
|
73
|
+
response.reply("(sadpanda) Failed to delete you from coffee for some reason: #{result.inspect}")
|
74
74
|
end
|
75
75
|
# Change my coffee group
|
76
76
|
elsif change_group
|
77
77
|
result = set_coffee_group(my_user,preference)
|
78
78
|
if result == "OK"
|
79
|
-
response.reply("
|
79
|
+
response.reply("Group set to #{preference}")
|
80
80
|
else
|
81
|
-
response.reply("(sadpanda) Failed to set your
|
81
|
+
response.reply("(sadpanda) Failed to set your coffee group for some reason: #{result.inspect}")
|
82
82
|
end
|
83
83
|
# Order a coffee
|
84
84
|
elsif order
|
85
85
|
result = order_coffee(my_user)
|
86
86
|
if result == "OK"
|
87
|
-
response.reply("Ordered you a
|
87
|
+
response.reply("Ordered you a coffee")
|
88
88
|
else
|
89
|
-
response.reply("(sadpanda) Failed to order your
|
89
|
+
response.reply("(sadpanda) Failed to order your coffee for some reason: #{result.inspect}")
|
90
90
|
end
|
91
91
|
# Cancel a coffee
|
92
92
|
elsif cancel
|
93
93
|
result = cancel_coffee(my_user)
|
94
94
|
if result == "OK"
|
95
|
-
response.reply("Cancelled your
|
95
|
+
response.reply("Cancelled your coffee")
|
96
96
|
else
|
97
|
-
response.reply("(sadpanda) Failed to cancel your
|
97
|
+
response.reply("(sadpanda) Failed to cancel your coffee for some reason: #{result.inspect}")
|
98
98
|
end
|
99
99
|
# Buy the coffees and clear the orders
|
100
100
|
elsif buy_coffee
|
101
|
-
response.reply("Thanks for ordering the
|
101
|
+
response.reply("Thanks for ordering the coffee for #{group}!\n--")
|
102
102
|
get_orders(group).each do |order|
|
103
103
|
response.reply("#{order}: #{get_coffee(order)}")
|
104
104
|
send_coffee_message(order,my_user,preference) unless order == my_user
|
105
105
|
end
|
106
106
|
result = clear_orders(group)
|
107
107
|
if result == "OK"
|
108
|
-
response.reply("Cleared all
|
108
|
+
response.reply("Cleared all orders for #{group}")
|
109
109
|
else
|
110
|
-
response.reply("(sadpanda) Failed to clear the
|
110
|
+
response.reply("(sadpanda) Failed to clear the orders for some reason: #{result.inspect}")
|
111
111
|
end
|
112
112
|
# tests
|
113
113
|
elsif system_settings
|
114
114
|
response.reply("Default coffee: #{@@DEFAULT_COFFEE}, Default group: #{@@DEFAULT_GROUP}")
|
115
115
|
# List the orders
|
116
116
|
else
|
117
|
-
response.reply("Current
|
117
|
+
response.reply("Current orders for #{group}:-\n--")
|
118
118
|
get_orders(group).each do |order|
|
119
119
|
response.reply("#{order}: #{get_coffee(order)}")
|
120
120
|
end
|
@@ -192,7 +192,7 @@ module Lita
|
|
192
192
|
def send_coffee_message(user,purchaser,message)
|
193
193
|
myuser = Lita::User.find_by_name(user)
|
194
194
|
msg = Lita::Message.new(robot,'',Lita::Source.new(user: myuser))
|
195
|
-
msg.reply("#{purchaser} has bought you a
|
195
|
+
msg.reply("#{purchaser} has bought you a coffee!")
|
196
196
|
msg.reply(message) # what happens if message is nil?
|
197
197
|
rescue => e
|
198
198
|
Lita.logger.error("Coffee#send_coffee_message raised #{e.class}: #{e.message}\n#{e.backtrace}")
|
data/lita-coffee.gemspec
CHANGED
@@ -1,71 +1,90 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
#TODO: write this stuff
|
3
2
|
|
4
3
|
describe Lita::Handlers::Coffee, lita_handler: true do
|
5
4
|
|
6
|
-
it { is_expected.to route('(coffee).to(:coffee)
|
5
|
+
it { is_expected.to route('(coffee)').to(:coffee) }
|
6
|
+
it { is_expected.to route('coffee').to(:coffee) }
|
7
7
|
|
8
8
|
describe '#coffee' do
|
9
9
|
before{robot.trigger(:loaded)}
|
10
10
|
|
11
11
|
it 'sets up a user if they do not exist already' do
|
12
|
-
send_message("
|
13
|
-
expect(replies.first).to start_with("Welcome to
|
12
|
+
send_message("coffee")
|
13
|
+
expect(replies.first).to start_with("Welcome to coffee!")
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'lists the current coffee orders if no options received' do
|
17
|
-
send_message("
|
18
|
-
expect(replies.last).to start_with("Current
|
17
|
+
send_message("coffee")
|
18
|
+
expect(replies.last).to start_with("Current orders")
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'orders me a coffee if I ask it!' do
|
22
|
-
send_message("
|
23
|
-
expect(replies.last).to eq("Ordered you a
|
22
|
+
send_message("coffee +")
|
23
|
+
expect(replies.last).to eq("Ordered you a coffee")
|
24
|
+
send_message("coffee")
|
25
|
+
expect(replies.last).to start_with("Test User:")
|
24
26
|
end
|
25
27
|
|
26
28
|
it 'displays my profile settings' do
|
27
|
-
send_message("
|
28
|
-
expect(replies.last).to start_with("Your current
|
29
|
+
send_message("coffee -i")
|
30
|
+
expect(replies.last).to start_with("Your current coffee is")
|
29
31
|
end
|
30
32
|
|
31
33
|
it 'sets my coffee preference' do
|
32
|
-
send_message("
|
33
|
-
expect(replies.last).to eq("
|
34
|
-
send_message("
|
35
|
-
expect(replies.last).to start_with("Your current
|
34
|
+
send_message("coffee -s decaf soy cappuccino")
|
35
|
+
expect(replies.last).to eq("Coffee set to decaf soy cappuccino")
|
36
|
+
send_message("coffee -i")
|
37
|
+
expect(replies.last).to start_with("Your current coffee is decaf soy cappuccino")
|
36
38
|
end
|
37
39
|
|
38
40
|
it 'changes my coffee group' do
|
39
|
-
send_message("
|
40
|
-
expect(replies.last).to eq("
|
41
|
-
send_message("
|
41
|
+
send_message("coffee -g testing team")
|
42
|
+
expect(replies.last).to eq("Group set to testing team")
|
43
|
+
send_message("coffee -i")
|
42
44
|
expect(replies.last).to end_with("You are in the testing team group.")
|
43
45
|
end
|
44
46
|
|
45
47
|
it 'cancels my order' do
|
46
|
-
send_message("
|
47
|
-
|
48
|
+
send_message("coffee +")
|
49
|
+
order_a_coffee('stu')
|
50
|
+
order_a_coffee('joel')
|
51
|
+
expect(coffees_in_the_queue).to eq(3)
|
52
|
+
send_message("coffee -c")
|
53
|
+
expect(replies.last).to eq("Cancelled your coffee") #TODO: check that my name has been removed from the queue
|
54
|
+
expect(coffees_in_the_queue).to eq(2)
|
48
55
|
end
|
49
56
|
|
50
57
|
it 'deletes me from the system' do
|
51
|
-
send_message("
|
52
|
-
expect(replies.last).to eq("You have been deleted from
|
58
|
+
send_message("coffee -d")
|
59
|
+
expect(replies.last).to eq("You have been deleted from coffee")
|
53
60
|
end
|
54
61
|
|
55
62
|
it 'displays default settings' do
|
56
|
-
send_message("
|
63
|
+
send_message("coffee -t")
|
57
64
|
expect(replies.last).to start_with("Default coffee:")
|
58
65
|
end
|
59
66
|
|
60
67
|
it 'buys the coffees and clears the queue' do
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
68
|
+
order_a_coffee('stu')
|
69
|
+
order_a_coffee('joel')
|
70
|
+
send_message("coffee -b")
|
71
|
+
expect(replies.last).to start_with("Cleared all orders")
|
72
|
+
send_message("coffee")
|
65
73
|
expect(replies.last).to end_with("--")
|
74
|
+
expect(replies.select{|x| x == "Test User has bought you a coffee!"}.count).to eq(2)
|
66
75
|
end
|
67
76
|
|
68
|
-
|
77
|
+
def order_a_coffee(user)
|
78
|
+
user = Lita::User.create(1,name: user)
|
79
|
+
send_message('coffee +', as: user)
|
80
|
+
end
|
81
|
+
|
82
|
+
def coffees_in_the_queue
|
83
|
+
send_message('coffee')
|
84
|
+
replies.reverse.slice(0,replies.reverse.index{|x| ( x =~ /^Current orders/ ) == 0}).count
|
85
|
+
end
|
86
|
+
|
87
|
+
|
69
88
|
|
70
89
|
|
71
90
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-coffee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Auld
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|