Prechádzať zdrojové kódy

ValidateTypeNonNegativeInteger

Andrew Grant 6 mesiacov pred
rodič
commit
b122c84c60

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

@@ -57,6 +57,18 @@ public class ValidateTypesImpl implements ValidateTypes {
 
     @Override
     public void validateNonNegativeInteger(String integerString, String fieldName, @SuppressWarnings("SameParameterValue") String nullMessage, String formatMessage, BindingResult bindingResult) {
+        if (integerString == null || integerString.isEmpty()) {
+            bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, nullMessage);
+        } else {
+            try {
+                int test = Integer.parseInt(integerString);
+                if (test < 0) {
+                    bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, formatMessage);
+                }
+            } catch (NumberFormatException e) {
+                bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, formatMessage);
+            }
+        }
     }
 
     @Override

+ 82 - 0
src/test/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesNonNegativeIntegerTest.java

@@ -0,0 +1,82 @@
+/*
+ * 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 scot.carricksoftware.grants.constants.ApplicationConstants;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+
+
+@ExtendWith(MockitoExtension.class)
+class ValidateTypesNonNegativeIntegerTest {
+
+    private ValidateTypes validateTypes;
+
+    private String field;
+    private String nullMessage;
+    private String formatMessage;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @BeforeEach
+    void setUp() {
+        validateTypes = new ValidateTypesImpl();
+        field = "field";
+        nullMessage = "null-message";
+        formatMessage = "format-message";
+    }
+
+    @Test
+    void invalidIntegerTest() {
+        validateTypes.validateNonNegativeInteger("ccc", field, nullMessage, formatMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(field, ApplicationConstants.EMPTY_STRING, null, formatMessage);
+    }
+
+    @Test
+    void validIntegerTest() {
+        validateTypes.validateNonNegativeInteger("15", field, nullMessage, formatMessage, bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+    @Test
+    void realTest() {
+        validateTypes.validateNonNegativeInteger("3.14", field, nullMessage, formatMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(field, ApplicationConstants.EMPTY_STRING, null, formatMessage);
+    }
+
+    @Test
+    void zeroTest() {
+        validateTypes.validateNonNegativeInteger("0", field, nullMessage, formatMessage, bindingResultMock);
+        verifyNoInteractions(bindingResultMock);
+    }
+
+    @Test
+    void negativeTest() {
+        validateTypes.validateNonNegativeInteger("-1", field, nullMessage, formatMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(field, ApplicationConstants.EMPTY_STRING, null, formatMessage);
+    }
+
+    @Test
+    void nullTest() {
+        validateTypes.validateNonNegativeInteger(null, field, nullMessage, formatMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(field, ApplicationConstants.EMPTY_STRING, null, nullMessage);
+    }
+
+    @Test
+    void emptyTest() {
+        validateTypes.validateNonNegativeInteger("", field, nullMessage, formatMessage, bindingResultMock);
+        verify(bindingResultMock).rejectValue(field, ApplicationConstants.EMPTY_STRING, null, nullMessage);
+    }
+
+}

+ 0 - 6
src/test/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesNullTest.java

@@ -17,7 +17,6 @@ import scot.carricksoftware.grants.domains.places.Organisation;
 import scot.carricksoftware.grants.enums.censusentry.CensusEntrySex;
 import scot.carricksoftware.grants.enums.certificates.CertificateType;
 
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoInteractions;
 
@@ -40,11 +39,6 @@ class ValidateTypesNullTest {
         message = "message";
     }
 
-    @Test
-    void constructorTest() {
-        assertNotNull(validateTypes);
-    }
-
     @Test
     void nullPersonTest() {
         validateTypes.validatePerson(null, field, message, bindingResultMock);