/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
tests/unit/application/test_default_route.py
137 строк
5 KB
User
0.4.9 - переработка документации, рефакторинг кода, покрытие тестами 70%
06 июл 2026, 13:37
06 июл 2026, 13:37
79b2ebc
Код
Авторство
О чём код?
"""Unit-тесты для default_route module.""" import pytest from unittest.mock import Mock, patch from liquidcode import Application from liquidcode.application.default_route import ensure_default_route, set_default_route from liquidcode.test import TestClient class TestDefaultRoute: """Тесты функций дефолтного маршрута.""" def test_ensure_default_route_no_existing_route(self): """Установка дефолтного маршрута, если его нет.""" app = Application() # Убедимся, что корневой маршрут отсутствует assert not app.router.has_route('/', 'GET') # Вызываем ensure_default_route ensure_default_route(app) # Проверяем, что маршрут был установлен assert app.router.has_route('/', 'GET') def test_ensure_default_route_already_exists(self): """Не устанавливать дефолтный маршрут, если он уже есть.""" app = Application() # Устанавливаем ручной маршрут @app.route('/', methods=['GET']) def custom_handler(): return "custom" # Убедимся, что маршрут существует assert app.router.has_route('/', 'GET') # Вызываем ensure_default_route - должен вернуться без изменений result = ensure_default_route(app) # Функция должна вернуть None, маршрут не должен измениться assert result is None def test_set_default_route(self): """Установка пользовательского обработчика для корневого маршрута.""" app = Application() def custom_handler(**kwargs): return "custom response" set_default_route(app, custom_handler) # Проверяем, что маршрут установлен assert app.router.has_route('/', 'GET') def test_set_default_route_overwrites_existing(self): """Перезапись существующего дефолтного маршрута.""" app = Application() # Устанавливаем первый обработчик def handler1(**kwargs): return "handler1" set_default_route(app, handler1) # Устанавливаем второй обработчик - должен перезаписать первый def handler2(**kwargs): return "handler2" # Запускаем - должен сработать без ошибок set_default_route(app, handler2) # Проверяем, что маршрут перезаписан через TestClient client = TestClient(app) response = client.get('/') # Проверяем, что возвращён второй обработчик assert response.status == 200 def test_default_route_handler_success(self): """Обработчик дефолтного маршрута - успешный рендеринг.""" app = Application() ensure_default_route(app) # Получаем маршрут routes = app.router.all_routes() default_route = next(r for r in routes if r['path'] == '/' and 'GET' in r['methods']) # Проверяем, что обработчик существует assert default_route is not None def test_default_route_handler_fallback(self): """Обработчик дефолтного маршрута - fallback при ошибке рендеринга.""" app = Application() ensure_default_route(app) # Получаем маршрут routes = app.router.all_routes() default_route = next(r for r in routes if r['path'] == '/' and 'GET' in r['methods']) # Проверяем, что маршрут существует assert default_route is not None class TestSetDefaultRoute: """Тесты функции set_default_route.""" def test_set_default_route_returns_tuple(self): """Обработчик возвращает кортеж (body, status, headers).""" app = Application() def handler(**kwargs): return ("response", 200, {'Content-Type': 'text/plain'}) set_default_route(app, handler) # Получаем маршрут и вызываем через TestClient client = TestClient(app) response = client.get('/') assert response.status == 200 def test_set_default_route_wraps_non_tuple(self): """Обработчик, возвращающий не кортеж, оборачивается в кортеж.""" app = Application() def handler(**kwargs): return "plain string" set_default_route(app, handler) # Получаем маршрут и вызываем через TestClient client = TestClient(app) response = client.get('/') assert response.status == 200