mostr-zulip-bot/zulip_bots/zulip_bots/bots/wikipedia/test_wikipedia.py
Anders Kaseorg 353c2de050 ruff: Fix EXE002 The file is executable but no shebang is present.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-29 16:54:40 -07:00

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)