FINERACT-2326: Use Hibernate Validator

This commit is contained in:
Adam Saghy
2025-08-18 19:07:34 +02:00
parent 3fb9b94e47
commit 77f7d9aab8
14 changed files with 95 additions and 196 deletions
@@ -20,21 +20,36 @@ package org.apache.fineract.infrastructure.businessdate.validation;
import static org.assertj.core.api.Assertions.assertThat;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.infrastructure.businessdate.data.BusinessDateUpdateRequest;
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
import org.apache.fineract.validation.config.ValidationConfig;
import org.hibernate.validator.HibernateValidator;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.validation.Validator;
@Slf4j
@SpringBootTest
@ContextConfiguration(classes = { ValidationConfig.class })
@ContextConfiguration(classes = { BusinessDateValidationTest.TestConfig.class })
class BusinessDateValidationTest {
@Configuration
@Import({ MessageSourceAutoConfiguration.class })
static class TestConfig {
@Bean
public jakarta.validation.Validator validator() {
return Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory().getValidator();
}
}
@Autowired
private Validator validator;
@@ -42,14 +57,14 @@ class BusinessDateValidationTest {
void invalidAllBlank() {
var request = BusinessDateUpdateRequest.builder().dateFormat("").type(null).date(" ").locale(null).build();
var errors = validator.validateObject(request);
var errors = validator.validate(request);
assertThat(errors.getFieldErrorCount()).isEqualTo(5);
assertThat(errors).hasSize(6);
assertThat(errors.getFieldErrors()).anyMatch(e -> e.getField().equals("date"));
assertThat(errors.getFieldErrors()).anyMatch(e -> e.getField().equals("dateFormat"));
assertThat(errors.getFieldErrors()).anyMatch(e -> e.getField().equals("locale"));
assertThat(errors.getFieldErrors()).anyMatch(e -> e.getField().equals("type"));
assertThat(errors).anyMatch(e -> e.getPropertyPath().toString().equals("date"));
assertThat(errors).anyMatch(e -> e.getPropertyPath().toString().equals("dateFormat"));
assertThat(errors).anyMatch(e -> e.getPropertyPath().toString().equals("locale"));
assertThat(errors).anyMatch(e -> e.getPropertyPath().toString().equals("type"));
}
@Test
@@ -57,11 +72,11 @@ class BusinessDateValidationTest {
var request = BusinessDateUpdateRequest.builder().dateFormat("dd-MM-yyyy").type(BusinessDateType.BUSINESS_DATE).date("12-05-2025")
.locale("INVALID").build();
var errors = validator.validateObject(request);
var errors = validator.validate(request);
assertThat(errors.getFieldErrorCount()).isEqualTo(1);
assertThat(errors).hasSize(1);
assertThat(errors.getFieldErrors()).anyMatch(e -> e.getField().equals("locale"));
assertThat(errors).anyMatch(e -> e.getPropertyPath().toString().equals("locale"));
}
@Test
@@ -69,11 +84,11 @@ class BusinessDateValidationTest {
var request = BusinessDateUpdateRequest.builder().dateFormat("dd/MM/yyyy").type(BusinessDateType.BUSINESS_DATE).date("12-05-2025")
.locale("en").build();
var errors = validator.validateObject(request);
var errors = validator.validate(request);
assertThat(errors.getErrorCount()).isEqualTo(1);
assertThat(errors).hasSize(1);
assertThat(errors.getAllErrors()).anyMatch(e -> "Wrong local date fields.".equals(e.getDefaultMessage()));
assertThat(errors).anyMatch(e -> "Wrong local date fields.".equals(e.getMessage()));
}
@Test
@@ -81,8 +96,8 @@ class BusinessDateValidationTest {
var request = BusinessDateUpdateRequest.builder().dateFormat("dd-MM-yyyy").type(BusinessDateType.BUSINESS_DATE).date("12-05-2025")
.locale("en").build();
var errors = validator.validateObject(request);
var errors = validator.validate(request);
assertThat(errors.getFieldErrorCount()).isEqualTo(0);
assertThat(errors).hasSize(0);
}
}