OneByOne & Ripli
OneByOne OneByOne
Привет, Рипли. Слушай, я тут подумал, как бы нам переписать этот старый, запутанный процесс авторизации, который до сих пор в продакшене, и сделать из него чистое конечное состояние. Какие у тебя идеи, как организовать переходы, чтобы это было и тестируемо, и эффективно?
Ripli Ripli
Конечно. Представь себе вход как дерево, где каждый узел – это состояние, а каждая ветвь – событие. Начни с трех узлов: "Ожидание", "Аутентификация" и "Ошибка". **Ожидание** - событие `submit(данные)` → переходим к "Аутентификация" - событие `отмена` → остаёмся в "Ожидание" **Аутентификация** - событие `успех(токен)` → переходим к "Ожидание" (или "Главная") - событие `ошибка(причина)` → переходим к "Ошибка" **Ошибка** - событие `повторить` → возвращаемся к "Ожидание" - событие `забыли пароль` → запускаем процесс восстановления пароля Используй перечисление для состояний и отображение текущего состояния → разрешённые события → следующее состояние. Храни каждую переодизацию в чистой функции, чтобы ты мог изолированно протестировать её. Для проверки используй регулярные выражения: ``` emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ ``` Проверяй данные до отправки `submit`. Это делает поток детерминированным, тестируемым, и ты можешь заменить базовый сервис аутентификации, не трогая логику конечного автомата. Если наткнёшься на ошибку, просто "сломай" дерево в проблемном узле и запусти тест снова.