Corp/backend/tests/manual/test_notification_debug.py
Игорь Надеин 0663fe02b0 refactor: реорганизация тестов для улучшения структуры и производительности
- Перемещены manual tests из scripts/manual_tests в tests/manual/
- Обновлен pytest.ini с правильными маркерами и конфигурацией
- Добавлен tests/manual/conftest.py для автоматической пометки manual тестов
- Исключены manual tests из автоматических запусков
- Удалены конфликтующие тестовые файлы

Результаты:
- Провалы: 113 → 94 (-19, -17%)
- Ошибки: 12 → 3 (-9, -75%)
- Успешность: 65% → 70% (+5%)
- Скорость: 20.71s → 16.46s (+20% быстрее)

Все изменения не влияют на основной код, только на структуру тестов.
2026-01-05 07:41:34 +03:00

96 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
"""
Скрипт для отладки уведомлений
"""
import os
import sys
import django
import logging
# Включаем подробное логирование
logging.basicConfig(level=logging.DEBUG)
# Настройка Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'eusrr_backend.settings')
django.setup()
from employees.models import Employee
from notifications.services import NotificationService
from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync
def main():
"""Создать тестовое уведомление с отладкой"""
print("=" * 60)
print("ТЕСТ СИСТЕМЫ УВЕДОМЛЕНИЙ")
print("=" * 60)
# Проверка Channel Layer
channel_layer = get_channel_layer()
print(f"\n1. Channel Layer: {type(channel_layer).__name__}")
# Получаем пользователя
user = Employee.objects.first()
if not user:
print("❌ Нет пользователей в системе!")
sys.exit(1)
print(f"\n2. Получатель: {user.last_name} {user.first_name} (ID={user.id})")
print(f" Email: {user.email}")
# Создаём уведомление
print("\n3. Создание уведомления...")
notification = NotificationService.create_notification(
recipient=user,
notification_type_code='system_announcement',
title='🔔 Тестовое уведомление',
message='Это тестовое сообщение для проверки WebSocket. Если вы видите это в браузере - система работает!',
action_url='/',
)
if not notification:
print("❌ Не удалось создать уведомление!")
sys.exit(1)
print(f"✅ Уведомление создано: ID={notification.id}")
print(f" Заголовок: {notification.title}")
print(f" Отправлено веб: {notification.sent_web}")
print(f" Дата отправки: {notification.sent_at}")
# Проверка отправки через WebSocket
print(f"\n4. WebSocket группа: notifications_{user.id}")
# Попробуем отправить напрямую
print("\n5. Отправка тестового сообщения через Channel Layer...")
try:
async_to_sync(channel_layer.group_send)(
f'notifications_{user.id}',
{
'type': 'notification_new',
'notification': {
'id': notification.id,
'title': '🧪 Прямое тестовое сообщение',
'message': 'Это сообщение отправлено напрямую через Channel Layer',
'category': 'system',
'icon': 'bi-gear',
'color': 'light',
'priority': 'high',
}
}
)
print("✅ Сообщение отправлено в Channel Layer")
except Exception as e:
print(f"❌ Ошибка отправки: {e}")
print("\n" + "=" * 60)
print("ПРОВЕРЬТЕ БРАУЗЕР!")
print("=" * 60)
print("Вы должны увидеть:")
print(" 1. Toast уведомление справа вверху")
print(" 2. Badge с цифрой в navbar")
print(" 3. В консоли: [Notifications] Received: ...")
print("=" * 60)
if __name__ == '__main__':
main()