package org.hibernate.validator.referenceguide.chapter02.typeargument.custom;
import static org.junit.Assert.assertEquals;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.hibernate.validator.HibernateValidator;
import org.junit.BeforeClass;
import org.junit.Test;
public class CarTest {
private static Validator validator;
@BeforeClass
public static void setUpValidator() {
ValidatorFactory factory = Validation.byProvider( HibernateValidator.class )
.configure()
.addValueExtractor( new GearBoxExtractor() )
.buildValidatorFactory();
validator = factory.getValidator();
}
@Test
public void validateCustomTypeArgumentConstraint() {
//tag::validateCustomTypeArgumentConstraint[]
Car car = new Car();
car.setGearBox( new GearBox<>( new Gear.AcmeGear() ) );
Set<ConstraintViolation<Car>> constraintViolations = validator.validate( car );
assertEquals( 1, constraintViolations.size() );
assertEquals( "Gear is not providing enough torque.", constraintViolations.iterator().next().getMessage() );
assertEquals( "gearBox", constraintViolations.iterator().next().getPropertyPath().toString() );
//end::validateCustomTypeArgumentConstraint[]
}
}