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.RegExpValidator;
12  import org.springframework.validation.BindException;
13  import org.springframework.validation.Errors;
14  import org.springframework.validation.Validator;
15  
16  /**
17   * @author Johan Vogelzang
18   * 
19   */
20  public class RegExpValidatorTest {
21      
22      public static final String EMAILADDRESS_REGEXP = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$";
23  
24      @Test
25      public void testSupports() {
26          Validator validator = new RegExpValidator(ClassToTest.class, "stringProperty", EMAILADDRESS_REGEXP);
27          assertTrue(validator.supports(ClassToTest.class));
28          assertFalse(validator.supports(String.class));
29      }
30  
31      @Test
32      public void testValidateSucces() {
33          Object object = new ClassToTest("aaa.bbb@ccc.dd");
34          Validator validator = new RegExpValidator(ClassToTest.class, "stringProperty", EMAILADDRESS_REGEXP);
35          Errors errors = new BindException(object, "object");
36          validator.validate(object, errors);
37          assertFalse(errors.hasErrors());
38      }
39  
40      @Test
41      public void testValidateFailure() {
42          Object object = new ClassToTest("aaa@bbb");
43          Validator validator = new RegExpValidator(ClassToTest.class, "stringProperty", EMAILADDRESS_REGEXP);
44          Errors errors = new BindException(object, "object");
45          validator.validate(object, errors);
46          assertTrue(errors.hasErrors());
47          assertEquals("field.regexp.match", errors.getFieldError().getCode());
48      }
49  
50      @Test
51      public void testValidateNull() {
52          Object object = new ClassToTest(null);
53          Validator validator = new RegExpValidator(ClassToTest.class, "stringProperty", EMAILADDRESS_REGEXP);
54          Errors errors = new BindException(object, "object");
55          validator.validate(object, errors);
56          assertFalse(errors.hasErrors());
57      }
58  
59      class ClassToTest {
60          private String stringProperty;
61  
62          public ClassToTest(String value) {
63              this.stringProperty = value;
64          }
65  
66          public String getStringProperty() {
67              return stringProperty;
68          }
69  
70          public void setStringProperty(String stringProperty) {
71              this.stringProperty = stringProperty;
72          }
73      }
74  
75  }