Explorar el Código

ValidatePersonAndUntrackedPerson

Andrew Grant hace 5 meses
padre
commit
6e922e94a2

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

@@ -5,10 +5,12 @@
 
 package scot.carricksoftware.grants.validators.helpers;
 
+import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.domains.people.Person;
 import scot.carricksoftware.grants.domains.places.Place;
 
+@Component
 public interface ValidateTwoFieldTypes {
 
     void validatePersonAndUntrackedPerson(Person person, String untrackedPerson, String personFieldName, String untrackedFieldName, String message,  BindingResult bindingResult);

+ 3 - 8
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTwoFieldTypesImpl.java

@@ -14,21 +14,16 @@ import scot.carricksoftware.grants.domains.places.Place;
 @Component
 public class ValidateTwoFieldTypesImpl implements ValidateTwoFieldTypes {
 
-
-    @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());
-        if (!(person == null) && untrackedPerson != null &&  !(untrackedPerson.trim().isEmpty())) {
-            error = true;
-        }
-        if (error) {
+
+        boolean untrackedFound = (untrackedPerson != null && !untrackedPerson.isEmpty());
+        if ((person == null && !untrackedFound) || person != null && untrackedFound) {
             bindingResult.rejectValue(personFieldName, ApplicationConstants.EMPTY_STRING, null, message);
             bindingResult.rejectValue(untrackedFieldName, ApplicationConstants.EMPTY_STRING, null, message);
         }
     }
 
-    @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());

+ 74 - 0
src/test/java/scot/carricksoftware/grants/validators/helpers/ValidateValidatePersonAndUntrackedPersonTest.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.validators.helpers;
+
+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 static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static scot.carricksoftware.grants.GenerateCertificateRandomValues.GetRandomString;
+import static scot.carricksoftware.grants.GenerateRandomPeopleValues.GetRandomPerson;
+
+@ExtendWith(MockitoExtension.class)
+class ValidateValidatePersonAndUntrackedPersonTest {
+
+    private ValidateTwoFieldTypes validateTwoFieldTypes;
+
+    private String personField;
+    private String untrackedField;
+    private String message;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @BeforeEach
+    void setUp() {
+        validateTwoFieldTypes = new ValidateTwoFieldTypesImpl();
+        personField = "personField";
+        untrackedField = "untrackedField";
+        message = "message";
+    }
+
+    @Test
+    void bothNullTest() {
+        validateTwoFieldTypes.validatePersonAndUntrackedPerson(null, null, personField, untrackedField, message, bindingResultMock);
+        verify(bindingResultMock).rejectValue(personField, "", null, message);
+        verify(bindingResultMock).rejectValue(untrackedField, "", null, message);
+    }
+
+    @Test
+    void nullPersonAndEmptyUntrackedFieldTest() {
+        validateTwoFieldTypes.validatePersonAndUntrackedPerson(null, "", personField, untrackedField, message, bindingResultMock);
+        verify(bindingResultMock).rejectValue(personField, "", null, message);
+        verify(bindingResultMock).rejectValue(untrackedField, "", null, message);
+    }
+
+    @Test
+    void bothGivenFieldTest() {
+        validateTwoFieldTypes.validatePersonAndUntrackedPerson(GetRandomPerson(), GetRandomString(), personField, untrackedField, message, bindingResultMock);
+        verify(bindingResultMock).rejectValue(personField, "", null, message);
+        verify(bindingResultMock).rejectValue(untrackedField, "", null, message);
+    }
+
+    @Test
+    void personOnlyGivenTest() {
+        validateTwoFieldTypes.validatePersonAndUntrackedPerson(GetRandomPerson(), null, personField, untrackedField, message, bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+    @Test
+    void unTrackedPersonOnlyGivenTest() {
+        validateTwoFieldTypes.validatePersonAndUntrackedPerson(null, GetRandomString(), personField, untrackedField, message, bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+
+}