hipbot 0.1.0 → 0.2.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.
data/spec/spec_helper.rb CHANGED
@@ -3,3 +3,5 @@ require_relative '../lib/hipbot'
3
3
  RSpec.configure do |config|
4
4
  config.mock_with :mocha
5
5
  end
6
+
7
+ Hipbot.logger.level = Logger::FATAL
@@ -1,6 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Hipbot::Bot do
3
+ describe "a class that inherits", Hipbot::Bot do
4
+ let(:described_class) { Class.new(Hipbot::Bot) }
5
+ subject { described_class.instance }
6
+
4
7
  context "#on" do
5
8
  let(:sender) { stub_everything(name: 'Tom Smith') }
6
9
  let(:room) { stub_everything }
@@ -30,12 +33,11 @@ describe Hipbot::Bot do
30
33
  end
31
34
 
32
35
  it "should say when does not understand" do
33
- Hipbot::Bot.default do |message|
36
+ described_class.default do |message|
34
37
  reply("I don't understand \"#{message}\"")
35
38
  end
36
39
  subject.expects(:send_to_room).with(room, 'I don\'t understand "hello robot!"')
37
40
  subject.react(sender, room, '@robot hello robot!')
38
- Hipbot::Bot.class_variable_set :@@default_reaction, nil
39
41
  end
40
42
 
41
43
  it "should choose first option when multiple options match" do
@@ -194,6 +196,55 @@ describe Hipbot::Bot do
194
196
  subject.react(user, room, '@robot do you know @dave? @dave is @rachel father')
195
197
  end
196
198
  end
199
+
200
+ context "plugins" do
201
+ let(:plugin) {
202
+ Class.new(Hipbot::Plugin) do
203
+ on /plugin respond/ do
204
+ reply("plugin ack")
205
+ end
206
+
207
+ on /plugin method/ do
208
+ reply(plugin.some_method)
209
+ end
210
+
211
+ default do
212
+ reply("plugin default")
213
+ end
214
+
215
+ def some_method
216
+ "some method"
217
+ end
218
+ end
219
+ }
220
+
221
+ before do
222
+ subject.configuration.plugins = [ plugin ]
223
+ end
224
+
225
+ it "should respond to reaction defined in plugin" do
226
+ subject.expects(:send_to_room).with(room, 'plugin ack')
227
+ subject.react(sender, room, '@robot plugin respond')
228
+ end
229
+
230
+ it "should respond to default reaction defined in plugin" do
231
+ subject.expects(:send_to_room).with(room, 'plugin default')
232
+ subject.react(sender, room, '@robot blahblah')
233
+ end
234
+
235
+ it "should respond to default defined in bot even if plugins define defaults" do
236
+ described_class.default do
237
+ reply("bot default")
238
+ end
239
+ subject.expects(:send_to_room).with(room, 'bot default')
240
+ subject.react(sender, room, '@robot blahblah')
241
+ end
242
+
243
+ it "should have access to #plugin inside reaction" do
244
+ subject.expects(:send_to_room).with(room, 'some method')
245
+ subject.react(sender, room, '@robot plugin method')
246
+ end
247
+ end
197
248
  end
198
249
 
199
250
  describe "configurable options" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hipbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-10 00:00:00.000000000 Z
12
+ date: 2013-04-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: daemons
@@ -28,13 +28,13 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: 1.1.8
30
30
  - !ruby/object:Gem::Dependency
31
- name: active_support
31
+ name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 3.0.0
37
+ version: 3.2.12
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 3.0.0
45
+ version: 3.2.12
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: i18n
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 0.12.10
69
+ version: 1.0.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 0.12.10
77
+ version: 1.0.3
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: em-http-request
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 0.3.0
85
+ version: 1.0.3
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 0.3.0
93
+ version: 1.0.3
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: xmpp4r
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 2.11.0
117
+ version: 2.13.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,23 @@ dependencies:
122
122
  requirements:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: 2.11.0
125
+ version: 2.13.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard-rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 2.5.1
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 2.5.1
126
142
  - !ruby/object:Gem::Dependency
127
143
  name: mocha
128
144
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +146,7 @@ dependencies:
130
146
  requirements:
131
147
  - - ~>
132
148
  - !ruby/object:Gem::Version
133
- version: 0.11.4
149
+ version: 0.13.3
134
150
  type: :development
135
151
  prerelease: false
136
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,7 +154,7 @@ dependencies:
138
154
  requirements:
139
155
  - - ~>
140
156
  - !ruby/object:Gem::Version
141
- version: 0.11.4
157
+ version: 0.13.3
142
158
  description: Hipbot is a bot for HipChat, written in ruby & eventmachine.
143
159
  email:
144
160
  - pewniak747@gmail.com
@@ -148,9 +164,11 @@ extensions: []
148
164
  extra_rdoc_files: []
149
165
  files:
150
166
  - .gitignore
167
+ - .rspec
151
168
  - .travis.yml
152
169
  - Gemfile
153
170
  - Gemfile.lock
171
+ - Guardfile
154
172
  - LICENSE
155
173
  - README.md
156
174
  - Rakefile
@@ -166,10 +184,13 @@ files:
166
184
  - lib/hipbot/bot.rb
167
185
  - lib/hipbot/collection.rb
168
186
  - lib/hipbot/configuration.rb
169
- - lib/hipbot/http_response.rb
187
+ - lib/hipbot/helpers.rb
188
+ - lib/hipbot/logger.rb
170
189
  - lib/hipbot/message.rb
171
190
  - lib/hipbot/patches/encoding.rb
172
191
  - lib/hipbot/patches/hipchat_client.rb
192
+ - lib/hipbot/plugin.rb
193
+ - lib/hipbot/reactable.rb
173
194
  - lib/hipbot/reaction.rb
174
195
  - lib/hipbot/response.rb
175
196
  - lib/hipbot/room.rb
@@ -1,15 +0,0 @@
1
- module Hipbot
2
- class HttpResponse < Struct.new(:raw_response)
3
- def body
4
- raw_response.response
5
- end
6
-
7
- def code
8
- raw_response.response_header.status
9
- end
10
-
11
- def headers
12
- raw_response.response_header
13
- end
14
- end
15
- end