|
1 | 1 | import inspect |
| 2 | +from unittest import mock |
| 3 | +from unittest.mock import MagicMock |
2 | 4 |
|
3 | 5 | import pytest |
4 | 6 |
|
5 | 7 | from telethon import TelegramClient |
| 8 | +from telethon.client import MessageMethods |
| 9 | +from telethon.tl.types import PeerChat, MessageMediaDocument, Message, MessageEntityBold |
6 | 10 |
|
7 | 11 |
|
8 | 12 | @pytest.mark.asyncio |
@@ -38,3 +42,42 @@ async def send_file(self, entity, file, **kwargs): |
38 | 42 |
|
39 | 43 | client = MockedClient() |
40 | 44 | assert (await client.send_message('a', file='b', **arguments)) == sentinel |
| 45 | + |
| 46 | + |
| 47 | +class TestMessageMethods: |
| 48 | + @pytest.mark.asyncio |
| 49 | + @pytest.mark.parametrize( |
| 50 | + 'formatting_entities', |
| 51 | + ([MessageEntityBold(offset=0, length=0)], None) |
| 52 | + ) |
| 53 | + async def test_send_msg_and_file(self, formatting_entities): |
| 54 | + async def async_func(result): # AsyncMock was added only in 3.8 |
| 55 | + return result |
| 56 | + msg_methods = MessageMethods() |
| 57 | + expected_result = Message( |
| 58 | + id=0, peer_id=PeerChat(chat_id=0), message='', date=None, |
| 59 | + ) |
| 60 | + entity = 'test_entity' |
| 61 | + message = Message( |
| 62 | + id=1, peer_id=PeerChat(chat_id=0), message='expected_caption', date=None, |
| 63 | + entities=[MessageEntityBold(offset=9, length=9)], |
| 64 | + ) |
| 65 | + media_file = MessageMediaDocument() |
| 66 | + |
| 67 | + with mock.patch.object( |
| 68 | + target=MessageMethods, attribute='send_file', |
| 69 | + new=MagicMock(return_value=async_func(expected_result)), create=True, |
| 70 | + ) as mock_obj: |
| 71 | + result = await msg_methods.send_message( |
| 72 | + entity=entity, message=message, file=media_file, |
| 73 | + formatting_entities=formatting_entities, |
| 74 | + ) |
| 75 | + mock_obj.assert_called_once_with( |
| 76 | + entity, media_file, caption=message.message, |
| 77 | + formatting_entities=formatting_entities or message.entities, |
| 78 | + reply_to=None, silent=None, attributes=None, parse_mode=(), |
| 79 | + force_document=False, thumb=None, buttons=None, |
| 80 | + clear_draft=False, schedule=None, supports_streaming=False, |
| 81 | + comment_to=None, background=None, nosound_video=None, |
| 82 | + ) |
| 83 | + assert result == expected_result |
0 commit comments