XKCD: Split single test into multiple tests.

This commit is contained in:
neiljp (Neil Pilgrim) 2017-12-08 10:41:30 -08:00 committed by showell
parent 5673b49826
commit 6c7a03e37a

View file

@ -10,18 +10,7 @@ from zulip_bots.test_lib import BotTestCase
class TestXkcdBot(BotTestCase): class TestXkcdBot(BotTestCase):
bot_name = "xkcd" bot_name = "xkcd"
@mock.patch('logging.exception') def test_latest_command(self):
def test_bot(self, mock_logging_exception):
help_txt = "xkcd bot supports these commands:"
err_txt = "xkcd bot only supports these commands, not `{}`:"
commands = '''
* `@xkcd help` to show this help message.
* `@xkcd latest` to fetch the latest comic strip from xkcd.
* `@xkcd random` to fetch a random comic strip from xkcd.
* `@xkcd <comic id>` to fetch a comic strip based on `<comic id>` e.g `@xkcd 1234`.'''
invalid_id_txt = "Sorry, there is likely no xkcd comic strip with id: #"
# 'latest' query
bot_response = ("#1866: **Russell's Teapot**\n" bot_response = ("#1866: **Russell's Teapot**\n"
"[Unfortunately, NASA regulations state that Bertrand Russell-related " "[Unfortunately, NASA regulations state that Bertrand Russell-related "
"payloads can only be launched within launch vehicles which do not launch " "payloads can only be launched within launch vehicles which do not launch "
@ -33,7 +22,7 @@ class TestXkcdBot(BotTestCase):
expected_method='send_reply' expected_method='send_reply'
) )
# 'random' query def test_random_command(self):
bot_response = ("#1800: **Chess Notation**\n" bot_response = ("#1800: **Chess Notation**\n"
"[I've decided to score all my conversations using chess win-loss " "[I've decided to score all my conversations using chess win-loss "
"notation. (??)](https://imgs.xkcd.com/comics/chess_notation.png)") "notation. (??)](https://imgs.xkcd.com/comics/chess_notation.png)")
@ -50,7 +39,7 @@ class TestXkcdBot(BotTestCase):
expected_method='send_reply' expected_method='send_reply'
) )
# specific comic ID query def test_numeric_comic_id_command(self):
bot_response = ("#1: **Barrel - Part 1**\n[Don't we all.]" bot_response = ("#1: **Barrel - Part 1**\n[Don't we all.]"
"(https://imgs.xkcd.com/comics/barrel_cropped_(1).jpg)") "(https://imgs.xkcd.com/comics/barrel_cropped_(1).jpg)")
with self.mock_http_conversation('test_specific_id'): with self.mock_http_conversation('test_specific_id'):
@ -60,7 +49,10 @@ class TestXkcdBot(BotTestCase):
expected_method='send_reply' expected_method='send_reply'
) )
# Comic ID doesn't exist. @mock.patch('logging.exception')
def test_invalid_comic_ids(self, mock_logging_exception):
invalid_id_txt = "Sorry, there is likely no xkcd comic strip with id: #"
bot_response = invalid_id_txt + "999999999" bot_response = invalid_id_txt + "999999999"
with self.mock_http_conversation('test_not_existing_id'): with self.mock_http_conversation('test_not_existing_id'):
self.assert_bot_response( self.assert_bot_response(
@ -77,6 +69,14 @@ class TestXkcdBot(BotTestCase):
expected_method='send_reply' expected_method='send_reply'
) )
def test_help_responses(self):
help_txt = "xkcd bot supports these commands:"
err_txt = "xkcd bot only supports these commands, not `{}`:"
commands = '''
* `@xkcd help` to show this help message.
* `@xkcd latest` to fetch the latest comic strip from xkcd.
* `@xkcd random` to fetch a random comic strip from xkcd.
* `@xkcd <comic id>` to fetch a comic strip based on `<comic id>` e.g `@xkcd 1234`.'''
# Empty query, no request made to the Internet. # Empty query, no request made to the Internet.
bot_response = err_txt.format('')+commands bot_response = err_txt.format('')+commands
self.assert_bot_response( self.assert_bot_response(