class AddEveryMonthTimeItemTest(unittest.TestCase): def setUp(self) -> None: self.bot = TodoBot("sqlite:///../static/test_todo_bot.db") def tearDown(self) -> None: os.remove("../static/test_todo_bot.db") def test_add_one_item_interface(self): answer = self.bot.message_handler('++ 1 00:00 напоминание №1', '1') self.assertEqual('Добавлено напоминание о "напоминание №1" на 1 00:00', answer) def test_add_one_item_base(self): self.bot.message_handler('++ 1 00:00 напоминание №1', '1') item = self.bot.get_session().query(EveryMonthTimeScheduleItem).first() self.assertEqual('напоминание №1', item.name) self.assertEqual('1 00:00', item.notification_datetime)
class BadCommandTest(unittest.TestCase): def setUp(self) -> None: self.bot = TodoBot("sqlite:///../static/test_todo_bot.db") def tearDown(self) -> None: os.remove("../static/test_todo_bot.db") def test_bad_add(self): answer = self.bot.message_handler('++', '1') self.assertEqual('', answer) def test_bad_delete(self): answer = self.bot.message_handler('--', '1') self.assertEqual('', answer) answer = self.bot.message_handler('—', '1') self.assertEqual('', answer) def test_bad_mark(self): answer = self.bot.message_handler('**', '1') self.assertEqual('', answer)
class MarkItemTest(unittest.TestCase): def setUp(self) -> None: self.bot = TodoBot("sqlite:///../static/test_todo_bot.db") def tearDown(self) -> None: os.remove("../static/test_todo_bot.db") def test_mark_one_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list)) session.commit() answer = self.bot.message_handler('** 1', '1') self.assertEqual('Зачеркнуто "дело №1"', answer) def test_mark_one_item_interface_2(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №2', list)) session.commit() answer = self.bot.message_handler('** 1', '1') self.assertEqual('Зачеркнуто "дело №2"', answer) def test_mark_one_item_interface_3(self): answer = self.bot.message_handler('** 1', '1') self.assertEqual('Элемента с номером 1 нет в вашем списке', answer) def test_mark_one_item_interface_4(self): answer = self.bot.message_handler('** -1', '1') self.assertEqual('Элемента с номером -1 не может быть в вашем списке', answer) def test_mark_one_item_interface_5(self): answer = self.bot.message_handler('** 2', '1') self.assertEqual('Элемента с номером 2 нет в вашем списке', answer) def test_mark_one_item_interface_6(self): answer = self.bot.message_handler('** -2', '1') self.assertEqual('Элемента с номером -2 не может быть в вашем списке', answer) def test_mark_one_item_interface_7(self): answer = self.bot.message_handler('** первый', '1') self.assertEqual('"первый" непохоже на номер в списке', answer) def test_mark_one_item_interface_8(self): answer = self.bot.message_handler('** второй', '1') self.assertEqual('"второй" непохоже на номер в списке', answer) def test_delete_all_items_interface(self): answer = self.bot.message_handler('--*', '1') self.assertEqual('Все зачеркнутые элементы удалены', answer) def test_mark_one_item_base(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() item = Item('дело №1', list) session.add(item) session.commit() self.bot.message_handler('** 1', '1') self.assertEqual(ItemState.MARK, item.state)
def setUp(self) -> None: self.bot = TodoBot("sqlite:///../static/test_todo_bot.db")
class GetListTest(unittest.TestCase): def setUp(self) -> None: self.bot = TodoBot("sqlite:///../static/test_todo_bot.db") def tearDown(self) -> None: os.remove("../static/test_todo_bot.db") def test_get_empty_list_interface(self): answer = self.bot.message_handler('??', '1') self.assertEqual('Список пуст', answer) def test_get_list_with_one_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('1) дело №1', answer) def test_get_list_with_two_items_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list)) session.add(Item('дело №2', list)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('1) дело №1\n' '2) дело №2', answer) def test_get_items_from_different_lists_interface(self): session = self.bot.get_session() list1 = List('1') session.add(list1) session.commit() session.add(Item('дело №1', list1)) list2 = List('2') session.add(list2) session.commit() session.add(Item('дело №2', list2)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('1) дело №1', answer) answer = self.bot.message_handler('??', '2') self.assertEqual('1) дело №2', answer) def test_get_list_with_one_mark_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list, state=ItemState.MARK)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('<strike>1) дело №1</strike>', answer) def test_get_list_with_two_mark_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list, state=ItemState.MARK)) session.add(Item('дело №2', list, state=ItemState.MARK)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual( '<strike>1) дело №1</strike>\n' '<strike>2) дело №2</strike>', answer) def test_get_list_with_one_mark_item_and_one_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list, state=ItemState.MARK)) session.add(Item('дело №2', list)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('<strike>1) дело №1</strike>\n' '2) дело №2', answer) def test_get_list_with_one_item_and_one_mark_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list)) session.add(Item('дело №2', list, state=ItemState.MARK)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('1) дело №1\n' '<strike>2) дело №2</strike>', answer) def test_get_list_with_one_item_and_one_delete_item_interface(self): session = self.bot.get_session() list = List('1') session.add(list) session.commit() session.add(Item('дело №1', list)) session.add(Item('дело №2', list, state=ItemState.DELETE)) session.commit() answer = self.bot.message_handler('??', '1') self.assertEqual('1) дело №1', answer)
import schedule import telebot from src.TodoBot import TodoBot from src.models.EveryMonthTimeScheduleItem import EveryMonthTimeScheduleItem from src.models.ItemState import ItemState from src.models.OneTimeScheduleItem import OneTimeScheduleItem config_file_name = 'static/config.json' try: with open(config_file_name, 'r') as file: data = file.read() config = json.loads(data) bot = telebot.TeleBot(config["token"]) todo_bot = TodoBot("sqlite:///static/todo_bot.db") except FileNotFoundError as e: print(f"File {config_file_name} not found.") exit() @bot.message_handler(commands=['start']) def send_welcome(message): bot.send_message( message.chat.id, "Привет я todo bot от 3CRABS soft!\n" "Я создаю списки!\n" "Чтобы узнать подробности введи /help") @bot.message_handler(commands=['help']) def send_help(message):