1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.binding.validation;
17
18 import java.util.Set;
19
20 import org.springframework.binding.validation.support.DefaultValidationMessage;
21 import org.springframework.binding.validation.support.DefaultValidationResults;
22 import org.springframework.richclient.core.Severity;
23
24 import junit.framework.TestCase;
25
26 public class DefaultValidationResultsTests extends TestCase {
27 private DefaultValidationResults vr = new DefaultValidationResults();
28
29 public void testAddAndGetMessages() {
30 assertEquals(0, vr.getMessageCount());
31 assertEquals(0, vr.getMessageCount(Severity.INFO));
32 assertEquals(0, vr.getMessageCount("field1"));
33 assertEquals(false, vr.getHasErrors());
34 assertEquals(false, vr.getHasWarnings());
35 assertEquals(false, vr.getHasInfo());
36
37 vr.addMessage("field1", Severity.INFO, "message");
38 assertEquals(1, vr.getMessageCount());
39 assertEquals(1, vr.getMessageCount(Severity.INFO));
40 assertEquals(1, vr.getMessageCount("field1"));
41 ValidationMessage vm = (ValidationMessage)vr.getMessages().iterator().next();
42 assertEquals("field1", vm.getProperty());
43 assertEquals(Severity.INFO, vm.getSeverity());
44 assertEquals("message", vm.getMessage());
45 assertContainsMessage(vm, vr.getMessages("field1"));
46 assertContainsMessage(vm, vr.getMessages(Severity.INFO));
47 assertEquals(false, vr.getHasErrors());
48 assertEquals(false, vr.getHasWarnings());
49 assertEquals(true, vr.getHasInfo());
50
51 vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
52 vr.addMessage(vm);
53 assertEquals(2, vr.getMessageCount());
54 assertEquals(1, vr.getMessageCount(Severity.WARNING));
55 assertEquals(1, vr.getMessageCount("field2"));
56 assertContainsMessage(vm, vr.getMessages());
57 assertContainsMessage(vm, vr.getMessages("field2"));
58 assertContainsMessage(vm, vr.getMessages(Severity.WARNING));
59 assertEquals(false, vr.getHasErrors());
60 assertEquals(true, vr.getHasWarnings());
61 assertEquals(true, vr.getHasInfo());
62
63 vm = new DefaultValidationMessage(ValidationMessage.GLOBAL_PROPERTY, Severity.ERROR, "message");
64 vr.addMessage(vm);
65 assertEquals(3, vr.getMessageCount());
66 assertEquals(1, vr.getMessageCount(Severity.ERROR));
67 assertEquals(1, vr.getMessageCount(ValidationMessage.GLOBAL_PROPERTY));
68 assertContainsMessage(vm, vr.getMessages());
69 assertContainsMessage(vm, vr.getMessages(ValidationMessage.GLOBAL_PROPERTY));
70 assertContainsMessage(vm, vr.getMessages(Severity.ERROR));
71 assertEquals(true, vr.getHasErrors());
72 assertEquals(true, vr.getHasWarnings());
73 assertEquals(true, vr.getHasInfo());
74
75 vm = new DefaultValidationMessage("field1", Severity.ERROR, "message");
76 vr.addMessage(vm);
77 assertEquals(4, vr.getMessageCount());
78 assertEquals(2, vr.getMessageCount(Severity.ERROR));
79 assertEquals(2, vr.getMessageCount("field1"));
80 assertContainsMessage(vm, vr.getMessages());
81 assertContainsMessage(vm, vr.getMessages("field1"));
82 assertContainsMessage(vm, vr.getMessages(Severity.ERROR));
83
84 DefaultValidationResults vr2 = new DefaultValidationResults();
85 vm = new DefaultValidationMessage("newField", Severity.INFO, "message");
86 vr2.addMessage(vm);
87 ValidationMessage vm2 = new DefaultValidationMessage("newField", Severity.ERROR, "message");
88 vr2.addMessage(vm2);
89
90 vr.addAllMessages(vr2.getMessages());
91 assertEquals(6, vr.getMessageCount());
92 assertEquals(3, vr.getMessageCount(Severity.ERROR));
93 assertEquals(2, vr.getMessageCount(Severity.INFO));
94 assertEquals(2, vr.getMessageCount("newField"));
95 assertContainsMessage(vm, vr.getMessages());
96 assertContainsMessage(vm2, vr.getMessages());
97 assertContainsMessage(vm, vr.getMessages("newField"));
98 assertContainsMessage(vm2, vr.getMessages("newField"));
99 assertContainsMessage(vm, vr.getMessages(Severity.INFO));
100 assertContainsMessage(vm2, vr.getMessages(Severity.ERROR));
101 }
102
103 public void testCanNotAddSameMessage() {
104 ValidationMessage vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
105 vr.addMessage(vm);
106 assertEquals(1, vr.getMessageCount());
107 assertEquals(1, vr.getMessageCount(Severity.WARNING));
108 assertEquals(1, vr.getMessageCount("field2"));
109
110 vr.addMessage(vm);
111 assertEquals(1, vr.getMessageCount());
112 assertEquals(1, vr.getMessageCount(Severity.WARNING));
113 assertEquals(1, vr.getMessageCount("field2"));
114
115 vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
116 vr.addMessage(vm);
117 assertEquals(1, vr.getMessageCount());
118 assertEquals(1, vr.getMessageCount(Severity.WARNING));
119 assertEquals(1, vr.getMessageCount("field2"));
120
121 DefaultValidationResults vr2 = new DefaultValidationResults();
122 vr2.addMessage(vm);
123 vr.addAllMessages(vr2);
124 assertEquals(1, vr.getMessageCount());
125 assertEquals(1, vr.getMessageCount(Severity.WARNING));
126 assertEquals(1, vr.getMessageCount("field2"));
127 }
128
129 private void assertContainsMessage(ValidationMessage vm, Set messages) {
130 assertTrue("Set of messages does not contain expected message '" + vm + "'", messages.contains(vm));
131 }
132
133 public void testReturnedListsAreNotModifiable() {
134 vr.addMessage("field1", Severity.ERROR, "what ever!");
135 try {
136 vr.getMessages().clear();
137 fail();
138 }
139 catch (UnsupportedOperationException e) {
140
141 }
142 try {
143 vr.getMessages("field1").clear();
144 fail();
145 }
146 catch (UnsupportedOperationException e) {
147
148 }
149 try {
150 vr.getMessages(Severity.ERROR).clear();
151 fail();
152 }
153 catch (UnsupportedOperationException e) {
154
155 }
156 }
157 }