class TestFeedbackService(PtbTestCase): def setUp(self): PtbTestCase.setUp(self) self.user_service = UserService() self.service = TelegramService(self.user_service) def test_is_private_chat_is_private_chat(self): update = self.mg.get_message(text="/help") is_private_chat = self.service.is_private_chat(update) self.assertTrue(is_private_chat) def test_is_private_chat_is_group_chat(self): chat = self.cg.get_chat(type="group") update = self.mg.get_message(chat=chat) is_private_chat = self.service.is_private_chat(update) self.assertFalse(is_private_chat) def test_get_mention(self): user_result = types.SimpleNamespace() user_result.user = self.ug.get_user() self.bot.getChatMember = MagicMock(return_value=user_result) user_id = 3 actual = self.service.get_mention(self.bot, 2, user_id) self.assertEqual(f"[{user_result.user.name}](tg://user?id={user_id})", actual) def test_get_chat_users(self): user_result = types.SimpleNamespace() user_result.user = self.ug.get_user() self.bot.getChatMember = MagicMock(return_value=user_result) chat_id = 2 self.user_service.add_user_chat_if_not_exists(3, chat_id) actual = self.service.get_chat_users(self.bot, chat_id) self.assertGreater(len(actual), 0) def test_get_chats(self): self.bot.getChat = MagicMock(return_value=self.cg.get_chat()) user_id = 2 self.user_service.add_user_chat_if_not_exists(user_id, 3) actual = self.service.get_chats(self.bot, user_id) self.assertGreater(len(actual), 0)
def create_bot(admin_id: int, heartbeat_monitor_url: str): user_service = UserService() telegram_service = TelegramService(user_service) core_command_handler = CoreCommandHandler(admin_id, core_texts, telegram_service) user_command_handler = UserCommandHandler(admin_id, user_texts, telegram_service, bot_name, user_service) feedback_service = FeedbackService() feedback_command_handler = FeedbackCommandHandler(admin_id, feedback_texts, telegram_service, feedback_service) announce_command_handler = AnnounceCommandHandler(admin_id, announce_texts, telegram_service, user_service) quest_service = QuestService() quest_command_handler = QuestCommandHandler(admin_id, quest_texts, telegram_service, bot_name, user_service, quest_service, heartbeat_monitor_url) components = { 'core': CoreComponent(core_command_handler), 'feedback': FeedbackComponent(feedback_command_handler), 'user': UserComponent(user_command_handler), 'announce': AnnounceComponent(announce_command_handler), 'quest': QuestComponent(quest_command_handler), } bot = CommonBot(components, get_logger()) return bot
def create_bot(admin_id: int): user_service = UserService() telegram_service = TelegramService(user_service) core_command_handler = CoreCommandHandler(admin_id, core_texts, telegram_service) user_command_handler = UserCommandHandler(admin_id, user_texts, telegram_service, bot_name, user_service) feedback_service = FeedbackService() feedback_command_handler = FeedbackCommandHandler(admin_id, feedback_texts, telegram_service, feedback_service) announce_command_handler = AnnounceCommandHandler(admin_id, announce_texts, telegram_service, user_service) task_service = TaskService() job_log_service = JobLogService() doforme_command_handler = DoForMeCommandHandler(admin_id, doforme_texts, telegram_service, bot_name, task_service, user_service, feedback_service, 5, job_log_service) components = { 'core': CoreComponent(core_command_handler), 'feedback': FeedbackComponent(feedback_command_handler), 'user': UserComponent(user_command_handler), 'announce': AnnounceComponent(announce_command_handler), 'doforme': DoForMeComponent(doforme_command_handler), } bot = CommonBot(components, get_logger()) return bot
def setUp(self): self.bot = ptbtest.Mockbot() self.ug = ptbtest.UserGenerator() self.cg = ptbtest.ChatGenerator() self.mg = ptbtest.MessageGenerator(self.bot) self.updater = Updater(bot=self.bot) self.handler = CoreCommandHandler(0, {'help': 'test'}, TelegramService(UserService()))
def test_job_daily_tasks_show_all_should_show_all_open_own_tasks_once_a_week( self): show_far_future_tasks = date.today().weekday() self.handler = DoForMeCommandHandler( self.admin_id, texts, TelegramService(self.user_service), "bot-name", self.task_service, self.user_service, FeedbackService(), show_far_future_tasks, self.job_log_service) self.updater.dispatcher.add_handler( CommandHandler("dummy_cmd", self.handler.job_daily_tasks_show_all)) self.updater.start_polling() update = self.mg.get_message(text=f"/dummy_cmd") user1_id = update.effective_user.id user2_id = update.effective_user.id + 1 chat_id = update.effective_chat.id self.user_service.add_user_chat_if_not_exists(user2_id, chat_id) self.user_service.add_user_chat_if_not_exists(user1_id, chat_id) task1_today = { 'user_id': user1_id, 'chat_id': chat_id, 'owner_id': user2_id, 'title': 'task 1', 'due': datetime.utcnow() } self.task_service.add_task(task1_today) task2_this_week = { 'user_id': user1_id, 'chat_id': chat_id, 'owner_id': user2_id, 'title': 'task 2', 'due': datetime.utcnow() + timedelta(days=5) } self.task_service.add_task(task2_this_week) task3_this_month = { 'user_id': user1_id, 'chat_id': chat_id, 'owner_id': user2_id, 'title': 'task 3', 'due': datetime.utcnow() + timedelta(days=8) } self.task_service.add_task(task3_this_month) task4_this_week_other_user = { 'user_id': user2_id, 'chat_id': chat_id, 'owner_id': user1_id, 'title': 'task 4', 'due': datetime.utcnow() + timedelta(days=2) } self.task_service.add_task(task4_this_week_other_user) self.bot.insertUpdate(update) time.sleep(2) # the message takes some time to be sent... self.assertEqual(2, len( self.bot.sent_messages)) # each user gets a summary self.assertTrue( texts["summary-due-later"] in self.bot.sent_messages[1]['text']) self.updater.stop()
def setUp(self): PtbTestCase.setUp(self) from components.user.models import db db.drop_all_tables(with_all_data=True) db.create_tables() self.service = UserService() self.admin_id = 42 self.handler = AnnounceCommandHandler(self.admin_id, texts, TelegramService(self.service), self.service)
def setUp(self): PtbTestCase.setUp(self) from components.feedback.models import db from components.feedback.feedback_service import FeedbackService db.drop_all_tables(with_all_data=True) db.create_tables() self.db = db self.admin_id = 42 self.service = FeedbackService() self.handler = FeedbackCommandHandler(self.admin_id, texts, TelegramService(UserService()), self.service)
def setUp(self): PtbTestCase.setUp(self) from components.user.models import db from components.user.user_service import UserService db.drop_all_tables(with_all_data=True) db.create_tables() self.db = db self.admin_id = 42 self.service = UserService() self.bot_name = "botname" self.handler = UserCommandHandler(self.admin_id, texts, TelegramService(self.service), self.bot_name, self.service)
def setUp(self): PtbTestCase.setUp(self) self._init_bot() from components.user.models import db db.drop_all_tables(with_all_data=True) db.create_tables() self.user_service = UserService() self.task_service = TaskService() self.admin_id = 42 self.job_log_service = MockJobLogService() show_far_future_tasks = 5 if date.today().weekday() != 5 else 6 self.handler = DoForMeCommandHandler( self.admin_id, texts, TelegramService(self.user_service), "bot-name", self.task_service, self.user_service, FeedbackService(), show_far_future_tasks, self.job_log_service)
def create_bot(admin_id: int): user_service = UserService() telegram_service = TelegramService(user_service) core_command_handler = CoreCommandHandler(admin_id, core_texts, telegram_service) user_command_handler = UserCommandHandler(admin_id, user_texts, telegram_service, bot_name, user_service) feedback_service = FeedbackService() feedback_command_handler = FeedbackCommandHandler(admin_id, feedback_texts, telegram_service, feedback_service) announce_command_handler = AnnounceCommandHandler(admin_id, announce_texts, telegram_service, user_service) components = { # put your custom components at the top to be able to overwrite commands 'feedback': FeedbackComponent(feedback_command_handler), 'user': UserComponent(user_command_handler), 'announce': AnnounceComponent(announce_command_handler), 'core': CoreComponent(core_command_handler), } bot = CommonBot(components, get_logger()) return bot
def setUp(self): PtbTestCase.setUp(self) self.user_service = UserService() self.service = TelegramService(self.user_service)
def setUp(self): PtbTestCase.setUp(self) from components.response.response_service import ResponseService self.service = ResponseService() self.service.init(ResponseService.get_absolute_file_name(os.path.join("tests", "messages.txt"))) self.handler = ResponseCommandHandler(-1, {}, TelegramService(UserService()), self.service)
def setUp(self): PtbTestCase.setUp(self) self.handler = CoreCommandHandler(0, {'help': 'test'}, TelegramService(UserService()))