Commit f4441680 authored by Alex Segers's avatar Alex Segers

[AFP-73] Add Manager model unit tests [@asegers]

parent 59d792bb
package com.afp.ordermanagement.UNIT_TESTS.helper;
import com.github.javafaker.Faker;
//import com.sun.tools.javac.util.List;
import org.junit.jupiter.api.Assertions;
import static org.junit.jupiter.api.Assertions.*;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.lang.reflect.ParameterizedType;
import java.util.List;
public abstract class ValidatableEntity<E> {
private final Class<E> childClass;
static private final Faker FAKER = new Faker();
@SuppressWarnings("unchecked")
public ValidatableEntity() {
this.childClass = (
(Class<E>) (
(ParameterizedType) this.getClass()
.getGenericSuperclass()
)
.getActualTypeArguments()[0]
);
}
private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
// assertFieldValidation(String fieldName, Object input, boolean isValidInput)
public ConstraintViolation<E> createViolation(String fieldName, Object fieldValue) {
return validator
.validateValue(this.childClass, fieldName, fieldValue)
.stream()
.findAny()
.orElse(null);
}
// assertFieldValidation(String fieldName, Object input, boolean isValidInput)
public void assertFieldValidation(String fieldName, Object input, boolean expected) {
boolean isValid = validator.validateValue(this.childClass, fieldName, input).isEmpty();
String v = expected ? "valid" : "invalid";
String errMsg = String.format("Expected '%s' to be a %s value for field '%s'", input, v, fieldName);
if (isValid != expected) fail(errMsg);
}
}
package com.afp.ordermanagement.UNIT_TESTS.model;
import com.afp.ordermanagement.UNIT_TESTS.helper.ValidatableEntity;
import com.afp.ordermanagement.model.Manager;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
public class ManagerTests extends ValidatableEntity<Manager> {
@ParameterizedTest
@CsvSource(value = {"null:false", "\"\":false", "Jerry:true"}, delimiter = ':')
public void shouldValidateNameFields(String input, boolean expected) {
assertFieldValidation("firstName", input, expected);
assertFieldValidation("lastName", input, expected);
}
@ParameterizedTest
@CsvSource(value = {"null:false", "\"\":false", "poop:false", "jerry@hotmail.com:true"}, delimiter = ':')
public void shouldValidateEmailField(String input, boolean expected) {
assertFieldValidation("email", input, expected);
}
@ParameterizedTest
@CsvSource(value = {"null:false", "\"\":false"}, delimiter = ':')
public void shouldValidateGoogleIdField(String input, boolean expected) {
assertFieldValidation("googleId", input, expected);
}
@ParameterizedTest
@CsvSource(value = {"\"\",false", "https://picsum.photos/200,true", "htps: picsum.photos/200,false"})
public void shouldValidateImageUrl(String input, boolean expected) {
assertFieldValidation("imageUrl", input, expected);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment