38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
# tests/realtime/test_routing.py
|
|
"""
|
|
Тесты для WebSocket routing.
|
|
Проверяем правильность маршрутизации WebSocket подключений.
|
|
"""
|
|
import pytest
|
|
from channels.routing import URLRouter
|
|
from django.urls import re_path
|
|
|
|
from realtime.routing import websocket_urlpatterns
|
|
from realtime.consumers import UserConsumer
|
|
|
|
|
|
def test_websocket_urlpatterns_structure():
|
|
"""Проверяем структуру websocket_urlpatterns."""
|
|
assert isinstance(websocket_urlpatterns, list)
|
|
assert len(websocket_urlpatterns) > 0
|
|
|
|
# Проверяем, что есть паттерн для ws/
|
|
patterns = [str(p.pattern) for p in websocket_urlpatterns]
|
|
assert any("ws" in p for p in patterns), "Должен быть паттерн для /ws/"
|
|
|
|
|
|
def test_websocket_uses_user_consumer():
|
|
"""Проверяем, что WebSocket использует UserConsumer."""
|
|
first_pattern = websocket_urlpatterns[0]
|
|
assert callable(first_pattern.callback)
|
|
assert 'UserConsumer' in repr(first_pattern.callback)
|
|
|
|
|
|
def test_url_router_accepts_patterns():
|
|
"""Проверяем, что URLRouter принимает наши паттерны."""
|
|
try:
|
|
router = URLRouter(websocket_urlpatterns)
|
|
assert router is not None
|
|
except Exception as e:
|
|
pytest.fail(f"URLRouter не принял websocket_urlpatterns: {e}")
|