Browse Source

ValidateNonNegativeStarredIntegerTest

apg 2 weeks ago
parent
commit
91f943e661

+ 4 - 8
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesImpl.java

@@ -19,7 +19,6 @@ import java.util.Locale;
 @Component
 public class ValidateTypesImpl implements ValidateTypes {
 
-
     @Override
     public void validatePerson(Person person, String fieldName, String message, BindingResult bindingResult) {
         if (person == null) {
@@ -80,19 +79,16 @@ public class ValidateTypesImpl implements ValidateTypes {
 
     @Override
     public void validateNonNegativeStaredInteger(String integerString, String fieldName, String nullMessage, String formatMessage, String negativeMessage, BindingResult bindingResult) {
-        if (integerString == null || integerString.isEmpty()) {
-            assert integerString != null;
-            Integer pos = integerString.lastIndexOf('*');
-            //noinspection ConstantValue
-            if (pos != null) {
-                //noinspection ConstantValue
+        if (integerString != null && !integerString.isEmpty()) {
+            int pos = integerString.lastIndexOf('*');
                 if (pos != -1) {
                     String newString = integerString.substring(0, pos);
                     validateNonNegativeInteger(newString, fieldName, nullMessage, formatMessage, negativeMessage, bindingResult);
                 } else {
                     validateNonNegativeInteger(integerString, fieldName, nullMessage, formatMessage, negativeMessage, bindingResult);
                 }
-            }
+        } else {
+            bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, nullMessage);
         }
 
     }

+ 87 - 0
src/test/java/scot/carricksoftware/grants/validators/helpers/ValidateNonNegativeStarredIntegerTest.java

@@ -0,0 +1,87 @@
+/*
+ * 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.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static scot.carricksoftware.grants.GenerateCertificateRandomValues.GetRandomString;
+
+@ExtendWith(MockitoExtension.class)
+class ValidateNonNegativeStarredIntegerTest {
+
+    private ValidateTypes validateTypes;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    private String fieldName;
+
+    @BeforeEach
+    public void setUp() {
+        validateTypes = new ValidateTypesImpl();
+        fieldName = GetRandomString();
+    }
+
+    @Test
+    public void constructorTest() {
+        assertNotNull(validateTypes);
+    }
+
+    @Test
+    public void validateNullInteger() {
+        String nullMessage = GetRandomString();
+
+        validateTypes.validateNonNegativeStaredInteger(null, fieldName, nullMessage, "", "", bindingResultMock);
+        verify(bindingResultMock).rejectValue(fieldName, "", null, nullMessage);
+    }
+
+
+    @Test
+    void validateEmptyInteger() {
+        String nullMessage = GetRandomString();
+
+        validateTypes.validateNonNegativeStaredInteger("", fieldName, nullMessage, "", "", bindingResultMock);
+        verify(bindingResultMock).rejectValue(fieldName, "", null, nullMessage);
+    }
+
+    @Test
+    void validateNegativeInteger() {
+        String negativeMessage = GetRandomString();
+
+        validateTypes.validateNonNegativeStaredInteger("-5", fieldName, "", "", negativeMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(fieldName, "", null, negativeMessage);
+    }
+
+    @Test
+    void validateZeroInteger() {
+        validateTypes.validateNonNegativeStaredInteger("0", fieldName, "", "", "", bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+    @Test
+    void validatePositiveInteger() {
+        validateTypes.validateNonNegativeStaredInteger("1", fieldName, "", "", "", bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+
+    @Test
+    void validateBadFormatInteger() {
+        String formatMessage = GetRandomString();
+
+        validateTypes.validateNonNegativeStaredInteger("zz", fieldName, "", formatMessage, "", bindingResultMock);
+        verify(bindingResultMock).rejectValue(fieldName, "", null, formatMessage);
+    }
+}