#!/usr/bin/env python

from __future__ import absolute_import
from __future__ import print_function

import os
import sys
import unittest
from unittest import TestCase

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 TestDefineBot(TestCase):
    def setUp(self):
        # Messages to be sent to bot for testing.
        self.request_messages = [
            {'content': "foo", 'type': "private", 'sender_email': "foo"},
            {'content': "cat", 'type': "stream", 'display_recipient': "foo", 'subject': "foo"},
        ]
        # Reply messages from the test bot.
        self.bot_response_messages = [
            "**foo**:\nDefinition not available.",
            ("**cat**:\n\n* (**noun**) a small domesticated carnivorous mammal "
                    "with soft fur, a short snout, and retractile claws. It is widely "
                    "kept as a pet or for catching mice, and many breeds have been "
                    "developed.\n  their pet cat\n\n"),
        ]

    def runTest(self):
        # type: None -> None
        # Edit bot_module to test different bots, the below code can be looped for all the bots.
        bot_module = os.path.join(our_dir, "define.py")
        test_case = BotTestCase()
        test_case.bot_test(messages=self.request_messages, bot_module=bot_module,
            bot_response=self.bot_response_messages)