Skip to content

Commit 19eecb1

Browse files
committed
Add @ignored Test case to reproduce SPR-10243
Issue: SPR-10243
1 parent 0b61014 commit 19eecb1

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

spring-context/src/test/java/org/springframework/validation/beanvalidation/ValidatorFactoryTests.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@
3535
import javax.validation.constraints.NotNull;
3636

3737
import org.hibernate.validator.HibernateValidator;
38+
import org.junit.Ignore;
3839
import org.junit.Test;
3940

4041
import org.springframework.validation.BeanPropertyBindingResult;
4142
import org.springframework.validation.Errors;
4243
import org.springframework.validation.FieldError;
4344
import org.springframework.validation.ObjectError;
4445

46+
import static org.hamcrest.Matchers.instanceOf;
4547
import static org.junit.Assert.*;
4648

4749
/**
@@ -102,6 +104,22 @@ public void testSimpleValidationWithClassLevel() throws Exception {
102104
assertTrue(cv.getConstraintDescriptor().getAnnotation() instanceof NameAddressValid);
103105
}
104106

107+
@Test
108+
@Ignore
109+
public void testSpringValidationFieldType() throws Exception {
110+
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
111+
validator.afterPropertiesSet();
112+
ValidPerson person = new ValidPerson();
113+
person.setName("Phil");
114+
person.getAddress().setStreet("Phil's Street");
115+
BeanPropertyBindingResult errors = new BeanPropertyBindingResult(person, "person");
116+
validator.validate(person, errors);
117+
assertEquals(1, errors.getErrorCount());
118+
assertThat("Field/Value type missmatch",
119+
errors.getFieldError("address").getRejectedValue(),
120+
instanceOf(ValidAddress.class));
121+
}
122+
105123
@Test
106124
public void testSpringValidation() throws Exception {
107125
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
@@ -289,8 +307,13 @@ public void initialize(NameAddressValid constraintAnnotation) {
289307
}
290308

291309
@Override
292-
public boolean isValid(ValidPerson value, ConstraintValidatorContext constraintValidatorContext) {
293-
return (value.name == null || !value.address.street.contains(value.name));
310+
public boolean isValid(ValidPerson value, ConstraintValidatorContext context) {
311+
boolean valid = (value.name == null || !value.address.street.contains(value.name));
312+
if (!valid && "Phil".equals(value.name)) {
313+
context.buildConstraintViolationWithTemplate(
314+
context.getDefaultConstraintMessageTemplate()).addNode("address").addConstraintViolation().disableDefaultConstraintViolation();
315+
}
316+
return valid;
294317
}
295318
}
296319

0 commit comments

Comments
 (0)