В системе валидации на основе Vest группировка сообщений представляет собой механизм структурирования результатов проверок таким образом, чтобы ошибки и предупреждения не рассматривались как плоский список, а распределялись по контекстным областям — чаще всего по полям, шагам или логическим группам тестов. Это позволяет превращать набор независимых проверок в согласованную модель состояния формы или объекта.
Внутри Vest каждое правило валидации ассоциируется с конкретным полем или сущностью. При выполнении набора проверок формируется структура, где:
Такой подход отличается от линейного накопления ошибок, характерного для простых валидаторов, и приближает систему к модели «словаря состояния».
Ключевое свойство: сообщения не существуют сами по себе, они всегда привязаны к контексту теста.
Каждый вызов теста в Vest выполняется внутри контекста набора проверок. Этот контекст определяет, к какой группе будет отнесено сообщение.
Пример логики:
email;email;Таким образом группировка возникает не постфактум, а во время выполнения валидации.
Наиболее распространённый вариант — группировка по именам полей.
Структурно результат выглядит следующим образом:
username
password
Такая форма особенно полезна в формах ввода, где каждое поле имеет независимый набор ограничений.
В Vest это достигается за счёт привязки test к
конкретному контексту поля.
Помимо плоского разделения по полям, система допускает вложенные структуры. Это важно для сложных объектов:
user
profile
firstNamelastNameauth
emailpasswordТакая модель соответствует структуре данных и позволяет точно локализовать ошибку без дополнительного анализа.
Внутренне это представляется как вложенные ключи, формируемые по пути доступа к данным.
Один и тот же ключ может содержать несколько сообщений. Vest не ограничивает количество ошибок на поле, что важно для комплексных проверок.
Пример:
поле password
Каждое правило добавляет собственное сообщение, не перезаписывая предыдущие.
При выполнении набора тестов система агрегирует результаты в единый объект состояния. Процесс включает:
В результате получается консистентное состояние, готовое для использования в UI или бизнес-логике.
В Vest группировка может зависеть от условий выполнения тестов. Если тест пропущен или не активирован, он не влияет на структуру сообщений.
Это важно для динамических форм, где часть полей появляется только при определённых условиях.
Пример логики:
isCompany === true, активируется группа
company;Каждый запуск валидации пересобирает группы заново. Это означает:
Такой подход исключает накопление устаревших ошибок.
Результаты группировки обычно извлекаются через методы получения состояния валидации. Структура данных уже содержит распределение по ключам, поэтому клиентский код работает не с сырым списком, а с организованной моделью.
В контексте Vest это позволяет:
Группировка сообщений встроена в модель выполнения и не требует отдельного прохода по результатам. Это важно для масштабируемых форм, где количество проверок может быть значительным.
Особенности:
Одним из ключевых свойств является стабильность структуры: одинаковый набор входных данных всегда приводит к одинаковой группировке.
Это позволяет:
Группировка сообщений в Vest решает несколько задач одновременно:
Такая модель делает систему валидации не просто набором проверок, а структурированным механизмом управления состоянием данных.