Skip to content
This repository was archived by the owner on Apr 27, 2019. It is now read-only.

Commit 3065b4c

Browse files
committed
[142] Added unit tests for AdminMessenger
1 parent 4d77f01 commit 3065b4c

7 files changed

Lines changed: 88 additions & 8 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,5 @@ nosetests.xml
5151
# Mac cleanup
5252
.DS_Store
5353

54-
cover
54+
cover
55+
.noseids

base_plugin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,13 @@ class BasePlugin(object):
5959
active = False
6060

6161
def __init__(self, *args, **kwargs):
62+
self.overridden_methods = {}
6263
super(BasePlugin, self).__init__(*args, **kwargs)
6364
if self.__class__.__name__ != 'BasePlugin':
6465
for packet, when_dict in self.overridden_packets.iteritems():
66+
self.overridden_methods.setdefault(packet, {})
6567
for when, packet_name in when_dict.iteritems():
66-
self.overridden_packets[packet][when] = getattr(
68+
self.overridden_methods[packet][when] = getattr(
6769
self, packet_name
6870
)
6971

plugin_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ def map_plugin_packets(self, plugin):
275275
"""
276276
Maps plugin overridden packets ready to use in do method.
277277
"""
278-
for packet_id, when_dict in plugin.overridden_packets.iteritems():
278+
for packet_id, when_dict in plugin.overridden_methods.iteritems():
279279
for when, packet_method in when_dict.iteritems():
280280
self.packets.setdefault(
281281
packet_id, {}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from unittest import TestCase
2+
3+
from mock import Mock, patch
4+
5+
from plugins.admin_messenger.admin_messenger import AdminMessenger
6+
7+
8+
class AdminMessengerTestCase(TestCase):
9+
def test_activate(self):
10+
plugin = AdminMessenger()
11+
plugin.config = Mock(chat_prefix='test prefix')
12+
13+
with self.assertRaises(AttributeError):
14+
self.plugin.prefix
15+
16+
plugin.activate()
17+
self.assertEqual(plugin.prefix, 'test prefix')
18+
19+
@patch.object(AdminMessenger, 'message_admins')
20+
@patch.object(AdminMessenger, 'broadcast_message')
21+
@patch('plugins.admin_messenger.admin_messenger.packets')
22+
def test_on_chat_sent_broadcast(
23+
self, mock_packets, mock_broadcast, mock_admins
24+
):
25+
mock_parse = Mock()
26+
message = Mock(message='###broadcast message')
27+
mock_parse.parse.return_value = message
28+
mock_packets.chat_sent.return_value = mock_parse
29+
mock_data = Mock(data='test data')
30+
plugin = AdminMessenger()
31+
plugin.config = Mock()
32+
plugin.activate()
33+
plugin.prefix = '#'
34+
35+
self.assertFalse(plugin.on_chat_sent(mock_data))
36+
mock_parse.parse.assert_called_with('test data')
37+
mock_broadcast.assert_called_with(message)
38+
39+
@patch.object(AdminMessenger, 'message_admins')
40+
@patch.object(AdminMessenger, 'broadcast_message')
41+
@patch('plugins.admin_messenger.admin_messenger.packets')
42+
def test_on_chat_sent_message_admins(
43+
self, mock_packets, mock_broadcast, mock_admins
44+
):
45+
plugin = AdminMessenger()
46+
plugin.config = Mock()
47+
plugin.activate()
48+
plugin.prefix = '#'
49+
mock_parse = Mock()
50+
mock_data = Mock(data='test data')
51+
message = Mock(message='##admin message')
52+
mock_parse.parse.return_value = message
53+
mock_packets.chat_sent.return_value = mock_parse
54+
55+
self.assertFalse(plugin.on_chat_sent(mock_data))
56+
mock_admins.assert_called_with(message)
57+
58+
@patch.object(AdminMessenger, 'message_admins')
59+
@patch.object(AdminMessenger, 'broadcast_message')
60+
@patch('plugins.admin_messenger.admin_messenger.packets')
61+
def test_on_chat_sent_normal_message(
62+
self, mock_packets, mock_broadcast, mock_admins
63+
):
64+
mock_parse = Mock()
65+
mock_data = Mock(data='test data')
66+
plugin = AdminMessenger()
67+
plugin.config = Mock()
68+
plugin.activate()
69+
plugin.prefix = '#'
70+
message = Mock(message='test message')
71+
mock_parse.parse.return_value = message
72+
73+
self.assertTrue(plugin.on_chat_sent(mock_data))
74+
self.assertFalse(mock_admins.called)
75+
self.assertFalse(mock_broadcast.called)

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ twisted
33
enum34
44
construct
55
tornado
6-
nose
6+
nose
7+
mock

tests/test_base_plugin.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ def after_burn_container(self, data):
3838

3939
test_plugin2 = TestPlugin2()
4040
test_plugin = TestPlugin()
41+
self.maxDiff = None
4142
self.assertDictEqual(
42-
test_plugin.overridden_packets,
43+
test_plugin.overridden_methods,
4344
{
4445
5: {
4546
'on': test_plugin.on_chat_received
@@ -50,7 +51,7 @@ def after_burn_container(self, data):
5051
}
5152
)
5253
self.assertDictEqual(
53-
test_plugin2.overridden_packets,
54+
test_plugin2.overridden_methods,
5455
{
5556
44: {
5657
'on': test_plugin2.on_burn_container,

tests/test_plugin_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,15 @@ def test_de_map_plugin_packets(self, mock_config, mock_path, mock_sys):
153153
def test_map_plugin_packets(self, mock_config, mock_path, mock_sys):
154154
mock_plugin = Mock()
155155
mock_plugin.name = 'Test'
156-
mock_plugin.overridden_packets = {
156+
mock_plugin.overridden_methods = {
157157
1: {
158158
'on': 'add me on 1',
159159
'after': 'add me after 1'
160160
}
161161
}
162162
mock_plugin2 = Mock()
163163
mock_plugin2.name = 'Test2'
164-
mock_plugin2.overridden_packets = {
164+
mock_plugin2.overridden_methods = {
165165
2: {
166166
'on': 'add me on 2'
167167
},

0 commit comments

Comments
 (0)