1   /**
2    * 
3    */
4   package org.mod4j.runtime.validation;
5   
6   import static org.junit.Assert.assertEquals;
7   import static org.junit.Assert.assertFalse;
8   import static org.junit.Assert.assertTrue;
9   
10  import org.junit.Test;
11  import org.mod4j.runtime.validation.MinValueValidator;
12  import org.springframework.validation.BindException;
13  import org.springframework.validation.Errors;
14  import org.springframework.validation.Validator;
15  
16  /**
17   * @author Eric Jan Malotaux
18   */
19  public class MinValueValidatorTest {
20  
21      @Test
22      public void testSupportsSucceeds() {
23          Validator validator = new MinValueValidator(ClassToTest.class, "", 0);
24          assertTrue(validator.supports(ClassToTest.class));
25          assertTrue(validator.supports(SubclassOfClassToTest.class));
26      }
27  
28      @Test
29      public void testSupportsFails() {
30          Validator validator = new MinValueValidator(ClassToTest.class, "", 0);
31          assertFalse(validator.supports(Object.class));
32      }
33  
34      @Test
35      public void testIntHasErrors() {
36          ClassToTest objectToTest = new ClassToTest();
37          Errors errors = new BindException(objectToTest, "objectToTest");
38          Validator validator = new MinValueValidator(ClassToTest.class, "intProperty", 3);
39          validator.validate(objectToTest, errors);
40          assertTrue(errors.hasErrors());
41          assertEquals("field.value.min", errors.getFieldError().getCode());
42      }
43  
44      @Test
45      public void testIntIsValid() {
46          ClassToTest objectToTest = new ClassToTest();
47          objectToTest.setIntProperty(3);
48          Errors errors = new BindException(objectToTest, "objectToTest");
49          Validator validator = new MinValueValidator(ClassToTest.class, "intProperty", 3);
50          validator.validate(objectToTest, errors);
51          assertFalse(errors.hasErrors());
52      }
53  
54      @Test
55      public void testIntegerWithNull() {
56          ClassToTest objectToTest = new ClassToTest();
57          Errors errors = new BindException(objectToTest, "objectToTest");
58          Validator validator = new MinValueValidator(ClassToTest.class, "integerProperty", 3);
59          validator.validate(objectToTest, errors);
60          assertFalse(errors.hasErrors());
61      }
62  
63      @Test
64      public void testIntegerWithError() {
65          ClassToTest objectToTest = new ClassToTest();
66          objectToTest.setIntegerProperty(2);
67          Errors errors = new BindException(objectToTest, "objectToTest");
68          Validator validator = new MinValueValidator(ClassToTest.class, "integerProperty", 3);
69          validator.validate(objectToTest, errors);
70          assertTrue(errors.hasErrors());
71          assertEquals("field.value.min", errors.getFieldError().getCode());
72      }
73  
74      @Test
75      public void testIntegerIsValid() {
76          ClassToTest objectToTest = new ClassToTest();
77          objectToTest.setIntegerProperty(3);
78          Errors errors = new BindException(objectToTest, "objectToTest");
79          Validator validator = new MinValueValidator(ClassToTest.class, "integerProperty", 3);
80          validator.validate(objectToTest, errors);
81          assertFalse(errors.hasErrors());
82      }
83  
84      class ClassToTest {
85          private int intProperty;
86  
87          private Integer integerProperty;
88  
89          public int getIntProperty() {
90              return intProperty;
91          }
92  
93          public void setIntProperty(int intProperty) {
94              this.intProperty = intProperty;
95          }
96  
97          public Integer getIntegerProperty() {
98              return integerProperty;
99          }
100 
101         public void setIntegerProperty(Integer integerProperty) {
102             this.integerProperty = integerProperty;
103         }
104     }
105 
106     class SubclassOfClassToTest extends ClassToTest {
107     }
108 }