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.MaxValueValidator;
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 MaxValueValidatorTest {
20  
21      @Test
22      public void testSupportsSucceeds() {
23          Validator validator = new MaxValueValidator(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 MaxValueValidator(ClassToTest.class, "", 0);
31          assertFalse(validator.supports(Object.class));
32      }
33  
34      @Test
35      public void testIntHasErrors() {
36          ClassToTest objectToTest = new ClassToTest();
37          objectToTest.setIntProperty(4);
38          Errors errors = new BindException(objectToTest, "objectToTest");
39          Validator validator = new MaxValueValidator(ClassToTest.class, "intProperty", 3);
40          validator.validate(objectToTest, errors);
41          assertTrue(errors.hasErrors());
42          assertEquals("field.value.max", errors.getFieldError().getCode());
43      }
44  
45      @Test
46      public void testIntIsValid() {
47          ClassToTest objectToTest = new ClassToTest();
48          objectToTest.setIntProperty(3);
49          Errors errors = new BindException(objectToTest, "objectToTest");
50          Validator validator = new MaxValueValidator(ClassToTest.class, "intProperty", 3);
51          validator.validate(objectToTest, errors);
52          assertFalse(errors.hasErrors());
53      }
54  
55      @Test
56      public void testIntegerWithNull() {
57          ClassToTest objectToTest = new ClassToTest();
58          Errors errors = new BindException(objectToTest, "objectToTest");
59          Validator validator = new MaxValueValidator(ClassToTest.class, "integerProperty", 3);
60          validator.validate(objectToTest, errors);
61          assertFalse(errors.hasErrors());
62      }
63  
64      @Test
65      public void testIntegerWithError() {
66          ClassToTest objectToTest = new ClassToTest();
67          objectToTest.setIntegerProperty(4);
68          Errors errors = new BindException(objectToTest, "objectToTest");
69          Validator validator = new MaxValueValidator(ClassToTest.class, "integerProperty", 3);
70          validator.validate(objectToTest, errors);
71          assertTrue(errors.hasErrors());
72          assertEquals("field.value.max", errors.getFieldError().getCode());
73      }
74  
75      @Test
76      public void testIntegerIsValid() {
77          ClassToTest objectToTest = new ClassToTest();
78          objectToTest.setIntegerProperty(3);
79          Errors errors = new BindException(objectToTest, "objectToTest");
80          Validator validator = new MaxValueValidator(ClassToTest.class, "integerProperty", 3);
81          validator.validate(objectToTest, errors);
82          assertFalse(errors.hasErrors());
83      }
84  
85      class ClassToTest {
86          private int intProperty;
87  
88          private Integer integerProperty;
89  
90          public int getIntProperty() {
91              return intProperty;
92          }
93  
94          public void setIntProperty(int intProperty) {
95              this.intProperty = intProperty;
96          }
97  
98          public Integer getIntegerProperty() {
99              return integerProperty;
100         }
101 
102         public void setIntegerProperty(Integer integerProperty) {
103             this.integerProperty = integerProperty;
104         }
105     }
106 
107     class SubclassOfClassToTest extends ClassToTest {
108     }
109 }