Добавлены новые методы для получения статистики постов пользователей, информации о последних постах и количестве банов. Обновлены запросы в репозиториях для сортировки пользователей по дате бана. Исправлены вызовы функций форматирования сообщений для администраторов. Обновлены тесты для проверки новых функциональностей.

This commit is contained in:
2026-02-28 21:30:08 +03:00
parent e2a6944ed8
commit 694cf1c106
18 changed files with 1296 additions and 144 deletions

View File

@@ -29,6 +29,11 @@ class TestPrivateHandlers:
db.add_message = AsyncMock()
db.update_helper_message = AsyncMock()
db.update_user_activity = AsyncMock()
db.get_user_posts_stats = AsyncMock(return_value=(5, 2, 3))
db.get_last_post_by_author = AsyncMock(return_value="Last post text")
db.get_user_by_id = AsyncMock(return_value=Mock(date_added=1704067200))
db.get_user_ban_count = AsyncMock(return_value=0)
db.get_last_ban_info = AsyncMock(return_value=None)
return db
@pytest.fixture
@@ -257,6 +262,7 @@ class TestPrivateHandlers:
"""resend_message_in_group при PRE_CHAT переводит в START и отправляет question."""
handlers = create_private_handlers(mock_db, mock_settings)
mock_state.get_state = AsyncMock(return_value=FSM_STATES["PRE_CHAT"])
mock_message.bot.send_message = AsyncMock(return_value=Mock(message_id=100))
with pytest.MonkeyPatch().context() as m:
m.setattr(
"helper_bot.handlers.private.private_handlers.get_reply_keyboard",
@@ -267,9 +273,7 @@ class TestPrivateHandlers:
lambda x, y: "Question?",
)
await handlers.resend_message_in_group_for_message(mock_message, mock_state)
mock_message.forward.assert_called_once_with(
chat_id=mock_settings.group_for_message
)
mock_message.bot.send_message.assert_called_once()
mock_state.set_state.assert_called_once_with(FSM_STATES["START"])
@pytest.mark.asyncio
@@ -279,6 +283,7 @@ class TestPrivateHandlers:
"""resend_message_in_group при CHAT оставляет в CHAT и отправляет question с leave markup."""
handlers = create_private_handlers(mock_db, mock_settings)
mock_state.get_state = AsyncMock(return_value=FSM_STATES["CHAT"])
mock_message.bot.send_message = AsyncMock(return_value=Mock(message_id=100))
with pytest.MonkeyPatch().context() as m:
m.setattr(
"helper_bot.handlers.private.private_handlers.get_reply_keyboard_leave_chat",
@@ -289,9 +294,7 @@ class TestPrivateHandlers:
lambda x, y: "Question?",
)
await handlers.resend_message_in_group_for_message(mock_message, mock_state)
mock_message.forward.assert_called_once_with(
chat_id=mock_settings.group_for_message
)
mock_message.bot.send_message.assert_called_once()
mock_message.answer.assert_called()
@pytest.mark.asyncio