package com.blazebit.validation.constraint;
import static com.blazebit.validation.ConstraintValidatorUtils.containsViolation;
import static com.blazebit.validation.ConstraintValidatorUtils.getValidator;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Valid;
import javax.validation.Validator;
import javax.validation.constraints.NotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
public class CheckCompareTest {
private Validator validator;
@Before
public void before() {
validator = getValidator();
}
@Test
public void testSimpleDefaultAndCompositeValidation() {
Set<ConstraintViolation<User>> violations;
User o;
o = new User();
violations = validator.validate(o);
assertTrue(violations.size() == 2);
assertTrue(containsViolation(violations, "primaryEmail"));
assertTrue(containsViolation(violations, "secondaryEmail"));
}
@Test
public void testSimpleDefaultAndCompositeValidation1() {
Set<ConstraintViolation<UserComplex>> violations;
UserComplex o;
o = new UserComplex();
violations = validator.validate(o);
assertTrue(violations.size() == 2);
assertTrue(containsViolation(violations, "primaryEmail"));
assertTrue(containsViolation(violations, "secondaryEmail"));
o = new UserComplex();
o.primaryEmail = new Email();
o.secondaryEmail = new Email();
violations = validator.validate(o);
assertTrue(violations.size() == 2);
assertTrue(containsViolation(violations, "primaryEmail.email"));
assertTrue(containsViolation(violations, "secondaryEmail.email"));
o = new UserComplex();
o.primaryEmail = new Email();
o.primaryEmail.email = "";
o.secondaryEmail = new Email();
o.secondaryEmail.email = "";
violations = validator.validate(o);
assertTrue(violations.isEmpty());
}
public static class Email {
@NotNull
String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public static class BaseUser {
@NotNull
@Valid
Email primaryEmail;
@NotNull
@Valid
Email secondaryEmail;
public Email getPrimaryEmail() {
return primaryEmail;
}
public void setPrimaryEmail(Email primaryEmail) {
this.primaryEmail = primaryEmail;
}
public Email getSecondaryEmail() {
return secondaryEmail;
}
public void setSecondaryEmail(Email secondaryEmail) {
this.secondaryEmail = secondaryEmail;
}
}
@CheckCompare({ "primaryEmail", "secondaryEmail" })
public static class User extends BaseUser {
}
@CheckCompare({ "primaryEmail.email", "secondaryEmail.email" })
public static class UserComplex extends BaseUser {
}
}