| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # -*- coding: utf-8 -*-
- import pytest
- import random
- from bot import *
- random.seed(0)
- def test_random_utterance():
- """An utterance which is unparsable should return one of the random responses"""
- sent = "abcd" # Something unparseable
- resp = broback(sent)
- assert resp == NONE_RESPONSES[-2]
- def test_basic_greetings():
- """The bot should respond sensibly to common greeting words"""
- sent = "hello"
- resp = broback(sent)
- assert resp == GREETING_RESPONSES[1]
- def test_contains_reference_to_user():
- """An utterance where the user mentions themselves generally should specifically return a phrase starting with 'You'"""
- sent = "I went to dinner"
- resp = broback(sent)
- assert resp.startswith("You ")
- def test_negs_user():
- """An utterance where the user says 'I am' <something> should specifically tell them they aren't that thing"""
- sent = "I am good at Python programming"
- resp = broback(sent)
- assert resp.startswith("You aren't really")
- sent = "I'm good at Python programming"
- resp = broback(sent)
- assert resp.startswith("You aren't really")
- sent = "i'm good at Python programming"
- resp = broback(sent)
- assert resp.startswith("You aren't really")
- def test_contains_reference_to_bot():
- """An utterance where the user directs something at the bot itself should return a canned response"""
- sent = "You are lame"
- resp = broback(sent)
- assert 'lame' in resp
- def test_reuses_subject():
- """If the user tells us about some kind of subject, we should mention it in our response"""
- sent = "I am a capable programmer"
- resp = broback(sent)
- assert "programmer" in resp
- def test_strip_offensive_words():
- """Don't allow the bot to respond with anything obviously offensive"""
- # To avoid including an offensive word in the test set, add a harmless word temporarily
- from config import FILTER_WORDS
- FILTER_WORDS.add('snakeperson')
- sent = "I am a snakeperson"
- with pytest.raises(UnacceptableUtteranceException):
- broback(sent)
- def test_strip_punctuation():
- """Removing most punctuation is one way to ensure that the bot doesn't include hashtags or @-signs, which are potential vectors for harrassment"""
- sent = "I am a #snakeperson"
- with pytest.raises(UnacceptableUtteranceException):
- broback(sent)
- sent = "@you are funny"
- with pytest.raises(UnacceptableUtteranceException):
- broback(sent)
- def test_unicode():
- """Bros love internationalization"""
- broback(u"☃") # Unicode snowman
|