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.NotNullValidator;
9   import org.springframework.validation.BindException;
10  import org.springframework.validation.Errors;
11  import org.springframework.validation.Validator;
12  
13  /**
14   * @author Eric Jan Malotaux
15   */
16  public class NotNullValidatorTest {
17  
18      @Test
19      public void testSupports() {
20          Validator validator = new NotNullValidator(ClassToTest.class, "stringProperty");
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 NotNullValidator(ClassToTest.class, "stringProperty");
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(null);
37          Validator validator = new NotNullValidator(ClassToTest.class, "stringProperty");
38          Errors errors = new BindException(object, "object");
39          validator.validate(object, errors);
40          assertTrue(errors.hasErrors());
41          assertEquals("field.required", errors.getFieldError().getCode());
42      }
43  
44      class ClassToTest {
45          private String stringProperty;
46  
47          public ClassToTest(String value) {
48              this.stringProperty = value;
49          }
50  
51          public String getStringProperty() {
52              return stringProperty;
53          }
54  
55          public void setStringProperty(String stringProperty) {
56              this.stringProperty = stringProperty;
57          }
58      }
59  
60      class SubclassOfClassToTest extends ClassToTest {
61          public SubclassOfClassToTest(String value) {
62              super(value);
63          }
64      }
65  }