1
2
3
4
5 package org.springframework.rules;
6
7 import java.util.Locale;
8
9 import org.springframework.context.ConfigurableApplicationContext;
10 import org.springframework.context.support.ClassPathXmlApplicationContext;
11 import org.springframework.rules.constraint.Constraint;
12 import org.springframework.richclient.application.support.DefaultApplicationServices;
13 import org.springframework.richclient.test.SpringRichTestCase;
14 import org.springframework.rules.constraint.CompoundConstraint;
15 import org.springframework.rules.constraint.property.CompoundPropertyConstraint;
16 import org.springframework.rules.factory.Constraints;
17 import org.springframework.rules.reporting.BeanValidationResults;
18 import org.springframework.rules.reporting.BeanValidationResultsCollector;
19
20
21
22
23
24 public class ValidationResultsTests extends SpringRichTestCase {
25
26 static RulesSource rulesSource;
27 static Rules rules;
28
29 private static final Constraints constraints = Constraints.instance();
30
31 protected void registerAdditionalServices(DefaultApplicationServices applicationServices) {
32 applicationServices.setRulesSourceId("rulesSource");
33 }
34
35 protected void doSetUp() throws Exception {
36 rulesSource = (RulesSource) applicationServices.getService(RulesSource.class);
37 rules = rulesSource.getRules(Person.class);
38 }
39
40 protected ConfigurableApplicationContext createApplicationContext() {
41 return new ClassPathXmlApplicationContext("org/springframework/rules/rules-context.xml");
42 }
43
44 public void testValidationResultsCollector() {
45 Person p = new Person();
46 BeanValidationResultsCollector c = new BeanValidationResultsCollector(p);
47 BeanValidationResults r =
48 c.collectResults(rulesSource.getRules(Person.class));
49 assertEquals(2, r.getViolatedCount());
50 }
51
52 public void testValidationResultsCollectorCollectAllErrors() {
53 Person p = new Person();
54 BeanValidationResultsCollector c = new BeanValidationResultsCollector(p);
55 c.setCollectAllErrors(true);
56 BeanValidationResults r =
57 c.collectResults(rulesSource.getRules(Person.class));
58 assertEquals(2, r.getViolatedCount());
59 }
60
61 public void testNestedValidationResultsPropertyConstraint() {
62 Person p = new Person();
63
64 Rules rules = new Rules(Person.class);
65 CompoundConstraint constraint =
66 constraints.or(
67 constraints.all(
68 "firstName",
69 new Constraint[]{
70 constraints.required(),
71 constraints.minLength(2)}),
72 constraints.not(
73 constraints.eqProperty("firstName", "lastName")));
74 rules.add(new CompoundPropertyConstraint(constraint));
75 BeanValidationResultsCollector c = new BeanValidationResultsCollector(p);
76 c.setCollectAllErrors(true);
77 BeanValidationResults r = c.collectResults(rules);
78 assertEquals(3, r.getViolatedCount());
79 String message =
80 r.getResults("firstName").buildMessage(Locale.getDefault());
81 System.out.println(message);
82 assertEquals(
83 "First Name must have text and must be at least 2 characters or must *not* equal Last Name.",
84 message);
85 }
86
87 }