refactor
This commit is contained in:
93
tests/test_clean_features.py
Normal file
93
tests/test_clean_features.py
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Тест функциональности с чистыми данными
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from src.core.database import async_session_maker, engine
|
||||
from src.core.services import UserService, LotteryService
|
||||
from src.utils.account_utils import validate_account_number, format_account_number, mask_account_number
|
||||
from src.display.winner_display import format_winner_display
|
||||
import random
|
||||
|
||||
async def test_features():
|
||||
print("🧪 Тестирование с чистыми данными")
|
||||
print("="*50)
|
||||
|
||||
async with async_session_maker() as session:
|
||||
# Генерируем уникальные тестовые данные
|
||||
unique_id = random.randint(1000000, 9999999)
|
||||
test_account = f"{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}-{random.randint(10, 99)}"
|
||||
|
||||
print(f"🆔 Используем уникальный ID: {unique_id}")
|
||||
print(f"🔢 Используем номер счёта: {test_account}")
|
||||
|
||||
# 1. Создание пользователя
|
||||
print(f"\n1. 👤 Создание пользователя:")
|
||||
user = await UserService.get_or_create_user(
|
||||
session,
|
||||
telegram_id=unique_id,
|
||||
username=f'test_user_{unique_id}',
|
||||
first_name='Тестовый',
|
||||
last_name='Пользователь'
|
||||
)
|
||||
print(f"✅ Пользователь создан: {user.first_name} {user.last_name}")
|
||||
|
||||
# 2. Установка номера счёта
|
||||
print(f"\n2. 🔢 Установка номера счёта:")
|
||||
success = await UserService.set_account_number(
|
||||
session, user.telegram_id, test_account
|
||||
)
|
||||
|
||||
if success:
|
||||
print(f"✅ Номер счёта {test_account} установлен")
|
||||
# Обновляем данные пользователя
|
||||
await session.refresh(user)
|
||||
print(f"✅ Подтверждено: {user.account_number}")
|
||||
else:
|
||||
print(f"❌ Не удалось установить номер счёта")
|
||||
return
|
||||
|
||||
# 3. Поиск пользователя по номеру
|
||||
print(f"\n3. 🔍 Поиск по номеру счёта:")
|
||||
found_user = await UserService.get_user_by_account(session, test_account)
|
||||
if found_user:
|
||||
print(f"✅ Пользователь найден: {found_user.first_name} {found_user.last_name}")
|
||||
else:
|
||||
print("❌ Пользователь не найден")
|
||||
|
||||
# 4. Тестирование маскирования
|
||||
print(f"\n4. 🎭 Тестирование маскирования:")
|
||||
masked = mask_account_number(test_account)
|
||||
print(f"Полный номер: {test_account}")
|
||||
print(f"Маскированный: {masked}")
|
||||
|
||||
# 5. Создание розыгрыша с типами отображения
|
||||
print(f"\n5. 🎨 Тестирование отображения победителей:")
|
||||
lottery = await LotteryService.create_lottery(
|
||||
session,
|
||||
title="Тест отображения",
|
||||
description="Тестовый розыгрыш",
|
||||
prizes=["Приз 1"],
|
||||
creator_id=1
|
||||
)
|
||||
|
||||
# Тестируем все типы отображения
|
||||
for display_type in ["username", "chat_id", "account_number"]:
|
||||
await LotteryService.set_winner_display_type(session, lottery.id, display_type)
|
||||
lottery.winner_display_type = display_type # Обновляем локально
|
||||
|
||||
public_display = format_winner_display(user, lottery, show_sensitive_data=False)
|
||||
admin_display = format_winner_display(user, lottery, show_sensitive_data=True)
|
||||
|
||||
print(f"\n📺 Тип: {display_type}")
|
||||
print(f" 👥 Публично: {public_display}")
|
||||
print(f" 🔧 Админ: {admin_display}")
|
||||
|
||||
print(f"\n🎉 Все тесты завершены успешно!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(test_features())
|
||||
Reference in New Issue
Block a user