def test_nondefault_magic_token(self): message = "# echo bar baz" q = queue.Queue() mh = MessageHandler(response_queue=q, magic_token="#") EchoHandler(mh) mh.handle(None, message) m = q.get() self.assertEqual(m.response().string, "bar baz", "Should use the echo handler")
def setUp(self): self.queue = queue.Queue() self.mh = MessageHandler(self.queue) # Register the echo handler as well EchoHandler(self.mh) self.message_a = "@ help blabla" self.message_b = "@ foo" self.message_c = "@ echo my_echo"
def test_priority_passes_through_commands_that_cannot_parse(self): never_parses = self.FakeNonParsing('nonparsing ') fake_echo = self.FakeEchoCommand('echo ') mh = MessageHandler([never_parses, fake_echo]) response = mh.handle_msg('test message', 'someUser', datetime.datetime(1,1,1)) self.assertEqual(response, 'echo test message')
def test_first_command_passed_takes_priority(self): fake_a = self.FakeEchoCommand('A ') fake_b = self.FakeEchoCommand('B ') mh = MessageHandler([fake_a, fake_b]) response = mh.handle_msg('test message', 'someUser', datetime.datetime(1,1,1)) self.assertEqual(response, 'A test message')
def test_one_command_returns_response(self): fake_echo = self.FakeEchoCommand('') mh = MessageHandler([fake_echo]) response = mh.handle_msg('test message', 'someUser', datetime.datetime(1,1,1)) self.assertEqual(response, 'test message')
def test_no_commands_returns_none_response(self): mh = MessageHandler([]) response = mh.handle_msg('test message', 'aUser', datetime.datetime(1, 1, 1)) self.assertEqual(response, None)
class Test(unittest.TestCase): def setUp(self): self.queue = queue.Queue() self.mh = MessageHandler(self.queue) # Register the echo handler as well EchoHandler(self.mh) self.message_a = "@ help blabla" self.message_b = "@ foo" self.message_c = "@ echo my_echo" def tearDown(self): pass def test_no_response_queue_defined(self): self.assertRaises(NoResponseQueueDefined, lambda: MessageHandler()) def test_response_queue_defined(self): q = queue.Queue() MessageHandler(q) self.assertTrue(True, "No exception should be raised") def test_no_message_defined(self): self.assertRaises(NoMessageDefined, lambda: self.mh.handle(None, None)) def test_tokenize_message_a(self): t = self.mh.tokenize(self.message_a) self.assertEqual("@", t.magic_token(), "Magic token must be '@'") self.assertEqual("help", t.keyword(), "Keyword must be 'help'") self.assertEqual("blabla", t.string(), "String must be 'blabla'") def test_message_a_defined(self): self.mh.handle(None, self.message_a) m = self.queue.get() self.assertTrue(m.response().string.startswith("Usage information"), "Should provide usage information") def test_tokenize_message_b(self): t = self.mh.tokenize(self.message_b) self.assertEqual("@", t.magic_token(), "Magic token must be '@'") self.assertEqual("foo", t.keyword(), "Keyword must be 'foo'") self.assertEqual("", t.string(), "String must be empty") def test_message_b_defined(self): self.mh.handle(None, self.message_b) m = self.queue.get() self.assertTrue( m.response().string.startswith("Sorry, I don't understand the command"), "Should provide usage information" ) self.assertTrue(self.queue.empty()) def test_tokenize_message_c(self): t = self.mh.tokenize(self.message_c) self.assertEqual("@", t.magic_token(), "Magic token must be '@'") self.assertEqual("echo", t.keyword(), "Keyword must be 'echo'") self.assertEqual("my_echo", t.string(), "String must be 'my_echo'") def test_message_c_defined(self): self.mh.handle(None, self.message_c) m = self.queue.get() self.assertEqual(m.response().string, "my_echo", "Should use the echo handler") def test_nondefault_magic_token(self): message = "# echo bar baz" q = queue.Queue() mh = MessageHandler(response_queue=q, magic_token="#") EchoHandler(mh) mh.handle(None, message) m = q.get() self.assertEqual(m.response().string, "bar baz", "Should use the echo handler")