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

Commit f0e1def

Browse files
committed
[142] Added cover to gitignore, updated unit tests
1 parent d5eeaf1 commit f0e1def

4 files changed

Lines changed: 91 additions & 8 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,5 @@ nosetests.xml
5050

5151
# Mac cleanup
5252
.DS_Store
53+
54+
cover

base_plugin.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class BasePlugin(object):
5656
description = 'The common class for all plugins to inherit from.'
5757
version = '.1'
5858
depends = []
59-
active = True
59+
active = False
6060

6161
def __init__(self, *args, **kwargs):
6262
super(BasePlugin, self).__init__(*args, **kwargs)
@@ -72,7 +72,6 @@ def activate(self):
7272
Called when the plugins are activated, do any setup work here.
7373
"""
7474
self.active = True
75-
self.logger.debug('%s plugin object activated.', self.name)
7675
return True
7776

7877
def deactivate(self):
@@ -81,7 +80,6 @@ def deactivate(self):
8180
as it is likely that the plugin will soon be destroyed.
8281
"""
8382
self.active = False
84-
self.logger.debug('%s plugin object deactivated', self.name)
8583
return True
8684

8785
def on_protocol_version(self, data):

tests/test_base_plugin.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,19 @@ class BasePluginTestCase(TestCase):
77
def test_mapping_override_packets_dont_include_base_plugin(self):
88
base_plugin = BasePlugin()
99
with self.assertRaises(AttributeError):
10-
base_plugin.override_packets
10+
base_plugin.overridden_packets
11+
12+
def test_activation_defactivation(self):
13+
class TestPlugin(BasePlugin):
14+
pass
15+
16+
test_plugin1 = TestPlugin()
17+
self.assertFalse(test_plugin1.active)
18+
self.assertTrue(test_plugin1.activate())
19+
self.assertTrue(test_plugin1.active)
20+
21+
self.assertTrue(test_plugin1.deactivate())
22+
self.assertFalse(test_plugin1.active)
1123

1224
def test_mappig_override_packets(self):
1325
class TestPlugin(BasePlugin):
@@ -27,7 +39,7 @@ def after_burn_container(self, data):
2739
test_plugin2 = TestPlugin2()
2840
test_plugin = TestPlugin()
2941
self.assertDictEqual(
30-
test_plugin.override_packets,
42+
test_plugin.overridden_packets,
3143
{
3244
5: {
3345
'on': test_plugin.on_chat_received
@@ -38,11 +50,31 @@ def after_burn_container(self, data):
3850
}
3951
)
4052
self.assertDictEqual(
41-
test_plugin2.override_packets,
53+
test_plugin2.overridden_packets,
4254
{
4355
44: {
4456
'on': test_plugin2.on_burn_container,
4557
'after': test_plugin2.after_burn_container
4658
}
4759
}
4860
)
61+
62+
def test_unicode_str(self):
63+
class TestPlugin(BasePlugin):
64+
version = 1
65+
pass
66+
67+
self.assertEqual(
68+
str(TestPlugin()),
69+
'<Plugin instance: Base Plugin (version 1)>'
70+
)
71+
72+
self.assertEqual(
73+
unicode(TestPlugin()),
74+
'<Plugin instance: Base Plugin (version 1)>'
75+
)
76+
77+
self.assertNotEqual(
78+
repr(TestPlugin()),
79+
'<Plugin instance: Base Plugin (version 1)>'
80+
)

tests/test_plugin_manager.py

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from mock import Mock, patch, call
44

5-
from plugin_manager import PluginManager
5+
from plugin_manager import PluginManager, route
66

77

88
class PluginManagetTestCase(TestCase):
@@ -62,6 +62,7 @@ def test_get_plugin_name_from_file(self):
6262
self.assertTrue(mock_f.isdir.called)
6363
self.assertFalse(mock_f.basename.called)
6464

65+
@patch.object(PluginManager, 'de_map_plugin_packets')
6566
@patch('plugin_manager.reversed')
6667
@patch('plugin_manager.sys')
6768
@patch('plugin_manager.path')
@@ -71,7 +72,8 @@ def test_deactivate_plugins(
7172
mock_config,
7273
mock_path,
7374
mock_sys,
74-
mock_reversed
75+
mock_reversed,
76+
mock_de_map
7577
):
7678
mock_reversed.side_effect = reversed
7779
pm = PluginManager(Mock())
@@ -84,6 +86,7 @@ def test_deactivate_plugins(
8486

8587
mock_reversed.assert_called_with([1])
8688
self.assertTrue(pm.plugins[1].deactivate.called)
89+
mock_de_map.assert_called_with(pm.plugins[1])
8790

8891
@patch('plugin_manager.sys')
8992
@patch('plugin_manager.path')
@@ -101,3 +104,51 @@ def test_installed_plugins(self, mock_config, mock_path, mock_sys):
101104
result = pm.installed_plugins()
102105

103106
self.assertListEqual(result, ['plugin'])
107+
108+
109+
class RouteTestCase(TestCase):
110+
@patch('plugin_manager.reactor')
111+
@patch('plugin_manager.deferLater')
112+
@patch('plugin_manager.logging')
113+
def test_route_response_true(self, mock_logging, mock_defer, mock_reactor):
114+
test_func = Mock()
115+
mock_pm = Mock()
116+
mock_self = Mock()
117+
mock_self.plugin_manager = mock_pm
118+
add_err_back = Mock()
119+
mock_defer.return_value = add_err_back
120+
logger = Mock()
121+
mock_logging.getLogger.return_value = logger
122+
123+
test_f = route(test_func)
124+
test_f(mock_self, 'data')
125+
126+
mock_pm.do.assert_called_with(mock_self, 'on', 'data')
127+
mock_defer.assert_called_with(
128+
mock_reactor, .01, mock_pm.do, mock_self, 'after', 'data'
129+
)
130+
self.assertTrue(add_err_back.addErrback.called)
131+
self.assertTrue(mock_logging.getLogger.called)
132+
133+
error_callback = add_err_back.addErrback.call_args[0][0]
134+
self.assertFalse(logger.error.called)
135+
error_callback('test')
136+
self.assertTrue(logger.error.called)
137+
138+
@patch('plugin_manager.reactor')
139+
@patch('plugin_manager.deferLater')
140+
@patch('plugin_manager.logging')
141+
def test_route_response_false(
142+
self, mock_logging, mock_defer, mock_reactor
143+
):
144+
test_func = Mock()
145+
mock_pm = Mock()
146+
mock_pm.do.return_value = False
147+
mock_self = Mock()
148+
mock_self.plugin_manager = mock_pm
149+
150+
test_f = route(test_func)
151+
test_f(mock_self, 'data')
152+
153+
mock_pm.do.assert_called_with(mock_self, 'on', 'data')
154+
self.assertFalse(mock_defer.called)

0 commit comments

Comments
 (0)