1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.validator;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertTrue;
22 import static org.seasar.cubby.validator.DefaultValidationRules.DATA_CONSTRAINT;
23 import static org.seasar.cubby.validator.DefaultValidationRules.DATA_TYPE;
24
25 import java.util.Collection;
26 import java.util.Iterator;
27 import java.util.Map;
28
29 import org.junit.Test;
30 import org.seasar.cubby.action.ActionErrors;
31 import org.seasar.cubby.action.ActionResult;
32 import org.seasar.cubby.action.Forward;
33 import org.seasar.cubby.action.Redirect;
34 import org.seasar.cubby.validator.validators.EqualsValidator;
35 import org.seasar.cubby.validator.validators.MaxLengthValidator;
36 import org.seasar.cubby.validator.validators.NumberValidator;
37 import org.seasar.cubby.validator.validators.RangeValidator;
38 import org.seasar.cubby.validator.validators.RequiredValidator;
39
40 public class DefaultValidationRulesTest {
41
42 @Test
43 public void addAndGetRules1() throws Exception {
44 ValidationRules rules = new DefaultValidationRules() {
45 @Override
46 protected void initialize() {
47 add("name", new RequiredValidator(), new MaxLengthValidator(10));
48 }
49 };
50 assertEquals(1, rules.getPhaseValidationRules(DATA_TYPE).size());
51 assertEquals(0, rules.getPhaseValidationRules(DATA_CONSTRAINT).size());
52 }
53
54 @Test
55 public void addAndGetRules2() throws Exception {
56 ValidationRules rules = new DefaultValidationRules() {
57 @Override
58 protected void initialize() {
59 add(DATA_CONSTRAINT, new ValidationRule() {
60 public void apply(Map<String, Object[]> params,
61 Object form, ActionErrors errors)
62 throws ValidationException {
63 if ("2".equals(params.get("foo"))) {
64 if (params.get("bar") == null
65 || "".equals(params.get("bar"))) {
66 throw new ValidationException("message");
67 }
68 }
69 }
70 });
71 }
72 };
73 assertEquals(0, rules.getPhaseValidationRules(DATA_TYPE).size());
74 assertEquals(1, rules.getPhaseValidationRules(DATA_CONSTRAINT).size());
75 }
76
77 @Test
78 public void initialize() throws Exception {
79 ValidationRules rules = new DefaultValidationRules() {
80 public void initialize() {
81 add("name", new RequiredValidator(), new MaxLengthValidator(10));
82 add("age", new NumberValidator(), new RangeValidator(0, 10));
83 }
84 };
85 assertEquals(2, rules.getPhaseValidationRules(DATA_TYPE).size());
86 assertEquals(0, rules.getPhaseValidationRules(DATA_CONSTRAINT).size());
87 }
88
89 @Test
90 public void constractor1() throws Exception {
91 ValidationRules rules = new DefaultValidationRules() {
92 public void initialize() {
93 add("name", new RequiredValidator(), new MaxLengthValidator(10));
94 add("age", new NumberValidator(), new RangeValidator(0, 10));
95 }
96 };
97 assertEquals(2, rules.getPhaseValidationRules(DATA_TYPE).size());
98 assertEquals(0, rules.getPhaseValidationRules(DATA_CONSTRAINT).size());
99
100 Iterator<ValidationRule> iter = rules
101 .getPhaseValidationRules(DATA_TYPE).iterator();
102 FieldValidationRule rule = (FieldValidationRule) iter.next();
103 assertEquals("name", rule.getFieldName());
104 assertEquals("name", rule.getFieldNameKey());
105 rule = (FieldValidationRule) iter.next();
106 assertEquals("age", rule.getFieldName());
107 assertEquals("age", rule.getFieldNameKey());
108 }
109
110 @Test
111 public void constractor2() throws Exception {
112 ValidationRules rules = new DefaultValidationRules("userProfile.") {
113 public void initialize() {
114 add("name", new RequiredValidator(), new MaxLengthValidator(10));
115 add("age", new NumberValidator(), new RangeValidator(0, 10));
116 }
117 };
118 assertEquals(2, rules.getPhaseValidationRules(DATA_TYPE).size());
119 assertEquals(0, rules.getPhaseValidationRules(DATA_CONSTRAINT).size());
120
121 Iterator<ValidationRule> iter = rules
122 .getPhaseValidationRules(DATA_TYPE).iterator();
123 FieldValidationRule rule = (FieldValidationRule) iter.next();
124 assertEquals("name", rule.getFieldName());
125 assertEquals("userProfile.name", rule.getFieldNameKey());
126 rule = (FieldValidationRule) iter.next();
127 assertEquals("age", rule.getFieldName());
128 assertEquals("userProfile.age", rule.getFieldNameKey());
129 }
130
131 @Test
132 public void fail() {
133 ValidationRules rules = new DefaultValidationRules("userProfile.") {
134 public void initialize() {
135 add("name", new RequiredValidator(), new MaxLengthValidator(10));
136 add("age", new NumberValidator(), new RangeValidator(0, 10));
137 }
138 };
139 ActionResult result = rules.fail("error.jsp");
140 assertTrue(result instanceof Forward);
141 Forward forward = (Forward) result;
142 assertEquals("error.jsp", forward.getPath("UTF-8"));
143 }
144
145 @Test
146 public void failOverride() {
147 ValidationRules rules = new DefaultValidationRules("userProfile.") {
148 public void initialize() {
149 add("name", new RequiredValidator(), new MaxLengthValidator(10));
150 add("age", new NumberValidator(), new RangeValidator(0, 10));
151 }
152
153 public ActionResult fail(String errorPage) {
154 return new Redirect(errorPage);
155 }
156 };
157 ActionResult result = rules.fail("error.jsp");
158 assertTrue(result instanceof Redirect);
159 Redirect redirect = (Redirect) result;
160 assertEquals("error.jsp", redirect.getPath("UTF-8"));
161 }
162
163 @Test
164 public void validationPhasePriority() {
165
166 ValidationRules validationRules = new DefaultValidationRules() {
167
168 @Override
169 protected void initialize() {
170 }
171
172 };
173
174 Iterator<ValidationPhase> iterator = validationRules
175 .getValidationPhases().iterator();
176 ValidationPhase first = iterator.next();
177 ValidationPhase second = iterator.next();
178 assertFalse(iterator.hasNext());
179
180 assertEquals(DATA_TYPE, first);
181 assertEquals(DATA_CONSTRAINT, second);
182 }
183
184 @Test
185 public void addAll() {
186 final ValidationRules base = new DefaultValidationRules() {
187 @Override
188 protected void initialize() {
189 add("param1", new RequiredValidator());
190 add("param2", new EqualsValidator("a"));
191 add(DATA_CONSTRAINT, new ValidationRule() {
192
193 public void apply(Map<String, Object[]> params,
194 Object form, ActionErrors errors)
195 throws ValidationException {
196 }
197
198 });
199 }
200 };
201
202 final ValidationRules rules = new DefaultValidationRules() {
203 @Override
204 protected void initialize() {
205 addAll(base);
206 }
207 };
208
209 Collection<ValidationRule> dataTypeRules = rules
210 .getPhaseValidationRules(DATA_TYPE);
211 Collection<ValidationRule> dataConstraintRules = rules
212 .getPhaseValidationRules(DATA_CONSTRAINT);
213
214 assertEquals(2, dataTypeRules.size());
215 assertEquals(1, dataConstraintRules.size());
216 }
217
218 }