Пример #1
0
    def test_send_message(self, mocked_next_update_id: Mock,
                          mocked_next_message_id: Mock, mocked_now: Mock,
                          mocked_dispatcher: Mock):
        now = timezone.datetime(2000, 1, 1, tzinfo=timezone.utc)
        mocked_now.return_value = now
        mocked_next_message_id.return_value = 42
        mocked_next_update_id.return_value = 142
        test_user = MockUser(bot=self.bot, username='******')

        test_user.send_message("Help")

        user = types.User(id=START_USER_ID,
                          is_bot=False,
                          username='******',
                          first_name='u',
                          last_name='u')
        chat = types.Chat(id=START_USER_ID,
                          type='private',
                          username='******',
                          first_name='u',
                          last_name='u')
        message = types.Message(message_id=42,
                                date=now,
                                chat=chat,
                                from_user=user,
                                text='Help')
        update = types.Update(update_id=142, message=message)
        update_data = update.to_dict(date_as_timestamp=True)
        mocked_dispatcher.return_value.dispatch.assert_called_with(
            update_data=update_data)
Пример #2
0
 def send_callback_query(self, data: str, markup_message: Message = None):
     if markup_message is None:
         last = self.messages().first()
         if last is None or last.reply_markup is None:
             raise ValueError("No ReplyMarkup to response")
         else:
             markup_message = last
     callback_query = types.CallbackQuery(
         id=self._next_callback_query_id(),
         from_user=self._telegram_user(),
         chat_instance=self._next_callback_query_id(),
         message=types.Message(
             message_id=markup_message.message_id,
             chat=self._telegram_chat(),
             date=markup_message.date,
         ),
         data=data,
     )
     update = types.Update(
         update_id=self._next_update_id(),
         callback_query=callback_query,
     )
     self.dispatcher.dispatch(
         update_data=update.to_dict(date_as_timestamp=True)
     )
Пример #3
0
    def test_send_callback_query_default_message(
        self,
        mocked_next_update_id: Mock,
        mocked_next_message_id: Mock,
        mocked_now: Mock,
        mocked_dispatcher: Mock,
    ):
        now = timezone.datetime(2000, 1, 1, tzinfo=timezone.utc)
        mocked_now.return_value = now
        mocked_next_message_id.return_value = 42
        mocked_next_update_id.return_value = 142
        test_user = ClientUser(self.bot, username="******")
        message = Message.objects.create(
            chat=test_user.chat,
            date=timezone.now(),
            message_id=test_user._next_message_id(),
            text="Yes of No?",
            _reply_markup=types.InlineKeyboardMarkup(inline_keyboard=[
                [types.InlineKeyboardButton("Yes", callback_data="yes")],
                [types.InlineKeyboardButton("No", callback_data="no")],
            ]).to_dict(),
        )

        test_user.send_callback_query(data="yes")

        user = types.User(id=START_USER_ID,
                          is_bot=False,
                          username="******",
                          first_name="u",
                          last_name="u")
        chat = types.Chat(
            id=START_USER_ID,
            type="private",
            username="******",
            first_name="u",
            last_name="u",
        )
        message = types.Message(
            message_id=message.message_id,
            date=message.date,
            chat=chat,
        )
        callback_query = types.CallbackQuery(id="1",
                                             from_user=user,
                                             chat_instance="1",
                                             message=message,
                                             data="yes")

        update = types.Update(update_id=142, callback_query=callback_query)
        update_data = update.to_dict(date_as_timestamp=True)
        test_user.dispatcher.dispatch.assert_called_with(
            update_data=update_data)
Пример #4
0
 def send_message(self, message_text: str):
     """Simulate sending message to bot by the user."""
     message = types.Message(
         message_id=self._next_message_id(),
         date=timezone.now(),
         chat=self._telegram_chat(),
         from_user=self._telegram_user(),
         text=message_text,
         entities=self._extract_entities(message_text),
     )
     update = types.Update(
         update_id=self._next_update_id(),
         message=message,
     )
     self.dispatcher.dispatch(update_data=update.to_dict(
         date_as_timestamp=True))
Пример #5
0
    def test_send_message__with_commands(
        self,
        mocked_next_update_id: Mock,
        mocked_next_message_id: Mock,
        mocked_now: Mock,
        mocked_dispatcher: Mock,
    ):
        now = timezone.datetime(2000, 1, 1, tzinfo=timezone.utc)
        mocked_now.return_value = now
        mocked_next_message_id.return_value = 42
        mocked_next_update_id.return_value = 142
        test_user = ClientUser(bot=self.bot, username="******")

        test_user.send_message("/start /help")

        user = types.User(id=START_USER_ID,
                          is_bot=False,
                          username="******",
                          first_name="u",
                          last_name="u")
        chat = types.Chat(
            id=START_USER_ID,
            type="private",
            username="******",
            first_name="u",
            last_name="u",
        )
        message = types.Message(
            message_id=42,
            date=now,
            chat=chat,
            from_user=user,
            text="/start /help",
            entities=[
                types.MessageEntity(type="bot_command", offset=0, length=6),
                types.MessageEntity(type="bot_command", offset=7, length=5),
            ],
        )
        update = types.Update(update_id=142, message=message)
        update_data = update.to_dict(date_as_timestamp=True)
        test_user.dispatcher.dispatch.assert_called_with(
            update_data=update_data)