From 971fabe8adda3991c528d646cb592a5ce7353dc5 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Wed, 24 May 2017 20:12:57 -0700 Subject: [PATCH] bots: Simplify automated testing library. --- contrib_bots/bots/define/test_define.py | 39 +++++++++---------------- contrib_bots/bots_test_lib.py | 15 ++++++++-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/contrib_bots/bots/define/test_define.py b/contrib_bots/bots/define/test_define.py index 1d38af2..449d0a2 100644 --- a/contrib_bots/bots/define/test_define.py +++ b/contrib_bots/bots/define/test_define.py @@ -5,36 +5,25 @@ from __future__ import print_function import os import sys -import unittest -from unittest import TestCase our_dir = os.path.dirname(os.path.abspath(__file__)) - # For dev setups, we can find the API in the repo itself. if os.path.exists(os.path.join(our_dir, '..')): sys.path.insert(0, '..') from bots_test_lib import BotTestCase -class TestDefineBot(TestCase): - def setUp(self): - # Messages to be sent to bot for testing. - self.request_messages = [ - {'content': "foo", 'type': "private", 'sender_email': "foo"}, - {'content': "cat", 'type': "stream", 'display_recipient': "foo", 'subject': "foo"}, - ] - # Reply messages from the test bot. - self.bot_response_messages = [ - "**foo**:\nDefinition not available.", - ("**cat**:\n\n* (**noun**) a small domesticated carnivorous mammal " - "with soft fur, a short snout, and retractile claws. It is widely " - "kept as a pet or for catching mice, and many breeds have been " - "developed.\n  their pet cat\n\n"), - ] +class TestDefineBot(BotTestCase): + bot_name = "define" - def runTest(self): - # type: None -> None - # Edit bot_module to test different bots, the below code can be looped for all the bots. - bot_module = os.path.join(our_dir, "define.py") - test_case = BotTestCase() - test_case.bot_test(messages=self.request_messages, bot_module=bot_module, - bot_response=self.bot_response_messages) + def test_bot(self): + self.assert_bot_output( + {'content': "foo", 'type': "private", 'sender_email': "foo"}, + "**foo**:\nDefinition not available." + ) + self.assert_bot_output( + {'content': "cat", 'type': "stream", 'display_recipient': "foo", 'subject': "foo"}, + ("**cat**:\n\n* (**noun**) a small domesticated carnivorous mammal " + "with soft fur, a short snout, and retractile claws. It is widely " + "kept as a pet or for catching mice, and many breeds have been " + "developed.\n  their pet cat\n\n"), + ) diff --git a/contrib_bots/bots_test_lib.py b/contrib_bots/bots_test_lib.py index 14c5186..f99547b 100644 --- a/contrib_bots/bots_test_lib.py +++ b/contrib_bots/bots_test_lib.py @@ -14,7 +14,19 @@ from bot_lib import StateHandler from contrib_bots import bot_lib from six.moves import zip -class BotTestCase(): +from unittest import TestCase + +current_dir = os.path.dirname(os.path.abspath(__file__)) + +class BotTestCase(TestCase): + bot_name = None + + def assert_bot_output(self, request, response): + # type: (str, str) -> None + bot_module = os.path.join(current_dir, "bots", + self.bot_name, self.bot_name + ".py") + self.bot_test(messages=[request], bot_module=bot_module, + bot_response=[response]) def mock_test(self, messages, message_handler, bot_response): # type: (List[Dict[str, str]], Function) -> None @@ -37,6 +49,5 @@ class BotTestCase(): return message_handler def bot_test(self, messages, bot_module, bot_response): - message_handler = self.bot_to_run(bot_module) self.mock_test(messages=messages, message_handler=message_handler, bot_response=bot_response)