From fbb301e026614ec79db22deb2af17ed1dd26381a Mon Sep 17 00:00:00 2001 From: Vladimir Valekzhanin Date: Fri, 16 Oct 2026 13:03:47 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BC=D1=91=D1=80=D1=82=D0=B2=D1=8B=D0=B9=20Thi?= =?UTF-8?q?rdNameValidator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поле «Отчество» не несёт ни одна модель (User, UserDto, RegisterData/UpdateUserData, RegisterRequest/UpdateUserRequest), валидатор не используется в формах. Удалены класс и его тест, обновлено упоминание в docs/pages.md. Closes #51 --- docs/pages.md | 2 +- .../validation/ThirdNameValidator.java | 41 ------------------- .../validation/ThirdNameValidatorTest.java | 33 --------------- 3 files changed, 1 insertion(+), 75 deletions(-) delete mode 100644 src/main/java/com/DesktopApplicationClientJava/validation/ThirdNameValidator.java delete mode 100644 src/test/java/com/DesktopApplicationClientJava/validation/ThirdNameValidatorTest.java diff --git a/docs/pages.md b/docs/pages.md index 6960bfd..7c9489d 100644 --- a/docs/pages.md +++ b/docs/pages.md @@ -78,7 +78,7 @@ UI не ходит в HTTP напрямую. Контроллер вызывае * SoC: списки (№2) не содержат логики форм; форма №4 работает в двух режимах `create/edit` по наличию `uuid`. * Кнопки: `create`/`delete` (№2) и `edit`/`delete` (№3) рендерятся по роли (`isAdmin() || isModerator()` из `Session.getCurrentUser().role`), а не отдельными страницами. * Проверка ввода (факт): №1 — `EmailValidator`; №4 — ручные проверки длины; классы - `PasswordValidator/FirstNameValidator/LastNameValidator/ThirdNameValidator` на FormsFX существуют как задел под №6, в текущих страницах не используются. + `PasswordValidator/FirstNameValidator/LastNameValidator` на FormsFX существуют как задел под №6, в текущих страницах не используются. * Терминология: в доке используется «ресурс» per `GLOSSARY.md` (avoid «документ»). Факт расхождения: строки UI/FXML до сих пор говорят «документ» («Новый документ», «Редактирование документа», «Архив документов», «Документов пока нет») — правится отдельно, не в этом доке. diff --git a/src/main/java/com/DesktopApplicationClientJava/validation/ThirdNameValidator.java b/src/main/java/com/DesktopApplicationClientJava/validation/ThirdNameValidator.java deleted file mode 100644 index fd4c53f..0000000 --- a/src/main/java/com/DesktopApplicationClientJava/validation/ThirdNameValidator.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.DesktopApplicationClientJava.validation; - -import com.DesktopApplicationClientJava.validation.utils.ErrorMessages; -import com.dlsc.formsfx.model.structure.Field; -import com.dlsc.formsfx.model.structure.StringField; -import com.dlsc.formsfx.model.validators.StringLengthValidator; -import com.dlsc.formsfx.model.validators.Validator; -import java.util.List; - -public final class ThirdNameValidator { - public static final String FIELD_NAME = "Отчество"; - public static final int MIN_LENGTH = 2; - - private ThirdNameValidator() {} - - public static List> validators() { - return List.of( - StringLengthValidator.atLeast(MIN_LENGTH, ErrorMessages.MinLength(FIELD_NAME, MIN_LENGTH))); - } - - /** - * Thin contract over the stock FormsFX setup above: runs a {@link StringField} and returns the - * first error message, or {@code null} when valid. A missing third name is valid — the field is - * optional — but a whitespace-only value is malformed. - */ - public static String validate(String input) { - if (input == null || input.isEmpty()) { - return null; - } - if (input.isBlank()) { - return ErrorMessages.IncorrectFormat; - } - StringField field = Field.ofStringType(input).validate(toArray(validators())); - return field.isValid() ? null : field.getErrorMessages().get(0); - } - - @SuppressWarnings("unchecked") - private static Validator[] toArray(List> validators) { - return validators.toArray(new Validator[0]); - } -} diff --git a/src/test/java/com/DesktopApplicationClientJava/validation/ThirdNameValidatorTest.java b/src/test/java/com/DesktopApplicationClientJava/validation/ThirdNameValidatorTest.java deleted file mode 100644 index 447383f..0000000 --- a/src/test/java/com/DesktopApplicationClientJava/validation/ThirdNameValidatorTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.DesktopApplicationClientJava.validation; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - -import com.DesktopApplicationClientJava.validation.utils.ErrorMessages; -import org.junit.jupiter.api.Test; - -public class ThirdNameValidatorTest { - private static final String FIELD_NAME = ThirdNameValidator.FIELD_NAME; - - @Test - void emptyThirdNameIsAccepted() { - assertNull(ThirdNameValidator.validate("")); - } - - @Test - void blankThirdNameIsRejected() { - assertEquals(ErrorMessages.IncorrectFormat, ThirdNameValidator.validate(" ")); - } - - @Test - void shortThirdNameIsRejected() { - assertEquals( - ErrorMessages.MinLength(FIELD_NAME, ThirdNameValidator.MIN_LENGTH), - ThirdNameValidator.validate("А")); - } - - @Test - void validThirdNameIsAccepted() { - assertNull(ThirdNameValidator.validate("Антон")); - } -}