contrib_bots: Add tests for xkcd bot.
This commit is contained in:
parent
ab2dcb869d
commit
b703d893ba
46
contrib_bots/bots/xkcd/test_xkcd.py
Normal file
46
contrib_bots/bots/xkcd/test_xkcd.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import absolute_import
|
||||
from __future__ import print_function
|
||||
|
||||
import mock
|
||||
import os
|
||||
import sys
|
||||
|
||||
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 TestXkcdBot(BotTestCase):
|
||||
bot_name = "xkcd"
|
||||
|
||||
@mock.patch('logging.exception')
|
||||
def test_bot(self, mock_logging_exception):
|
||||
help_txt = "xkcd bot supports these commands:"
|
||||
err_txt = "xkcd bot only supports these commands:"
|
||||
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: #"
|
||||
expected = {
|
||||
"": err_txt+commands,
|
||||
"help": help_txt+commands,
|
||||
"x": err_txt+commands,
|
||||
"0": invalid_id_txt + "0",
|
||||
"1": ("#1: **Barrel - Part 1**\n[Don't we all.]"
|
||||
"(https://imgs.xkcd.com/comics/barrel_cropped_(1).jpg)"),
|
||||
"1800": ("#1800: **Chess Notation**\n"
|
||||
"[I've decided to score all my conversations "
|
||||
"using chess win-loss notation. (??)]"
|
||||
"(https://imgs.xkcd.com/comics/chess_notation.png)"),
|
||||
"999999999": invalid_id_txt + "999999999",
|
||||
}
|
||||
for m, r in expected.items():
|
||||
self.assert_bot_output(
|
||||
{'content': m, 'type': "private", 'sender_email': "foo"}, r)
|
||||
self.assert_bot_output(
|
||||
{'content': m, 'type': "stream", 'sender_email': "foo"}, r)
|
Loading…
Reference in a new issue