1 package org.mod4j.runtime.validation;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6
7 import org.junit.Test;
8 import org.mod4j.runtime.validation.MaxLengthValidator;
9 import org.springframework.validation.BindException;
10 import org.springframework.validation.Errors;
11 import org.springframework.validation.Validator;
12
13
14
15
16 public class MaxLengthValidatorTest {
17
18 @Test
19 public void testSupports() {
20 Validator validator = new MaxLengthValidator(ClassToTest.class, "stringProperty", 3);
21 assertTrue(validator.supports(ClassToTest.class));
22 assertFalse(validator.supports(String.class));
23 }
24
25 @Test
26 public void testValidateSucces() {
27 Object object = new ClassToTest("123");
28 Validator validator = new MaxLengthValidator(ClassToTest.class, "stringProperty", 3);
29 Errors errors = new BindException(object, "object");
30 validator.validate(object, errors);
31 assertFalse(errors.hasErrors());
32 }
33
34 @Test
35 public void testValidateFailure() {
36 Object object = new ClassToTest("1234");
37 Validator validator = new MaxLengthValidator(ClassToTest.class, "stringProperty", 3);
38 Errors errors = new BindException(object, "object");
39 validator.validate(object, errors);
40 assertTrue(errors.hasErrors());
41 assertEquals("field.length.max", errors.getFieldError().getCode());
42 }
43
44 @Test
45 public void testValidateNull() {
46 Object object = new ClassToTest(null);
47 Validator validator = new MaxLengthValidator(ClassToTest.class, "stringProperty", 3);
48 Errors errors = new BindException(object, "object");
49 validator.validate(object, errors);
50 assertFalse(errors.hasErrors());
51 }
52
53 class ClassToTest {
54 private String stringProperty;
55
56 public ClassToTest(String value) {
57 this.stringProperty = value;
58 }
59
60 public String getStringProperty() {
61 return stringProperty;
62 }
63
64 public void setStringProperty(String stringProperty) {
65 this.stringProperty = stringProperty;
66 }
67 }
68
69 class SubclassOfClassToTest extends ClassToTest {
70 public SubclassOfClassToTest(String value) {
71 super(value);
72 }
73 }
74 }