Browse Source

Birth Certificate Validation

Andrew Grant 5 months ago
parent
commit
e630d42392

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

@@ -20,6 +20,10 @@ public class ValidationConstants {
     public static final String NAME_IS_TOO_LONG = "Name must be no more than " + ApplicationConstants.MAXIMUM_NAME_LENGTH + " characters long.";
     public static final String DATE_IS_NULL = "Date must exist.";
     public static final String DATE_IN_FUTURE = "Date should not be in the future.";
+
+    public static final String PLACE_IS_NULL = "Place must exist.";
+    public static final String REGION_IS_NULL = "Region must exist.";
+    public static final String COUNTRY_IS_NULL = "Country must exist.";
     public static final String CENSUS_IS_NULL = "The census should be specified";
     public static final String CENSUS_NAME_IS_NULL = "Either Person or Untracked Person must be given";
     public static final String CENSUS_NAME_IS_NOT_NULL = "Both Person and Untracked Person cannot be given";
@@ -40,11 +44,7 @@ public class ValidationConstants {
     public static final String WHEN_BORN_INCORRECT_FORMAT = "The format should be dd/MM/yyyy hh:mm.";
     public static final String WHEN_BORN_IS_NULL = "When born 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 PLACE_IS_NULL = "The place cannot be null.";
-    public static final String COUNTRY_IS_NULL = "The country cannot be null.";
-    public static final String REGION_IS_NULL = "The region cannot be null.";
-
+    public static final String WHERE_BORN_AND_UNTRACKED_WHERE_BORN = "One and only one where born and untracked where born must be specified.";
     public static final String BRIDE_IS_NULL = "The bride cannot be null.";
     public static final String GROOM_IS_NULL = "The groom cannot be null.";
     public static final String SAME_BRIDE_AND_GROOM = "The bride and groom cannot be the same person.";

+ 7 - 5
src/main/java/scot/carricksoftware/grants/validators/certificates/birthcertificate/BirthCertificateCommandPartThreeValidatorImpl.java

@@ -31,14 +31,10 @@ public class BirthCertificateCommandPartThreeValidatorImpl implements BirthCerti
 
         validateSex(birthCertificateCommand, bindingResult);
         validateWhenBorn(birthCertificateCommand, bindingResult);
-        validateWhereBorn(birthCertificateCommand, bindingResult);
         validateFatherAndUntrackedFather(birthCertificateCommand, bindingResult);
+        validateWhereBornAndUntrackedWhereBorn(birthCertificateCommand, bindingResult);
     }
 
-    private void validateWhereBorn(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
-        logger.debug("Validating where born");
-        validateTypes.validateNullOrEmptyString(birthCertificateCommand.getUntrackedWhereBorn(), "untrackedWhereBorn", ValidationConstants.WHERE_BORN_IS_NULL, bindingResult);
-    }
 
     private void validateSex(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
         logger.debug("Validating sex");
@@ -55,4 +51,10 @@ public class BirthCertificateCommandPartThreeValidatorImpl implements BirthCerti
         validateTypes.validatePersonAndUntrackedPerson(birthCertificateCommand.getFather(), birthCertificateCommand.getUntrackedFather(), "father", "untrackedFather", ValidationConstants.FATHER_AND_UNTRACKED_FATHER,bindingResult);
     }
 
+    private void validateWhereBornAndUntrackedWhereBorn(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
+        logger.debug("Validating where born and untracked where born");
+        validateTypes.validatePlaceAndUntrackedPlace(birthCertificateCommand.getWhereBorn(), birthCertificateCommand.getUntrackedWhereBorn(),
+                "whereBorn", "untrackedWhereBorn", ValidationConstants.WHERE_BORN_AND_UNTRACKED_WHERE_BORN,bindingResult);
+    }
+
 }

+ 3 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypes.java

@@ -8,6 +8,7 @@ package scot.carricksoftware.grants.validators.helpers;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.domains.people.Person;
 import scot.carricksoftware.grants.domains.places.Organisation;
+import scot.carricksoftware.grants.domains.places.Place;
 import scot.carricksoftware.grants.enums.general.Sex;
 import scot.carricksoftware.grants.enums.certificates.CertificateType;
 
@@ -35,4 +36,6 @@ public interface ValidateTypes {
     void validatePersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message,  BindingResult bindingResult);
 
 
+    @SuppressWarnings("EmptyMethod")
+    void validatePlaceAndUntrackedPlace(Place place, String untrackedPlace, String placeFieldName, String untrackedFieldName, String message, BindingResult bindingResult);
 }

+ 15 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesImpl.java

@@ -10,6 +10,7 @@ import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.constants.ApplicationConstants;
 import scot.carricksoftware.grants.domains.people.Person;
 import scot.carricksoftware.grants.domains.places.Organisation;
+import scot.carricksoftware.grants.domains.places.Place;
 import scot.carricksoftware.grants.enums.general.Sex;
 import scot.carricksoftware.grants.enums.certificates.CertificateType;
 
@@ -104,6 +105,7 @@ public class ValidateTypesImpl implements ValidateTypes {
         }
     }
 
+    @SuppressWarnings("DuplicatedCode")
     @Override
     public void validatePersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message, BindingResult bindingResult) {
        boolean error = person == null && (untrackedPerson == null || untrackedPerson.trim().isEmpty());
@@ -116,4 +118,17 @@ public class ValidateTypesImpl implements ValidateTypes {
         }
     }
 
+    @SuppressWarnings("DuplicatedCode")
+    @Override
+    public void validatePlaceAndUntrackedPlace(Place place, String untrackedPlace, String placeFieldName, String untrackedFieldName, String message, BindingResult bindingResult) {
+        boolean error = place == null && (untrackedPlace == null || untrackedPlace.trim().isEmpty());
+        if (!(place == null) && untrackedPlace != null &&  !(untrackedPlace.trim().isEmpty())) {
+            error = true;
+        }
+        if (error) {
+            bindingResult.rejectValue(placeFieldName, ApplicationConstants.EMPTY_STRING, null, message);
+            bindingResult.rejectValue(untrackedFieldName, ApplicationConstants.EMPTY_STRING, null, message);
+        }
+    }
+
 }

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/census/CensusCommandNonNumericValidatorTest.java

@@ -84,6 +84,6 @@ public class CensusCommandNonNumericValidatorTest {
         assertEquals("place", stringArgumentCaptor.getValue());
         assertEquals("", stringArgumentCaptor2.getValue());
         assertNull(objectArgumentCaptor.getValue());
-        assertEquals("The place cannot be null.", stringArgumentCaptor3.getValue());
+        assertEquals("Place must exist.", stringArgumentCaptor3.getValue());
     }
 }

+ 0 - 8
src/test/java/scot/carricksoftware/grants/validators/certificates/birthcertificate/BirthCertificateCommandPartThreeValidatorTest.java

@@ -40,14 +40,6 @@ class BirthCertificateCommandPartThreeValidatorTest {
         validator = new BirthCertificateCommandPartThreeValidatorImpl(validateTypesMock);
     }
 
-    @Test
-    void validateWhereBornTest() {
-        String where = GetRandomString();
-        when(birthCertificateCommandMock.getUntrackedWhereBorn()).thenReturn(where);
-        validator.validate(birthCertificateCommandMock, bindingResultMock);
-        verify(validateTypesMock).validateNullOrEmptyString(where, "untrackedWhereBorn", "Where born cannot be null.", bindingResultMock);
-    }
-
     @Test
     void validateSexTest() {
         Sex sex = Sex.MALE;

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/images/PlaceImageCommandValidatorTest.java

@@ -55,6 +55,6 @@ class PlaceImageCommandValidatorTest {
                 stringArgumentCaptor3.capture());
 
         assertEquals("place", stringArgumentCaptor.getValue());
-        assertEquals("The place cannot be null.", stringArgumentCaptor3.getValue());
+        assertEquals("Place must exist.", stringArgumentCaptor3.getValue());
     }
 }

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/text/PlaceTextCommandValidatorTest.java

@@ -55,6 +55,6 @@ class PlaceTextCommandValidatorTest {
                 stringArgumentCaptor3.capture());
 
         assertEquals("place", stringArgumentCaptor.getValue());
-        assertEquals("The place cannot be null.", stringArgumentCaptor3.getValue());
+        assertEquals("Place must exist.", stringArgumentCaptor3.getValue());
     }
 }