mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-03-03 20:34:10 +00:00
141 lines
5.5 KiB
Python
141 lines
5.5 KiB
Python
"""
|
||
Упрощенные тесты для проверки логики уведомлений Kassa AI.
|
||
"""
|
||
|
||
from unittest.mock import MagicMock
|
||
|
||
|
||
def test_notification_message_bright_prompt():
|
||
"""
|
||
Тест: проверяем что формируется ЯРКОЕ сообщение с SHOW_ACTIVATION_PROMPT_AFTER_TOPUP=true.
|
||
"""
|
||
|
||
# Эмулируем код из kassa_ai.py
|
||
SHOW_ACTIVATION_PROMPT_AFTER_TOPUP = True
|
||
display_name = 'Kassa AI'
|
||
amount_formatted = '10₽'
|
||
|
||
if SHOW_ACTIVATION_PROMPT_AFTER_TOPUP:
|
||
message = (
|
||
'✅ <b>Платеж успешно завершен!</b>\n\n'
|
||
f'💰 Сумма: {amount_formatted}\n'
|
||
f'💳 Способ: {display_name}\n\n'
|
||
'💎 Средства зачислены на ваш баланс!\n\n'
|
||
'‼️ <b>ВНИМАНИЕ! ОБЯЗАТЕЛЬНО АКТИВИРУЙТЕ ПОДПИСКУ!</b> ‼️\n\n'
|
||
'⚠️ Пополнение баланса <b>НЕ АКТИВИРУЕТ</b> подписку автоматически!\n\n'
|
||
'👇 <b>НАЖМИТЕ КНОПКУ НИЖЕ ДЛЯ АКТИВАЦИИ</b> 👇'
|
||
)
|
||
else:
|
||
message = ''
|
||
|
||
# Проверки
|
||
assert '‼️' in message
|
||
assert 'ВНИМАНИЕ' in message
|
||
assert 'ОБЯЗАТЕЛЬНО АКТИВИРУЙТЕ ПОДПИСКУ' in message
|
||
assert '👇' in message
|
||
assert display_name in message
|
||
assert amount_formatted in message
|
||
print(f'\n✅ ЯРКОЕ сообщение сформировано правильно:\n{message}')
|
||
|
||
|
||
def test_notification_message_standard():
|
||
"""
|
||
Тест: проверяем что формируется обычное сообщение с SHOW_ACTIVATION_PROMPT_AFTER_TOPUP=false.
|
||
"""
|
||
# Эмулируем код из kassa_ai.py
|
||
SHOW_ACTIVATION_PROMPT_AFTER_TOPUP = False
|
||
display_name = 'Kassa AI'
|
||
amount_formatted = '10₽'
|
||
|
||
if SHOW_ACTIVATION_PROMPT_AFTER_TOPUP:
|
||
message = ''
|
||
else:
|
||
message = (
|
||
'✅ <b>Платеж успешно завершен!</b>\n\n'
|
||
f'💰 Сумма: {amount_formatted}\n'
|
||
f'💳 Способ: {display_name}\n\n'
|
||
'Средства зачислены на ваш баланс!\n\n'
|
||
'⚠️ <b>Важно:</b> Пополнение баланса не активирует подписку автоматически. '
|
||
'Обязательно активируйте подписку отдельно!\n\n'
|
||
f'🔄 При наличии сохранённой корзины подписки и включенной автопокупке, '
|
||
f'подписка будет приобретена автоматически после пополнения баланса.'
|
||
)
|
||
|
||
# Проверки
|
||
assert '‼️' not in message
|
||
assert 'ОБЯЗАТЕЛЬНО АКТИВИРУЙТЕ ПОДПИСКУ' not in message
|
||
assert 'Платеж успешно завершен' in message
|
||
assert display_name in message
|
||
assert amount_formatted in message
|
||
print(f'\n✅ Обычное сообщение сформировано правильно:\n{message}')
|
||
|
||
|
||
def test_telegram_id_saved_before_commit():
|
||
"""
|
||
Тест: проверяем что telegram_id сохраняется в локальную переменную ДО commit.
|
||
"""
|
||
# Эмулируем юзера
|
||
user = MagicMock()
|
||
user.telegram_id = 123456789
|
||
user.language = 'ru'
|
||
|
||
# Сохраняем ДО commit
|
||
user_telegram_id = user.telegram_id
|
||
user_language = user.language
|
||
|
||
# Эмулируем что после commit объект отсоединяется
|
||
user.telegram_id = None
|
||
user.language = None
|
||
|
||
# Проверяем что локальные переменные сохранились
|
||
assert user_telegram_id == 123456789
|
||
assert user_language == 'ru'
|
||
print(f'\n✅ telegram_id сохранен в локальную переменную: {user_telegram_id}')
|
||
|
||
|
||
def test_send_message_called_with_correct_params():
|
||
"""
|
||
Тест: проверяем что bot.send_message вызывается с правильными параметрами.
|
||
"""
|
||
bot = MagicMock()
|
||
bot.send_message = MagicMock()
|
||
|
||
user_telegram_id = 123456789
|
||
message = 'Тестовое сообщение'
|
||
keyboard = MagicMock()
|
||
|
||
# Эмулируем вызов
|
||
if bot and user_telegram_id:
|
||
bot.send_message(
|
||
chat_id=user_telegram_id,
|
||
text=message,
|
||
parse_mode='HTML',
|
||
reply_markup=keyboard,
|
||
)
|
||
|
||
# Проверки
|
||
bot.send_message.assert_called_once()
|
||
call_args = bot.send_message.call_args
|
||
assert call_args[1]['chat_id'] == 123456789
|
||
assert call_args[1]['parse_mode'] == 'HTML'
|
||
assert call_args[1]['text'] == message
|
||
print('\n✅ bot.send_message вызван с правильными параметрами')
|
||
|
||
|
||
def test_no_send_when_no_telegram_id():
|
||
"""
|
||
Тест: уведомление НЕ отправляется если нет telegram_id.
|
||
"""
|
||
bot = MagicMock()
|
||
bot.send_message = MagicMock()
|
||
|
||
user_telegram_id = None
|
||
|
||
# Эмулируем проверку
|
||
if bot and user_telegram_id:
|
||
bot.send_message(chat_id=user_telegram_id, text='test')
|
||
|
||
# Проверка
|
||
bot.send_message.assert_not_called()
|
||
print('\n✅ bot.send_message НЕ вызван когда telegram_id=None')
|