1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.datadictionary.validation.constraint;
17
18
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.Properties;
23
24 import org.junit.Assert;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.kuali.rice.core.api.CoreConstants;
28 import org.kuali.rice.core.api.config.property.Config;
29 import org.kuali.rice.core.api.config.property.ConfigContext;
30 import org.kuali.rice.core.framework.config.property.SimpleConfig;
31 import org.kuali.rice.core.framework.config.property.SimpleConfig;
32 import org.kuali.rice.krad.datadictionary.AttributeDefinition;
33 import org.kuali.rice.krad.datadictionary.validation.AttributeValueReader;
34 import org.kuali.rice.krad.datadictionary.validation.ErrorLevel;
35 import org.kuali.rice.krad.datadictionary.validation.SingleAttributeValueReader;
36 import org.kuali.rice.krad.datadictionary.validation.constraint.ValidCharactersConstraint;
37 import org.kuali.rice.krad.datadictionary.validation.processor.ValidCharactersConstraintProcessor;
38 import org.kuali.rice.krad.datadictionary.validation.result.ConstraintValidationResult;
39 import org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public class DatePatternConstraintTest {
56
57 private AttributeDefinition dateDefinition;
58
59 private DictionaryValidationResult dictionaryValidationResult;
60
61 private ValidCharactersConstraintProcessor processor;
62
63 private String validDate;
64 private String validDate1;
65 private String invalidDateEmpty;
66 private String invalidDate;
67 private String invalidDate1;
68 private String invalidDate2;
69 private String invalidDate3;
70
71 private DatePatternConstraint datePatternConstraint;
72
73 @Before
74 public void setUp() throws Exception {
75
76 String formats = "MM/dd/yy;MM/dd/yyyy;MM-dd-yy;MM-dd-yyyy";
77
78 Properties props = new Properties();
79 props.put(CoreConstants.STRING_TO_DATE_FORMATS, formats);
80 Config config = new SimpleConfig(props);
81
82 ConfigContext.init(config);
83 ConfigContext.getCurrentContextConfig().putProperty(CoreConstants.STRING_TO_DATE_FORMATS, formats);
84
85 processor = new ValidCharactersConstraintProcessor();
86
87 dictionaryValidationResult = new DictionaryValidationResult();
88 dictionaryValidationResult.setErrorLevel(ErrorLevel.NOCONSTRAINT);
89
90 validDate = "07-28-2011";
91 validDate1 = "12-31-83";
92 invalidDateEmpty = "";
93 invalidDate = "31-12-2010";
94 invalidDate1 = "31-12-2010 12:30:45.456";
95 invalidDate2 = "2011-07-28 IST";
96 invalidDate3 = "12/31/2011";
97
98 List<String> allowedFormats = new ArrayList<String>();
99 allowedFormats.add("MM-dd-yy");
100 allowedFormats.add("MM-dd-yyyy");
101
102 datePatternConstraint = new DatePatternConstraint();
103 datePatternConstraint.setAllowedFormats(allowedFormats);
104
105 dateDefinition = new AttributeDefinition();
106 dateDefinition.setName("date");
107 dateDefinition.setValidCharactersConstraint(datePatternConstraint);
108 }
109
110 @Test
111 public void testValueInvalidDateEmpty() {
112 ConstraintValidationResult result = process(invalidDateEmpty, "date", datePatternConstraint);
113 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
114 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfErrors());
115 Assert.assertEquals(ErrorLevel.INAPPLICABLE, result.getStatus());
116 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
117 }
118
119 @Test
120 public void testValueValidDate() {
121 ConstraintValidationResult result = process(validDate, "date", datePatternConstraint);
122 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
123 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfErrors());
124 Assert.assertEquals(ErrorLevel.OK, result.getStatus());
125 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
126 }
127
128 @Test
129 public void testValueValidDate1() {
130 ConstraintValidationResult result = process(validDate1, "Mdate", datePatternConstraint);
131 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
132 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfErrors());
133 Assert.assertEquals(ErrorLevel.OK, result.getStatus());
134 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
135 }
136
137 @Test
138 public void testValueInvalidDate() {
139 ConstraintValidationResult result = process(invalidDate, "date", datePatternConstraint);
140 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
141 Assert.assertEquals(1, dictionaryValidationResult.getNumberOfErrors());
142 Assert.assertEquals(ErrorLevel.ERROR, result.getStatus());
143 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
144 }
145
146 @Test
147 public void testValueInvalidDate1() {
148 ConstraintValidationResult result = process(invalidDate1, "date", datePatternConstraint);
149 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
150 Assert.assertEquals(1, dictionaryValidationResult.getNumberOfErrors());
151 Assert.assertEquals(ErrorLevel.ERROR, result.getStatus());
152 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
153 }
154
155 @Test
156 public void testValueInvalidDate2() {
157 ConstraintValidationResult result = process(invalidDate2, "date", datePatternConstraint);
158 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
159 Assert.assertEquals(1, dictionaryValidationResult.getNumberOfErrors());
160 Assert.assertEquals(ErrorLevel.ERROR, result.getStatus());
161 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
162 }
163
164 @Test
165 public void testValueInvalidDate3() {
166 ConstraintValidationResult result = process(invalidDate3, "date", datePatternConstraint);
167 Assert.assertEquals(0, dictionaryValidationResult.getNumberOfWarnings());
168 Assert.assertEquals(1, dictionaryValidationResult.getNumberOfErrors());
169 Assert.assertEquals(ErrorLevel.ERROR, result.getStatus());
170 Assert.assertEquals(new ValidCharactersConstraintProcessor().getName(), result.getConstraintName());
171 }
172
173 private ConstraintValidationResult process(Object object, String attributeName, ValidCharactersConstraint constraint) {
174 AttributeValueReader attributeValueReader = new SingleAttributeValueReader(object, "org.kuali.rice.kns.datadictionary.validation.MockAddress", attributeName, dateDefinition);
175 Object value = attributeValueReader.getValue();
176 return processor.process(dictionaryValidationResult, value, constraint, attributeValueReader).getFirstConstraintValidationResult();
177 }
178 }