예제 #1
0
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)
예제 #2
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
예제 #3
0
파일: init.py 프로젝트: jbinder/doforme-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)
예제 #10
0
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
예제 #11
0
    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)
예제 #13
0
 def setUp(self):
     PtbTestCase.setUp(self)
     self.handler = CoreCommandHandler(0, {'help': 'test'},
                                       TelegramService(UserService()))