pepito 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +41 -0
  3. data/.rubocop.yml +8 -0
  4. data/Gemfile +3 -0
  5. data/README.md +26 -0
  6. data/Rakefile +11 -0
  7. data/bin/pepito +5 -0
  8. data/lib/pepito/adapter.rb +101 -0
  9. data/lib/pepito/adapters.rb +4 -0
  10. data/lib/pepito/database.rb +14 -0
  11. data/lib/pepito/errors/missing_configuration_value_error.rb +15 -0
  12. data/lib/pepito/errors/required_methods_error.rb +15 -0
  13. data/lib/pepito/handler/chat_router.rb +36 -0
  14. data/lib/pepito/handler/http_router.rb +30 -0
  15. data/lib/pepito/handler.rb +38 -0
  16. data/lib/pepito/handlers/extensions_catalog.rb +108 -0
  17. data/lib/pepito/handlers/help.rb +36 -0
  18. data/lib/pepito/handlers/info.rb +40 -0
  19. data/lib/pepito/handlers/room.rb +23 -0
  20. data/lib/pepito/http_api/http_callback.rb +49 -0
  21. data/lib/pepito/http_api/http_route.rb +48 -0
  22. data/lib/pepito/http_api/rack_app.rb +27 -0
  23. data/lib/pepito/message.rb +59 -0
  24. data/lib/pepito/robot.rb +367 -0
  25. data/lib/pepito/source.rb +32 -0
  26. data/lib/pepito/version.rb +4 -0
  27. data/lib/pepito/web_app/app.rb +41 -0
  28. data/lib/pepito/web_app/views/index.erb +69 -0
  29. data/lib/pepito.rb +21 -0
  30. data/pepito.gemspec +35 -0
  31. data/test/pepito/handler/test_chat_router.rb +37 -0
  32. data/test/pepito/handler/test_http_router.rb +20 -0
  33. data/test/pepito/handlers/test_extensions_catalog.rb +38 -0
  34. data/test/pepito/handlers/test_help.rb +38 -0
  35. data/test/pepito/handlers/test_info.rb +32 -0
  36. data/test/pepito/handlers/test_room.rb +33 -0
  37. data/test/pepito/test_adapter.rb +71 -0
  38. data/test/pepito/test_handler.rb +28 -0
  39. data/test/pepito/test_message.rb +101 -0
  40. data/test/pepito/test_robot.rb +259 -0
  41. data/test/pepito/test_source.rb +27 -0
  42. data/test/test_pepito.rb +8 -0
  43. metadata +300 -0
@@ -0,0 +1,20 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handler/http_router'
3
+
4
+ class Stub
5
+ include Pepito::Handler::HTTPRouter
6
+ end
7
+
8
+ class TestPepitoHandlerHTTPRouter < MiniTest::Test
9
+ def test_emtpy_routes
10
+ stub = Stub.new
11
+ assert_empty stub.http_routes
12
+ end
13
+
14
+ def test_add_route
15
+ stub = Stub.new
16
+ stub.http_route('GET', '/path', :func_sym)
17
+
18
+ assert stub.http_routes[0]
19
+ end
20
+ end
@@ -0,0 +1,38 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handlers/room'
3
+
4
+ class TestPepitoHandlersExtensionsCatalog < MiniTest::Test
5
+ def setup
6
+ @handler = Pepito::Handlers::ExtensionsCatalog.new(nil)
7
+ @handler.run
8
+ end
9
+
10
+ def test_has_chat_routes
11
+ chat_routes = [
12
+ 'handlers list',
13
+ 'adapters list',
14
+ 'routes list'
15
+ ]
16
+ @handler.chat_routes.each do |route|
17
+ chat_routes.entries.each do |r|
18
+ chat_routes.delete(r) if route.pattern.match(r)
19
+ end
20
+ end
21
+ assert_empty chat_routes
22
+ end
23
+
24
+ def test_has_web_routes
25
+ http_routes = [
26
+ { method: 'GET', path: '/extensions' },
27
+ { method: 'GET', path: '/handlers' },
28
+ { method: 'GET', path: '/adapters' },
29
+ { method: 'GET', path: '/routes' }
30
+ ]
31
+ @handler.http_routes.each do |route|
32
+ http_routes.entries.each do |r|
33
+ http_routes.delete(r) if route.route.path_for_generation == r[:path] && route.route.request_methods.include?(r[:method])
34
+ end
35
+ end
36
+ assert_empty http_routes
37
+ end
38
+ end
@@ -0,0 +1,38 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handlers/room'
3
+
4
+ class TestPepitoHandlersHelp < MiniTest::Test
5
+ Struct.new('Robot', :name, :handlers)
6
+ Struct.new('Route', :help, :command)
7
+ Struct.new('Handler', :chat_routes)
8
+
9
+ def setup
10
+ @mock_robot = Struct::Robot.new('pepito', [])
11
+ @handler = Pepito::Handlers::Help.new(@mock_robot)
12
+ @handler.run
13
+ end
14
+
15
+ def test_has_chat_routes
16
+ chat_routes = ['help']
17
+ @handler.chat_routes.each do |route|
18
+ chat_routes.entries.each do |r|
19
+ chat_routes.delete(r) if route.pattern.match(r)
20
+ end
21
+ end
22
+ assert_empty chat_routes
23
+ end
24
+
25
+ def test_chat_help
26
+ route_1 = Struct::Route.new('route1 help', false)
27
+ route_2 = Struct::Route.new('route2 help', true)
28
+
29
+ handler1 = Struct::Handler.new([route_1, route_2])
30
+ handler2 = Struct::Handler.new([route_1, route_2])
31
+
32
+ @mock_robot.handlers = { h1: handler1, h2: handler2 }
33
+
34
+ chat_help = @handler.chat_help(nil, nil)
35
+ expected = ['route1 help', 'pepito route2 help', 'route1 help', 'pepito route2 help']
36
+ assert chat_help, expected
37
+ end
38
+ end
@@ -0,0 +1,32 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handlers/info'
3
+ require 'pepito/version'
4
+
5
+ class TestPepitoHandlersInfo < MiniTest::Test
6
+ def setup
7
+ @handler = Pepito::Handlers::Info.new(nil)
8
+ @handler.run
9
+ end
10
+
11
+ def test_has_chat_routes
12
+ chat_routes = ['info']
13
+ @handler.chat_routes.each do |route|
14
+ chat_routes.entries.each do |r|
15
+ chat_routes.delete(r) if route.pattern.match(r)
16
+ end
17
+ end
18
+ assert_empty chat_routes
19
+ end
20
+
21
+ def test_has_web_routes
22
+ http_routes = [
23
+ { method: 'GET', path: '/info' }
24
+ ]
25
+ @handler.http_routes.each do |route|
26
+ http_routes.entries.each do |r|
27
+ http_routes.delete(r) if route.route.path_for_generation == r[:path] && route.route.request_methods.include?(r[:method])
28
+ end
29
+ end
30
+ assert_empty http_routes
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handlers/room'
3
+
4
+ class TestPepitoHandlersRoom < MiniTest::Test
5
+ def setup
6
+ @handler = Pepito::Handlers::Room.new(nil)
7
+ @handler.run
8
+ end
9
+
10
+ def test_has_chat_routes
11
+ chat_routes = ['set topic word', 'set topic multiple words']
12
+ @handler.chat_routes.each do |route|
13
+ chat_routes.entries.each do |r|
14
+ chat_routes.delete(r) if route.pattern.match(r)
15
+ end
16
+ end
17
+ assert_empty chat_routes
18
+ end
19
+
20
+ def test_chat_set_topic
21
+ match_data = { 'topic' => 'topic' }
22
+ mock_adapter = MiniTest::Mock.new
23
+ mock_source = MiniTest::Mock.new
24
+
25
+ mock_adapter.expect(:topic, nil, [mock_source, match_data['topic']])
26
+ mock_source.expect(:adapter, mock_adapter)
27
+
28
+ @handler.chat_set_topic(mock_source, match_data)
29
+
30
+ mock_adapter.verify
31
+ mock_source.verify
32
+ end
33
+ end
@@ -0,0 +1,71 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/adapter'
3
+ require 'pepito/errors/required_methods_error'
4
+
5
+ class StubAdapter < Pepito::Adapter
6
+ class << self
7
+ attr_accessor :configs
8
+ end
9
+
10
+ Pepito::Adapter::REQUIRED_METHODS.each do |arg|
11
+ send :define_method, arg do
12
+ nil
13
+ end
14
+ end
15
+ end
16
+
17
+ class TestPepitoAdapter < MiniTest::Test
18
+ def test_raise_missing_methods
19
+ StubAdapter.configs = [{}]
20
+ e = assert_raises Pepito::Errors::RequiredMethodsError do
21
+ Pepito::Adapter.new(nil, {})
22
+ end
23
+
24
+ assert_equal e.missing_methods, Pepito::Adapter::REQUIRED_METHODS
25
+ end
26
+
27
+ def test_no_missing_methods
28
+ StubAdapter.configs = [{}]
29
+ StubAdapter.new(nil, {})
30
+ pass
31
+ end
32
+
33
+ def test_optional_config
34
+ StubAdapter.configs = [{ name: 'optional', required: false }]
35
+ StubAdapter.new(nil, {})
36
+ pass
37
+ end
38
+
39
+ def test_required_config
40
+ StubAdapter.configs = [{ name: 'required', required: true }]
41
+ StubAdapter.new(nil, 'required' => 'config_value')
42
+ pass
43
+ end
44
+
45
+ def test_missing_required_config
46
+ StubAdapter.configs = [{ name: 'required', required: true }]
47
+ e = assert_raises Pepito::Errors::MissingConfigurationValueError do
48
+ StubAdapter.new(nil, {})
49
+ end
50
+
51
+ assert_equal e.configuration_values, ['required']
52
+ end
53
+
54
+ def test_nil_required_config
55
+ StubAdapter.configs = [{ name: 'required', required: true }]
56
+ e = assert_raises Pepito::Errors::MissingConfigurationValueError do
57
+ StubAdapter.new(nil, 'required' => nil)
58
+ end
59
+
60
+ assert_equal e.configuration_values, ['required']
61
+ end
62
+
63
+ def test_empty_required_config
64
+ StubAdapter.configs = [{ name: 'required', required: true }]
65
+ e = assert_raises Pepito::Errors::MissingConfigurationValueError do
66
+ StubAdapter.new(nil, 'required' => '')
67
+ end
68
+
69
+ assert_equal e.configuration_values, ['required']
70
+ end
71
+ end
@@ -0,0 +1,28 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/handler'
3
+
4
+ class TestPepitoHandler < MiniTest::Test
5
+ def test_http_routes_registry
6
+ mock_route = MiniTest::Mock.new
7
+ mock_route.expect(:route, nil)
8
+ mock_route.expect(:route, nil)
9
+
10
+ mock_router = MiniTest::Mock.new
11
+ mock_router.expect(:add_route, nil, [mock_route.route])
12
+
13
+ mock_http_api = MiniTest::Mock.new
14
+ mock_http_api.expect(:router, mock_router)
15
+
16
+ mock_robot = MiniTest::Mock.new
17
+ mock_robot.expect(:http_api, mock_http_api)
18
+
19
+ handler = Pepito::Handler.new(mock_robot)
20
+ handler.http_routes << mock_route
21
+ handler.start
22
+
23
+ assert mock_robot.verify
24
+ assert mock_http_api.verify
25
+ assert mock_router.verify
26
+ assert mock_route.verify
27
+ end
28
+ end
@@ -0,0 +1,101 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/message'
3
+
4
+ class TestPepitoMessage < MiniTest::Test
5
+ def test_command_false
6
+ message = create_message('pepito', 'message')
7
+ assert_equal message.command?, false
8
+ end
9
+
10
+ def test_command_false_if_name_empty
11
+ message = create_message('', 'message')
12
+ assert_equal message.command?, false
13
+ end
14
+
15
+ def test_command_false_if_name_empty_and_space_in_message
16
+ message = create_message('', ' message')
17
+ assert_equal message.command?, false
18
+ end
19
+
20
+ def test_command_true
21
+ message = create_message('pepito', 'pepito message')
22
+ assert_equal message.command?, true
23
+ assert_equal message.command, 'message'
24
+ end
25
+
26
+ def test_route_match_true_if_command_false_and_route_command_false
27
+ message = create_message('pepito', 'message')
28
+
29
+ mock_route = MiniTest::Mock.new
30
+ mock_route.expect(:command, false)
31
+ mock_route.expect(:pattern, /^message$/)
32
+
33
+ assert_equal message.match_route?(mock_route), true
34
+ end
35
+
36
+ def test_route_match_false_if_command_false_and_route_command_false
37
+ message = create_message('pepito', 'message asd')
38
+
39
+ mock_route = MiniTest::Mock.new
40
+ mock_route.expect(:command, false)
41
+ mock_route.expect(:command, false)
42
+ mock_route.expect(:pattern, /^message$/)
43
+
44
+ assert_equal message.match_route?(mock_route), false
45
+ end
46
+
47
+ def test_route_match_true_if_command_true_and_route_command_true
48
+ message = create_message('pepito', 'pepito message')
49
+
50
+ mock_route = MiniTest::Mock.new
51
+ mock_route.expect(:command, true)
52
+ mock_route.expect(:command, true)
53
+ mock_route.expect(:pattern, /^message$/)
54
+
55
+ assert_equal message.match_route?(mock_route), true
56
+ end
57
+
58
+ def test_route_match_false_if_command_true_and_route_command_true
59
+ message = create_message('pepito', 'pepito message asd')
60
+
61
+ mock_route = MiniTest::Mock.new
62
+ mock_route.expect(:command, true)
63
+ mock_route.expect(:command, true)
64
+ mock_route.expect(:pattern, /^message$/)
65
+
66
+ assert_equal message.match_route?(mock_route), false
67
+ end
68
+
69
+ def test_route_match_if_command_true_and_route_command_false
70
+ message = create_message('pepito', 'pepito message')
71
+
72
+ mock_route = MiniTest::Mock.new
73
+ mock_route.expect(:command, false)
74
+ mock_route.expect(:command, false)
75
+ mock_route.expect(:pattern, /^message$/)
76
+
77
+ assert_equal message.match_route?(mock_route), false
78
+ end
79
+
80
+ def test_route_match_if_command_false_and_route_command_true
81
+ message = create_message('pepito', 'message')
82
+
83
+ mock_route = MiniTest::Mock.new
84
+ mock_route.expect(:command, true)
85
+ mock_route.expect(:command, true)
86
+ mock_route.expect(:pattern, /^message$/)
87
+
88
+ assert_equal message.match_route?(mock_route), false
89
+ end
90
+
91
+ private
92
+
93
+ def create_message(name, body)
94
+ mock_robot = MiniTest::Mock.new
95
+ mock_robot.expect(:name, name)
96
+ mock_robot.expect(:name, name)
97
+ mock_robot.expect(:name, name)
98
+
99
+ Pepito::Message.new(mock_robot, nil, body)
100
+ end
101
+ end
@@ -0,0 +1,259 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/robot'
3
+
4
+ class TestPepitoRobot < MiniTest::Test
5
+ def setup
6
+ ENV['LOG_FILE'] = '/dev/null'
7
+
8
+ @mock_http_api = MiniTest::Mock.new
9
+ @mock_database = MiniTest::Mock.new
10
+ @mock_database.expect(:get, nil, ['name'])
11
+
12
+ Pepito::HTTPApi::RackApp.stub :new, @mock_http_api do
13
+ Pepito::Database.stub :new, @mock_database do
14
+ @robot = Pepito::Robot.new
15
+ end
16
+ end
17
+ end
18
+
19
+ def test_attributes
20
+ assert_equal 'pepito', @robot.name
21
+ assert_equal Pepito::WebApp::App, @robot.web_app
22
+ assert_instance_of Logger, @robot.logger
23
+ assert_instance_of Hash, @robot.handlers
24
+ assert_instance_of Hash, @robot.adapters
25
+ assert_instance_of Array, @robot.default_adapters
26
+ assert_instance_of Array, @robot.default_handlers
27
+ assert_empty @robot.handlers
28
+ assert_empty @robot.adapters
29
+ end
30
+
31
+ def test_methods
32
+ assert_respond_to @robot, :run
33
+ assert_respond_to @robot, :receive_message
34
+ assert_respond_to @robot, :start_handler
35
+ assert_respond_to @robot, :stop_handler
36
+ assert_respond_to @robot, :handler?
37
+ assert_respond_to @robot, :handlers_list
38
+ assert_respond_to @robot, :start_adapter
39
+ assert_respond_to @robot, :stop_adapter
40
+ assert_respond_to @robot, :adapter?
41
+ assert_respond_to @robot, :adapters_list
42
+ end
43
+
44
+ def test_handlers_list
45
+ assert_instance_of Array, @robot.handlers_list
46
+ end
47
+
48
+ def test_adapters_list
49
+ assert_instance_of Array, @robot.adapters_list
50
+ end
51
+
52
+ def test_start_handler
53
+ # Fail to start if handler is running
54
+ @robot.handlers.stub :key?, true do
55
+ assert_equal 1, @robot.start_handler('')
56
+ end
57
+
58
+ # Fail to start if handler does not exist
59
+ @robot.handlers.stub :key?, false do
60
+ assert_equal 2, @robot.start_handler('')
61
+ end
62
+
63
+ # Fail with other errors
64
+ @robot.handlers.stub :key?, false do
65
+ mock_handler = Class.new do
66
+ def initialize(_robot)
67
+ raise 'error'
68
+ end
69
+ end
70
+ Pepito::Handlers.stub :const_get, mock_handler do
71
+ assert_equal 3, @robot.start_handler('')
72
+ end
73
+ end
74
+
75
+ # Start handler successfully
76
+ @robot.handlers.stub :key?, false do
77
+ name = 'handler_name'
78
+
79
+ mock_handler = MiniTest::Mock.new
80
+ mock_handler.expect(:run, nil)
81
+ mock_handler.expect(:start, nil)
82
+
83
+ mock_handler_klass = MiniTest::Mock.new
84
+ mock_handler_klass.expect(:new, mock_handler, [@robot])
85
+
86
+ mock_router = MiniTest::Mock.new
87
+ mock_router.expect(:uncompile, nil)
88
+
89
+ @mock_http_api.expect(:router, mock_router)
90
+ @mock_database.expect(:sadd, nil, ['handlers', name])
91
+
92
+ Pepito::Handlers.stub :const_get, mock_handler_klass do
93
+ assert_equal 0, @robot.start_handler(name)
94
+ assert mock_handler.verify
95
+ assert mock_router.verify
96
+ assert mock_handler_klass.verify
97
+ assert @mock_http_api.verify
98
+ assert @mock_database.verify
99
+ end
100
+ end
101
+ end
102
+
103
+ def test_stop_handler
104
+ # Fail to stop if handler is in the default handlers list
105
+ @robot.default_handlers.stub :include?, true do
106
+ assert_equal 1, @robot.stop_handler('')
107
+ end
108
+
109
+ # Fail to stop if handler is not running
110
+ @robot.default_handlers.stub :include?, false do
111
+ @robot.handlers.stub :key?, false do
112
+ assert_equal 2, @robot.stop_handler('')
113
+ end
114
+ end
115
+
116
+ # Stop successfully otherwise
117
+ @robot.default_handlers.stub :include?, false do
118
+ @robot.handlers.stub :key?, true do
119
+ @robot.handlers.stub :delete, nil do
120
+ name = 'handler'
121
+ mock_router = MiniTest::Mock.new
122
+ mock_router.expect(:reset!, nil)
123
+ @mock_database.expect(:srem, nil, ['handlers', name])
124
+ @mock_http_api.expect(:router, mock_router)
125
+
126
+ assert_equal 0, @robot.stop_handler(name)
127
+ assert mock_router.verify
128
+ assert @mock_http_api.verify
129
+ assert @mock_database.verify
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+ def test_handler?
136
+ @robot.handlers.stub :key?, true do
137
+ assert @robot.handler?('')
138
+ end
139
+ @robot.handlers.stub :key?, false do
140
+ refute @robot.handler?('')
141
+ end
142
+ end
143
+
144
+ def test_start_adapter
145
+ # Fail to start if handler is running
146
+ @robot.adapters.stub :key?, true do
147
+ assert_equal 1, @robot.start_adapter('', {})
148
+ end
149
+
150
+ # Fail to start if handler does not exist
151
+ @robot.adapters.stub :key?, false do
152
+ assert_equal 2, @robot.start_adapter('', {})
153
+ end
154
+
155
+ # Fail if required methods missing
156
+ @robot.adapters.stub :key?, false do
157
+ mock_adapter = Class.new do
158
+ def initialize(_robot, _config)
159
+ raise Pepito::Errors::RequiredMethodsError.new([]), ''
160
+ end
161
+ end
162
+ Pepito::Adapters.stub :const_get, mock_adapter do
163
+ assert_equal 3, @robot.start_adapter('', {})
164
+ end
165
+ end
166
+
167
+ # Fail if missing configuration
168
+ @robot.adapters.stub :key?, false do
169
+ mock_adapter = Class.new do
170
+ def initialize(_robot, _config)
171
+ raise Pepito::Errors::MissingConfigurationValueError.new([]), ''
172
+ end
173
+ end
174
+ Pepito::Adapters.stub :const_get, mock_adapter do
175
+ assert_equal 4, @robot.start_adapter('', {})
176
+ end
177
+ end
178
+
179
+ # Fail with other errors
180
+ @robot.adapters.stub :key?, false do
181
+ mock_adapter = Class.new do
182
+ def initialize(_robot, _config)
183
+ raise 'error'
184
+ end
185
+ end
186
+ Pepito::Adapters.stub :const_get, mock_adapter do
187
+ assert_equal 5, @robot.start_adapter('', {})
188
+ end
189
+ end
190
+
191
+ # Start adapter successfully
192
+ @robot.adapters.stub :key?, false do
193
+ name = 'adapter_name'
194
+ config = { 'name' => 'option' }
195
+
196
+ mock_adapter = MiniTest::Mock.new
197
+ mock_adapter.expect(:run, nil)
198
+
199
+ mock_adapter_klass = MiniTest::Mock.new
200
+ mock_adapter_klass.expect(:new, mock_adapter, [@robot, config])
201
+
202
+ @mock_database.expect(:sadd, nil, ['adapters', name])
203
+ @mock_database.expect(:del, nil, [name])
204
+ config.each do |k, v|
205
+ @mock_database.expect(:hset, nil, [name, k, v])
206
+ end
207
+
208
+ Pepito::Adapters.stub :const_get, mock_adapter_klass do
209
+ Thread.stub :new, nil do
210
+ assert_equal 0, @robot.start_adapter(name, config)
211
+ assert mock_adapter.verify
212
+ assert mock_adapter_klass.verify
213
+ assert @mock_database.verify
214
+ end
215
+ end
216
+ end
217
+ end
218
+
219
+ def test_stop_adapter
220
+ # Fail to stop if adapter is in the default adapters list
221
+ @robot.default_adapters.stub :include?, true do
222
+ assert_equal 1, @robot.stop_adapter('')
223
+ end
224
+
225
+ # Fail to stop if adapter is not running
226
+ @robot.default_adapters.stub :include?, false do
227
+ @robot.adapters.stub :key?, false do
228
+ assert_equal 2, @robot.stop_adapter('')
229
+ end
230
+ end
231
+
232
+ # Stop successfully otherwise
233
+ @robot.default_adapters.stub :include?, false do
234
+ @robot.adapters.stub :key?, true do
235
+ @robot.adapters.stub :delete, nil do
236
+ mock_adapter = MiniTest::Mock.new
237
+ mock_adapter.expect(:stop, nil)
238
+ @robot.adapters.stub :[], mock_adapter do
239
+ name = 'adapter'
240
+ @mock_database.expect(:srem, nil, ['adapters', name])
241
+
242
+ assert_equal 0, @robot.stop_adapter(name)
243
+ assert mock_adapter.verify
244
+ assert @mock_database.verify
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end
250
+
251
+ def test_adapter?
252
+ @robot.adapters.stub :key?, true do
253
+ assert @robot.adapter?('')
254
+ end
255
+ @robot.adapters.stub :key?, false do
256
+ refute @robot.adapter?('')
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,27 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito/source'
3
+
4
+ class TestPepitoSource < MiniTest::Test
5
+ def setup
6
+ @mock_adapter = MiniTest::Mock.new
7
+ @mock_adapter.expect(:==, true, [@mock_adapter])
8
+
9
+ @source = Pepito::Source.new(@mock_adapter, 'user', 'room', false)
10
+ end
11
+
12
+ def test_adapter_assignment
13
+ assert_equal @source.adapter, @mock_adapter
14
+ end
15
+
16
+ def test_user_assignment
17
+ assert_equal @source.user, 'user'
18
+ end
19
+
20
+ def test_room_assignment
21
+ assert_equal @source.room, 'room'
22
+ end
23
+
24
+ def test_private_message_assignment
25
+ assert_equal @source.private_message, false
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ require 'minitest/autorun'
2
+ require 'pepito'
3
+
4
+ class TestPepito < MiniTest::Test
5
+ def test_redis_namespace_is_pepito
6
+ assert_equal :pepito, Pepito::REDIS_NAMESPACE
7
+ end
8
+ end