refactor: AdultValidatorTest refactored

This commit is contained in:
Piotr Dec 2024-05-23 00:06:32 +02:00
parent 7e38b5a2e0
commit 5555e57f34
Signed by: stawros
GPG key ID: F89F27AD8F881A91
2 changed files with 39 additions and 24 deletions

View file

@ -1,58 +1,42 @@
package eu.ztsh.wymiana.validation; package eu.ztsh.wymiana.validation;
import jakarta.validation.ConstraintValidatorContext;
import org.hibernate.validator.internal.engine.DefaultClockProvider;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import static org.assertj.core.api.Assertions.assertThat; class AdultValidatorTest extends ValidatorTest<AdultValidator, String> {
class AdultValidatorTest { protected AdultValidatorTest() {
super(new AdultValidator());
private static AdultValidator validator;
private static ConstraintValidatorContext validatorContext;
@BeforeAll
static void prepare() {
validator = new AdultValidator();
validatorContext = Mockito.mock(ConstraintValidatorContext.class);
Mockito.when(validatorContext.getClockProvider()).thenReturn(DefaultClockProvider.INSTANCE);
} }
@Test @Test
@DisplayName("No digits in PESEL") @DisplayName("No digits in PESEL")
void invalidPatternTest() { void invalidPatternTest() {
assertThat(call("notAPesel")).isFalse(); assertThatValidation("notAPesel").isFalse();
} }
@Test @Test
@DisplayName("Not an adult") @DisplayName("Not an adult")
void notAnAdultTest() { void notAnAdultTest() {
assertThat(call("24242400000")).isFalse(); assertThatValidation("24242400000").isFalse();
} }
@Test @Test
@DisplayName("Adult") @DisplayName("Adult")
void adultTest() { void adultTest() {
assertThat(call("88010100000")).isTrue(); assertThatValidation("88010100000").isTrue();
} }
@Test @Test
@DisplayName("Elderly person") @DisplayName("Elderly person")
void seniorTest() { void seniorTest() {
assertThat(call("00010100000")).isTrue(); assertThatValidation("00010100000").isTrue();
} }
@Test @Test
@DisplayName("Invalid date") @DisplayName("Invalid date")
void notAValidDateTest() { void notAValidDateTest() {
assertThat(call("00919100000")).isFalse(); assertThatValidation("00919100000").isFalse();
}
private boolean call(String value) {
return validator.isValid(value, validatorContext);
} }
} }

View file

@ -0,0 +1,31 @@
package eu.ztsh.wymiana.validation;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import org.assertj.core.api.AbstractBooleanAssert;
import org.hibernate.validator.internal.engine.DefaultClockProvider;
import org.junit.jupiter.api.BeforeAll;
import org.mockito.Mockito;
import static org.assertj.core.api.Assertions.assertThat;
public abstract class ValidatorTest<V extends ConstraintValidator<?, C>, C> {
private final V validator;
private static ConstraintValidatorContext validatorContext;
protected ValidatorTest(V validator) {
this.validator = validator;
}
@BeforeAll
static void prepare() {
validatorContext = Mockito.mock(ConstraintValidatorContext.class);
Mockito.when(validatorContext.getClockProvider()).thenReturn(DefaultClockProvider.INSTANCE);
}
protected AbstractBooleanAssert<?> assertThatValidation(C value) {
return assertThat(validator.isValid(value, validatorContext));
}
}