mirror of
https://github.com/Balshgit/mosgortrans.git
synced 2025-09-11 13:00:40 +03:00
137 lines
4.3 KiB
Python
137 lines
4.3 KiB
Python
import os
|
||
import time
|
||
from unittest import mock
|
||
|
||
import pytest
|
||
from aiogram import Bot, Dispatcher, types
|
||
from aiogram.dispatcher.filters.builtin import Command
|
||
from aiogram.types import Update
|
||
from app.core.bot import TransportBot
|
||
from tests.conftest import FakeTelegram
|
||
from tests.data.factories import UserFactory
|
||
|
||
pytestmark = [
|
||
pytest.mark.asyncio,
|
||
]
|
||
|
||
|
||
async def test_parse_yandex_maps(bot: Bot) -> None:
|
||
tg_user = UserFactory().as_dict()
|
||
user = types.User(**tg_user)
|
||
|
||
async with FakeTelegram(message_data=tg_user):
|
||
result = await bot.me
|
||
|
||
assert result == user
|
||
|
||
|
||
async def test_command1(bot: Bot) -> None:
|
||
|
||
TransportBot.dispatcher.bot = bot
|
||
handlers = TransportBot.dispatcher.message_handlers.handlers
|
||
commands = []
|
||
for handler in handlers:
|
||
handl = list(
|
||
filter(lambda obj: isinstance(obj.filter, Command), handler.filters)
|
||
)
|
||
if handl:
|
||
commands.append(handl[0].filter.commands[0])
|
||
assert commands == ['chatid']
|
||
|
||
|
||
async def test_update(dispatcher_fixture: Dispatcher) -> None:
|
||
|
||
data = {
|
||
'update_id': 957250703,
|
||
'message': {
|
||
'message_id': 417070387,
|
||
'from': {
|
||
'id': 417070387,
|
||
'is_bot': False,
|
||
'first_name': 'Dmitry',
|
||
'last_name': 'Afanasyev',
|
||
'username': 'Balshtg',
|
||
'language_code': 'en',
|
||
},
|
||
'chat': {
|
||
'id': 417070387,
|
||
'first_name': 'Dmitry',
|
||
'last_name': 'Afanasyev',
|
||
'username': 'Balshtg',
|
||
'type': 'private',
|
||
},
|
||
'date': time.time(),
|
||
'text': '/chatid',
|
||
'entities': [{'type': 'bot_command', 'offset': 0, 'length': 7}],
|
||
},
|
||
}
|
||
TransportBot.bot = dispatcher_fixture.bot
|
||
|
||
async with FakeTelegram(message_data=data):
|
||
update = Update(**data)
|
||
result = await TransportBot.echo(update.message)
|
||
assert result == types.Message(**data)
|
||
|
||
|
||
@pytest.mark.skipif(
|
||
bool(os.environ.get("LOCALTEST", False)) is False,
|
||
reason="Schemathesis test will be skipped if environment var SCHEMATHESIS=1 is not set",
|
||
)
|
||
async def test_selenoid_text(dispatcher_fixture: Dispatcher) -> None:
|
||
data = {
|
||
'id': '1791303673263594560',
|
||
'from': {
|
||
'id': 417070387,
|
||
'is_bot': False,
|
||
'first_name': 'Dmitry',
|
||
'last_name': 'Afanasyev',
|
||
'username': 'Balshtg',
|
||
'language_code': 'en',
|
||
},
|
||
'message': {
|
||
'message_id': 1316,
|
||
'from': {
|
||
'id': 5494499556,
|
||
'is_bot': False,
|
||
'first_name': 'balshbot_transport',
|
||
'username': 'balshbot_transport_bot',
|
||
},
|
||
'chat': {
|
||
'id': 417070387,
|
||
'first_name': 'Dmitry',
|
||
'last_name': 'Afanasyev',
|
||
'username': 'Balshtg',
|
||
'type': 'private',
|
||
},
|
||
'date': 1661692626,
|
||
'text': 'Остановка Б. Академическая ул, д. 15\n\nАвтобус 300 - прибывает\nАвтобус Т19 - 7 мин',
|
||
'reply_markup': {
|
||
'inline_keyboard': [
|
||
[
|
||
{
|
||
'text': 'Дом -> Офис',
|
||
'callback_data': 'station:home->office',
|
||
},
|
||
{
|
||
'text': 'Офис -> Дом',
|
||
'callback_data': 'station:office->home',
|
||
},
|
||
]
|
||
]
|
||
},
|
||
},
|
||
'chat_instance': '-6044557427944557947',
|
||
'data': 'station:home->office',
|
||
}
|
||
TransportBot.bot = dispatcher_fixture.bot
|
||
|
||
# @mock.patch('app.core.bot.TransportBot.bot.send_message')
|
||
with mock.patch(
|
||
'app.core.bot.TransportBot.bot.send_message',
|
||
return_value=data['message']['chat'], # type: ignore
|
||
):
|
||
async with FakeTelegram(message_data=data):
|
||
call_back = types.CallbackQuery(**data)
|
||
result = await TransportBot.home_office(query=call_back, callback_data={})
|
||
assert result == data['message']['chat'] # type: ignore
|