class test_functional(unittest.TestCase): @classmethod def setUpClass(cls): from b3.fake import FakeConsole RavagedParser.__bases__ = (FakeConsole,) # Now parser inheritance hierarchy is : # RavagedParser -> FakeConsole -> Parser def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() ADMIN_CONFIG = XmlConfigParser() ADMIN_CONFIG.load(ADMIN_CONFIG_FILE) self.adminPlugin = AdminPlugin(self.parser, ADMIN_CONFIG) when(self.parser).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.parser.startup() def tearDown(self): if hasattr(self, "parser"): del self.parser.clients self.parser.working = False def test_map(self): # GIVEN when(self.parser.output).write("getmaplist false").thenReturn(u"""0 CTR_Bridge 1 CTR_Canyon 2 CTR_Derelict 3 CTR_IceBreaker 4 CTR_Liberty 5 CTR_Rooftop 6 Thrust_Bridge 7 Thrust_Canyon 8 Thrust_Chasm 9 Thrust_IceBreaker 10 Thrust_Liberty 11 Thrust_Oilrig 12 Thrust_Rooftop """.encode('UTF-8')) admin = FakeClient(console=self.parser, name="admin", guid="guid_admin", groupBits=128) admin.connects("guid_admin") # WHEN with patch.object(self.parser.output, 'write', wraps=self.parser.output.write) as write_mock: admin.says("!map chasm") # THEN write_mock.assert_has_calls([call("addmap Thrust_Chasm 1"), call("nextmap")])
def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() self.evt_queue = [] def queue_event(evt): self.evt_queue.append(evt) self.queueEvent_patcher = patch.object(self.parser, "queueEvent", wraps=queue_event) self.queueEvent_mock = self.queueEvent_patcher.start() self.parser.startup()
def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() ADMIN_CONFIG = CfgConfigParser() ADMIN_CONFIG.load(ADMIN_CONFIG_FILE) self.adminPlugin = AdminPlugin(self.parser, ADMIN_CONFIG) when(self.parser).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.parser.startup()
def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() ADMIN_CONFIG = XmlConfigParser() ADMIN_CONFIG.load(ADMIN_CONFIG_FILE) self.adminPlugin = AdminPlugin(self.parser, ADMIN_CONFIG) when(self.parser).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.parser.startup()
class RavagedTestCase(unittest.TestCase): """ Test case that is suitable for testing Ravaged parser specific features """ whatever = object() @classmethod def setUpClass(cls): from b3.fake import FakeConsole RavagedParser.__bases__ = (FakeConsole, ) # Now parser inheritance hierarchy is : # RavagedParser -> FakeConsole -> Parser def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() self.evt_queue = [] def queue_event(evt): self.evt_queue.append(evt) self.queueEvent_patcher = patch.object(self.parser, "queueEvent", wraps=queue_event) self.queueEvent_mock = self.queueEvent_patcher.start() self.parser.startup() def tearDown(self): self.queueEvent_patcher.stop() if hasattr(self, "parser"): del self.parser.clients self.parser.working = False def clear_events(self): """ clear the event queue, so when assert_has_event is called, it will look only at the newly caught events. """ self.evt_queue = [] def assert_has_event(self, event_type, data=None, client=None, target=None): """ assert that self.evt_queue contains at least one event for the given type that has the given characteristics. """ assert isinstance(event_type, basestring) expected_event = self.parser.getEvent(event_type, data, client, target) if not len(self.evt_queue): self.fail("expecting %s. Got no event instead" % expected_event) elif len(self.evt_queue) == 1: actual_event = self.evt_queue[0] self.assertEqual(expected_event.type, actual_event.type) if data != self.whatever: self.assertEqual(expected_event.data, actual_event.data) if client != self.whatever: self.assertTrue( client_equal(expected_event.client, actual_event.client)) if target != self.whatever: self.assertTrue( client_equal(expected_event.target, actual_event.target)) else: for evt in [ e for e in self.evt_queue if e.type == expected_event.type ]: results = [expected_event.type == evt.type] if data != self.whatever: results.append(expected_event.data == evt.data) if client != self.whatever: results.append( client_equal(expected_event.client, evt.client)) if target != self.whatever: results.append( client_equal(expected_event.target, evt.target)) if all(results): return self.fail("expecting event %s. Got instead: %s" % (expected_event, map(str, self.evt_queue)))
class RavagedTestCase(unittest.TestCase): """ Test case that is suitable for testing Ravaged parser specific features """ whatever = object() @classmethod def setUpClass(cls): from b3.fake import FakeConsole RavagedParser.__bases__ = (FakeConsole,) # Now parser inheritance hierarchy is : # RavagedParser -> FakeConsole -> Parser def setUp(self): self.status_response = None # defaults to STATUS_RESPONSE module attribute self.conf = XmlConfigParser() self.conf.loadFromString("""<configuration></configuration>""") self.parser = RavagedParser(self.conf) self.parser.output = Mock() self.parser.output.write = Mock() self.evt_queue = [] def queue_event(evt): self.evt_queue.append(evt) self.queueEvent_patcher = patch.object(self.parser, "queueEvent", wraps=queue_event) self.queueEvent_mock = self.queueEvent_patcher.start() self.parser.startup() def tearDown(self): self.queueEvent_patcher.stop() if hasattr(self, "parser"): del self.parser.clients self.parser.working = False def clear_events(self): """ clear the event queue, so when assert_has_event is called, it will look only at the newly caught events. """ self.evt_queue = [] def assert_has_event(self, event_type, data=None, client=None, target=None): """ assert that self.evt_queue contains at least one event for the given type that has the given characteristics. """ assert isinstance(event_type, basestring) expected_event = self.parser.getEvent(event_type, data, client, target) if not len(self.evt_queue): self.fail("expecting %s. Got no event instead" % expected_event) elif len(self.evt_queue) == 1: actual_event = self.evt_queue[0] self.assertEqual(expected_event.type, actual_event.type) if data != self.whatever: self.assertEqual(expected_event.data, actual_event.data) if client != self.whatever: self.assertTrue(client_equal(expected_event.client, actual_event.client)) if target != self.whatever: self.assertTrue(client_equal(expected_event.target, actual_event.target)) else: for evt in [e for e in self.evt_queue if e.type == expected_event.type]: results = [expected_event.type == evt.type] if data != self.whatever: results.append(expected_event.data == evt.data) if client != self.whatever: results.append(client_equal(expected_event.client, evt.client)) if target != self.whatever: results.append(client_equal(expected_event.target, evt.target)) if all(results): return self.fail("expecting event %s. Got instead: %s" % (expected_event, map(str, self.evt_queue)))