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.NotEmptyOrWhitespaceValidator;
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 NotEmptyOrWhitespaceValidatorTest {
17  
18      @Test
19      public void testSupports() {
20          Validator validator = new NotEmptyOrWhitespaceValidator(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 NotEmptyOrWhitespaceValidator(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 testValidateNull() {
36          Object object = new ClassToTest(null);
37          Validator validator = new NotEmptyOrWhitespaceValidator(ClassToTest.class, "stringProperty");
38          Errors errors = new BindException(object, "object");
39          validator.validate(object, errors);
40          assertFalse(errors.hasErrors());
41      }
42  
43      @Test
44      public void testValidateEmpty() {
45          Object object = new ClassToTest("");
46          Validator validator = new NotEmptyOrWhitespaceValidator(ClassToTest.class, "stringProperty");
47          Errors errors = new BindException(object, "object");
48          validator.validate(object, errors);
49          assertTrue(errors.hasErrors());
50          assertEquals("field.required", errors.getFieldError().getCode());
51      }
52  
53      @Test
54      public void testValidateWhitespace() {
55          Object object = new ClassToTest("    	");
56          Validator validator = new NotEmptyOrWhitespaceValidator(ClassToTest.class, "stringProperty");
57          Errors errors = new BindException(object, "object");
58          validator.validate(object, errors);
59          assertTrue(errors.hasErrors());
60          assertEquals("field.required", errors.getFieldError().getCode());
61      }
62  
63      class ClassToTest {
64          private String stringProperty;
65  
66          public ClassToTest(String value) {
67              this.stringProperty = value;
68          }
69  
70          public String getStringProperty() {
71              return stringProperty;
72          }
73  
74          public void setStringProperty(String stringProperty) {
75              this.stringProperty = stringProperty;
76          }
77      }
78  
79      class SubclassOfClassToTest extends ClassToTest {
80          public SubclassOfClassToTest(String value) {
81              super(value);
82          }
83      }
84  }