define bot: add check & test to avoid sending words with non-letters.
This commit is contained in:
parent
f862cf2222
commit
c33ac65ac9
|
@ -3,6 +3,7 @@ import logging
|
||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
import html2text
|
import html2text
|
||||||
|
import string
|
||||||
|
|
||||||
class DefineHandler(object):
|
class DefineHandler(object):
|
||||||
'''
|
'''
|
||||||
|
@ -14,6 +15,7 @@ class DefineHandler(object):
|
||||||
REQUEST_ERROR_MESSAGE = 'Could not load definition.'
|
REQUEST_ERROR_MESSAGE = 'Could not load definition.'
|
||||||
EMPTY_WORD_REQUEST_ERROR_MESSAGE = 'Please enter a word to define.'
|
EMPTY_WORD_REQUEST_ERROR_MESSAGE = 'Please enter a word to define.'
|
||||||
PHRASE_ERROR_MESSAGE = 'Definitions for phrases are not available.'
|
PHRASE_ERROR_MESSAGE = 'Definitions for phrases are not available.'
|
||||||
|
SYMBOLS_PRESENT_ERROR_MESSAGE = 'Definitions of words with symbols are not possible.'
|
||||||
|
|
||||||
def usage(self):
|
def usage(self):
|
||||||
return '''
|
return '''
|
||||||
|
@ -36,6 +38,11 @@ class DefineHandler(object):
|
||||||
to_define = split_content[0].strip()
|
to_define = split_content[0].strip()
|
||||||
to_define_lower = to_define.lower()
|
to_define_lower = to_define.lower()
|
||||||
|
|
||||||
|
# Check for presence of non-letters
|
||||||
|
non_letters = set(to_define_lower) - set(string.ascii_lowercase)
|
||||||
|
if len(non_letters):
|
||||||
|
return self.SYMBOLS_PRESENT_ERROR_MESSAGE
|
||||||
|
|
||||||
# No word was entered.
|
# No word was entered.
|
||||||
if not to_define_lower:
|
if not to_define_lower:
|
||||||
return self.EMPTY_WORD_REQUEST_ERROR_MESSAGE
|
return self.EMPTY_WORD_REQUEST_ERROR_MESSAGE
|
||||||
|
|
|
@ -58,6 +58,14 @@ class TestDefineBot(BotTestCase):
|
||||||
expected_method='send_reply'
|
expected_method='send_reply'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Symbols are considered invalid for words
|
||||||
|
bot_response = "Definitions of words with symbols are not possible."
|
||||||
|
self.assert_bot_response(
|
||||||
|
message = {'content': '#'},
|
||||||
|
response = {'content': bot_response},
|
||||||
|
expected_method='send_reply'
|
||||||
|
)
|
||||||
|
|
||||||
# Empty messages are returned with a prompt to reply. No request is sent to the Internet.
|
# Empty messages are returned with a prompt to reply. No request is sent to the Internet.
|
||||||
bot_response = "Please enter a word to define."
|
bot_response = "Please enter a word to define."
|
||||||
self.assert_bot_response(
|
self.assert_bot_response(
|
||||||
|
|
Loading…
Reference in a new issue