a3903a252e
Remove AUTO_ACTIVATE_AFTER_TOPUP and SHOW_ACTIVATION_PROMPT_AFTER_TOPUP features from all payment providers, config, system settings, and tests. Cart auto-purchase (AUTO_PURCHASE_AFTER_TOPUP) is preserved. Bug fixes: - fix KeyError 'months' in devices.py for custom locale overrides - fix IntegrityError on trial subscription retry (update existing PENDING instead of INSERT) - fix PendingRollbackError cascade by adding db.rollback() before recovery - fix TelegramForbiddenError not caught in photo_message.py - fix "query is too old" spam in required_sub_channel_check - add missing trial locale keys (TRIAL_PAYMENT_DESCRIPTION, TRIAL_REFUND_DESCRIPTION, TRIAL_ACTIVATION_ERROR)
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
"""
|
|
Упрощенные тесты для проверки логики уведомлений Kassa AI.
|
|
"""
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
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')
|