Ver Fonte

Father and Informant made optional in death certificate

Andrew Grant há 4 meses atrás
pai
commit
6c0eab54c5

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

@@ -34,6 +34,7 @@ public class ValidationConstants {
     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_AND_UNTRACKED_FATHER_OPTIONAL = "One and only one father and untracked father may 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.";
     public static final String FIRST_PARTY_IS_NULL = "The first party cannot be null.";

+ 2 - 2
src/main/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateUntrackedFieldsValidatorImpl.java

@@ -71,11 +71,11 @@ public class DeathCertificateUntrackedFieldsValidatorImpl implements DeathCertif
     @Override
     public void validateFather(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
         logger.debug("DeathCertificateUntrackedFieldsValidatorImp::validateFather");
-        validateTwoFieldTypes.validatePersonAndUntrackedPerson(deathCertificateCommand.getFather(),
+        validateTwoFieldTypes.validateOptionalPersonAndUntrackedPerson(deathCertificateCommand.getFather(),
                 deathCertificateCommand.getUntrackedFather(),
                 "father",
                 "untrackedFather",
-                ValidationConstants.FATHER_AND_UNTRACKED_FATHER,
+                ValidationConstants.FATHER_AND_UNTRACKED_FATHER_OPTIONAL,
                 bindingResult);
     }
 

+ 2 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTwoFieldTypes.java

@@ -15,6 +15,8 @@ public interface ValidateTwoFieldTypes {
 
     void validatePersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message,  BindingResult bindingResult);
 
+    void validateOptionalPersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message, BindingResult bindingResult);
+
     void validatePlaceAndUntrackedPlace(Place place, String untrackedPlace, String placeFieldName, String untrackedFieldName, String message, BindingResult bindingResult);
 
     void validateOptionalPlaceAndUntrackedPlace(Place place, String untrackedPlace, String placeFieldName, String untrackedFieldName, String message, BindingResult bindingResult);

+ 7 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTwoFieldTypesImpl.java

@@ -22,6 +22,13 @@ public class ValidateTwoFieldTypesImpl implements ValidateTwoFieldTypes {
         }
     }
 
+    @Override
+    public void validateOptionalPersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message, BindingResult bindingResult) {
+        if (person != null && (untrackedPerson != null  && !untrackedPerson.isEmpty())) {
+            reportError(personFieldName, untrackedFieldName, message, bindingResult);
+        }
+    }
+
     @Override
     public void validatePlaceAndUntrackedPlace(Place place, String untrackedPlace, String placeFieldName, String untrackedFieldName, String message, BindingResult bindingResult) {
     boolean untrackedFound = (untrackedPlace != null && !untrackedPlace.isEmpty());

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

@@ -49,6 +49,7 @@ class BirthCertificateCommandPartThreeValidatorTest {
         when(birthCertificateCommandMock.getSex()).thenReturn(Sex.MALE);
         when(birthCertificateCommandMock.getWhenBorn()).thenReturn(GetRandomString());
         when(birthCertificateCommandMock.getFather()).thenReturn(GetRandomPerson());
+        when(birthCertificateCommandMock.getUntrackedFather()).thenReturn(GetRandomString());
         when(birthCertificateCommandMock.getWhereBorn()).thenReturn(GetRandomPlace());
         when(birthCertificateCommandMock.getUntrackedWhereBorn()).thenReturn(GetRandomString());
         when(birthCertificateCommandMock.getFatherUsualResidence()).thenReturn(GetRandomPlace());

+ 3 - 3
src/test/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateUntrackedFieldsValidatorTest.java

@@ -85,10 +85,10 @@ class DeathCertificateUntrackedFieldsValidatorTest {
         deathCertificateUntrackedFieldsValidator.validate(deathCertificateCommand, bindingResultMock);
         verify(validateTwoFieldTypesMock).validatePersonAndUntrackedPerson(spouse, untrackedSpouse, "spouse", "untrackedSpouse",
                 "One and only one spouse and untracked spouse must be specified.", bindingResultMock);
-        verify(validateTwoFieldTypesMock).validatePersonAndUntrackedPerson(father, untrackedFather, "father", "untrackedFather",
-                "One and only one father and untracked father must be specified.", bindingResultMock);
+        verify(validateTwoFieldTypesMock).validateOptionalPersonAndUntrackedPerson(father, untrackedFather, "father", "untrackedFather",
+               "One and only one father and untracked father may be specified.", bindingResultMock);
         verify(validateTwoFieldTypesMock).validatePlaceAndUntrackedPlace(whereDied, untrackedWhereDied, "whereDied", "untrackedWhereDied",
-                "One and only one where died and untracked where died must be specified.", bindingResultMock);
+               "One and only one where died and untracked where died must be specified.", bindingResultMock);
         verify(validateTwoFieldTypesMock).validateOptionalPlaceAndUntrackedPlace(usualResidence, untrackedUsualResidence, "usualResidence", "untrackedUsualResidence",
                 "Only one usual residence and untracked usual residence may be specified.", bindingResultMock);
         verify(validateTwoFieldTypesMock).validatePersonAndUntrackedPerson(mother, untrackedMother, "mother", "untrackedMother",