73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
from zulip_bots.request_test_lib import mock_request_exception
|
|
from zulip_bots.test_lib import BotTestCase, DefaultTests
|
|
|
|
|
|
class TestWikipediaBot(BotTestCase, DefaultTests):
|
|
bot_name = "wikipedia"
|
|
|
|
def test_bot(self) -> None:
|
|
# Single-word query
|
|
bot_request = "happy"
|
|
bot_response = """For search term:happy
|
|
1:[Happiness](https://en.wikipedia.org/wiki/Happiness)
|
|
2:[Happy!](https://en.wikipedia.org/wiki/Happy!)
|
|
3:[Happy,_Happy](https://en.wikipedia.org/wiki/Happy,_Happy)
|
|
"""
|
|
with self.mock_http_conversation("test_single_word"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Multi-word query
|
|
bot_request = "The sky is blue"
|
|
bot_response = """For search term:The sky is blue
|
|
1:[Sky_blue](https://en.wikipedia.org/wiki/Sky_blue)
|
|
2:[Sky_Blue_Sky](https://en.wikipedia.org/wiki/Sky_Blue_Sky)
|
|
3:[Blue_Sky](https://en.wikipedia.org/wiki/Blue_Sky)
|
|
"""
|
|
with self.mock_http_conversation("test_multi_word"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Number query
|
|
bot_request = "123"
|
|
bot_response = """For search term:123
|
|
1:[123](https://en.wikipedia.org/wiki/123)
|
|
2:[Japan_Airlines_Flight_123](https://en.wikipedia.org/wiki/Japan_Airlines_Flight_123)
|
|
3:[Iodine-123](https://en.wikipedia.org/wiki/Iodine-123)
|
|
"""
|
|
with self.mock_http_conversation("test_number_query"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Hash query
|
|
bot_request = "#"
|
|
bot_response = """For search term:#
|
|
1:[Number_sign](https://en.wikipedia.org/wiki/Number_sign)
|
|
"""
|
|
with self.mock_http_conversation("test_hash_query"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Incorrect word
|
|
bot_request = "sssssss kkkkk"
|
|
bot_response = (
|
|
"I am sorry. The search term you provided is not found :slightly_frowning_face:"
|
|
)
|
|
with self.mock_http_conversation("test_incorrect_query"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Empty query, no request made to the Internet.
|
|
bot_request = ""
|
|
bot_response = "Please enter your search term after @**test-bot**"
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Incorrect status code
|
|
bot_request = "Zulip"
|
|
bot_response = (
|
|
"Uh-Oh ! Sorry ,couldn't process the request right now.:slightly_frowning_face:\n"
|
|
"Please try again later."
|
|
)
|
|
|
|
with self.mock_http_conversation("test_status_code"):
|
|
self.verify_reply(bot_request, bot_response)
|
|
|
|
# Request Exception
|
|
bot_request = "Z"
|
|
with mock_request_exception():
|
|
self.verify_reply(bot_request, bot_response)
|