- services/q_core_agent/state/tests/test_types.py
Краткий разбор модуля тестов test_types.py; цель — обзор и выявление рисков.
- [Факт] Модуль содержит unit‑тесты для DTO и enum'ов FSM.
- [Факт] Используются
pytest,uuid,time,FrozenInstanceError. - [Гипотеза] Файл покрывает критический функционал StateStore, предполагается запуск в CI.
- Путь:
services/q_core_agent/state/tests/test_types.py - Окружение: Python, pytest.
- [Факт] Классы тестов:
TestFsmState,TestTransitionDTO,TestFsmSnapshotDTO,TestInitialSnapshot,TestNextSnapshot,TestEdgeCases. - [Факт] Проверяются значения enum, неизменяемость DTO, генерация UUID, обработка истории, переходы и edge‑кейсы (Unicode, overflow).
- [Факт] Тесты используют
create_transition,initial_snapshot,next_snapshot.
- [Факт] Гарантирует корректность ключевых типов состояния FSM.
- [Гипотеза] Служит опорой для разработки StateStore; может использоваться при рефакторинге.
- [Гипотеза][Med] Отсутствует cleanup после больших историй.
- [Гипотеза][Low] Некоторые тесты полагаются на системное время без таймаутов.
- [Патч] Добавить явное ожидание для проверок времени.
- [Патч] Ограничить размер
large_historyдля ускорения CI.
class TestTransitionDTO:
def make_transition(self):
return create_transition(FsmState.IDLE, FsmState.ACTIVE, "X")# 1
transition = create_transition(FsmState.BOOTING, FsmState.IDLE, "BOOT")
# 2
snapshot = initial_snapshot()
# 3
next_snap = next_snapshot(current=snapshot, new_state=FsmState.IDLE, reason="BOOT_COMPLETE")
# 4
pytest.main(["-k", "TestFsmState"])
# 5
uuid.UUID(snapshot.snapshot_id)- Запуск
pytest services/q_core_agent/state/tests/test_types.py. - Проверка генерации UUID.
- Гарантия неизменяемости DTO через
FrozenInstanceError.
Модуль покрывает основные сценарии FSM DTO. В ближайшее время стоит оптимизировать тесты времени и большие истории. В долгосрочной перспективе добавить негативные проверки для StateStore. Общий статус — тесты стабильны, но возможна оптимизация.
- services/q_core_agent/state/tests/test_types.py