pepito 0.0.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.
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