浏览代码

DeathCertificateCommandValidatorTest

Andrew Grant 4 月之前
父节点
当前提交
7af828feec

+ 1 - 0
src/main/java/scot/carricksoftware/grants/constants/ValidationConstants.java

@@ -32,6 +32,7 @@ public class ValidationConstants {
     public static final String DATE_IN_FUTURE = "Date should not be in the future.";
     public static final String DATE_IS_INVALID = "The certificate date is invalid or of the wrong format.";
     public static final String DATE_IS_NULL = "Date must exist.";
+    public static final String DECEASED_IS_NULL = "The deceased cannot be null.";
     public static final String FATHER_AND_UNTRACKED_FATHER = "One and only one father and untracked father must be specified.";
     public static final String FATHER_USUAL_RESIDENCE_AND_UNTRACKED_FATHER_USUAL_RESIDENCE = "Only one usual residence and untracked usual residence must be specified.";
     public static final String FIELD_NOT_NEGATIVE_INTEGER = "Not a non negative integer.";

+ 19 - 5
src/main/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateNullFieldsValidatorImpl.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.commands.certificates.deathcertificates.DeathCertificateCommand;
 import scot.carricksoftware.grants.constants.ValidationConstants;
+import scot.carricksoftware.grants.validators.helpers.ValidateDateTypes;
 import scot.carricksoftware.grants.validators.helpers.ValidateTypesImpl;
 
 @Component
@@ -19,15 +20,18 @@ public class DeathCertificateNullFieldsValidatorImpl implements DeathCertificate
     private static final Logger logger = LogManager.getLogger(DeathCertificateNullFieldsValidatorImpl.class);
 
     private final ValidateTypesImpl validateTypes;
+    private final ValidateDateTypes validateDateTypes;
 
-    public DeathCertificateNullFieldsValidatorImpl(ValidateTypesImpl validateTypes) {
+    public DeathCertificateNullFieldsValidatorImpl(ValidateTypesImpl validateTypes, ValidateDateTypes validateDateTypes) {
         this.validateTypes = validateTypes;
+        this.validateDateTypes = validateDateTypes;
     }
 
     @Override
     public void validate(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         validateCertificateNumber(deathCertificateCommand, bindingResult);
         validateCertificateType(deathCertificateCommand, bindingResult);
+        validateCertificateDate(deathCertificateCommand, bindingResult);
         validateVolume(deathCertificateCommand, bindingResult);
         validateNumber(deathCertificateCommand, bindingResult);
         validateDeceased(deathCertificateCommand, bindingResult);
@@ -40,22 +44,22 @@ public class DeathCertificateNullFieldsValidatorImpl implements DeathCertificate
 
     private void validateDeceased(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         logger.debug("DeathCertificateNullFieldsValidator::validateDeceased");
-        validateTypes.validatePerson(deathCertificateCommand.getDeceased(), "deceased", "Deceased cannot be null", bindingResult);
+        validateTypes.validatePerson(deathCertificateCommand.getDeceased(), "deceased", ValidationConstants.DECEASED_IS_NULL, bindingResult);
     }
 
     private void validateCertificateNumber(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         logger.debug("DeathCertificateNullFieldsValidator::validateCertificateNumber");
-        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getCertificateNumber(), "certificateNumber","Certificate number must exist", bindingResult);
+        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getCertificateNumber(), "certificateNumber",ValidationConstants.CERTIFICATE_NUMBER_IS_NULL, bindingResult);
     }
 
     private void validateVolume(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         logger.debug("DeathCertificateNullFieldsValidator::validateVolume");
-        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getVolume(), "volume","Volume must exist", bindingResult);
+        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getVolume(), "volume",ValidationConstants.REGISTRATION_VOLUME_IS_NULL, bindingResult);
     }
 
     private void validateNumber(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         logger.debug("DeathCertificateNullFieldsValidator::validateNumber");
-        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getNumber(), "number","Number must exist", bindingResult);
+        validateTypes.validateNullOrEmptyString(deathCertificateCommand.getNumber(), "number",ValidationConstants.NUMBER_IS_NULL, bindingResult);
     }
 
     private void validateCauseOfDeath(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
@@ -88,6 +92,16 @@ public class DeathCertificateNullFieldsValidatorImpl implements DeathCertificate
         validateTypes.validateCertificateType(deathCertificateCommand.getCertificateType(), "certificateType",ValidationConstants.CERTIFICATE_TYPE_IS_NULL, bindingResult);
     }
 
+    private void validateCertificateDate(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
+        logger.debug("Validating birth certificate Certificate Date");
+        validateDateTypes.validatePastDate(deathCertificateCommand.getCertificateDate(),
+                "certificateDate",
+                ValidationConstants.CERTIFICATE_DATE_IS_NULL,
+                ValidationConstants.DATE_IS_INVALID,
+                ValidationConstants.DATE_IN_FUTURE,
+                bindingResult);
+    }
+
 
 
 }

+ 48 - 0
src/test/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateCommandValidatorTest.java

@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.validators.certificates.deathcertificate;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.certificates.deathcertificates.DeathCertificateCommand;
+
+import static org.mockito.Mockito.verify;
+
+@ExtendWith(MockitoExtension.class)
+class DeathCertificateCommandValidatorTest {
+
+    private DeathCertificateCommandValidator deathCertificateCommandValidator;
+
+    @Mock
+    private DeathCertificateNullFieldsValidator deathCertificateNullFieldsValidatorMock;
+
+    @Mock
+    private DeathCertificateUntrackedFieldsValidator deathCertificateUntrackedFieldsValidatorMock;
+
+    @Mock
+    private DeathCertificateCommand deathCertificateCommandMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @BeforeEach
+    void setUp() {
+        deathCertificateCommandValidator = new DeathCertificateCommandValidatorImpl(
+                deathCertificateNullFieldsValidatorMock,
+                deathCertificateUntrackedFieldsValidatorMock);
+    }
+
+    @Test
+    void validateTest() {
+        deathCertificateCommandValidator.validate(deathCertificateCommandMock, bindingResultMock);
+        verify(deathCertificateNullFieldsValidatorMock).validate(deathCertificateCommandMock, bindingResultMock);
+        verify(deathCertificateUntrackedFieldsValidatorMock).validate(deathCertificateCommandMock, bindingResultMock);
+    }
+}