1 package org.springframework.richclient.form;
2
3 import junit.framework.TestCase;
4
5 import org.springframework.binding.validation.ValidationMessage;
6 import org.springframework.binding.validation.support.DefaultValidationMessage;
7 import org.springframework.binding.validation.support.DefaultValidationResultsModel;
8 import org.springframework.binding.value.support.AbstractPropertyChangePublisher;
9 import org.springframework.richclient.core.Message;
10 import org.springframework.richclient.core.Severity;
11 import org.springframework.richclient.dialog.Messagable;
12
13 public class SimpleValidationResultsReporterTests extends TestCase {
14
15 private class SimpleMessagable extends AbstractPropertyChangePublisher implements Messagable {
16
17 private Message message;
18
19 public void setMessage(Message message) {
20 this.message = message;
21 }
22
23 public Message getMessage() {
24 return message;
25 }
26 }
27
28 private class TimeSpecifiedValidationMessage extends DefaultValidationMessage {
29
30 private final long timeStamp;
31
32 public TimeSpecifiedValidationMessage(String property, Severity severity, String message, long timeStamp) {
33 super(property, severity, message);
34 this.timeStamp = timeStamp;
35 }
36
37 public long getTimestamp() {
38 return timeStamp;
39 }
40 }
41
42 DefaultValidationResultsModel defaultValidationResultsModel = new DefaultValidationResultsModel();
43
44 SimpleMessagable messagable = new SimpleMessagable();
45
46 SimpleValidationResultsReporter simpleValidationResultsReporter = new SimpleValidationResultsReporter(defaultValidationResultsModel, messagable);
47
48
49
50
51 protected void setUp() throws Exception {
52 defaultValidationResultsModel.clearAllValidationResults();
53 }
54
55
56
57
58 public void testErrorMessage() {
59 singleMessage(Severity.ERROR);
60 }
61
62
63
64
65 public void testWarningMessage() {
66 singleMessage(Severity.WARNING);
67 }
68
69
70
71
72 public void testInfoMessage() {
73 singleMessage(Severity.INFO);
74 }
75
76 private void singleMessage(Severity severity) {
77 ValidationMessage message = new DefaultValidationMessage("property", severity, "message");
78 defaultValidationResultsModel.addMessage(message);
79 assertEquals(message, messagable.getMessage());
80 }
81
82
83
84
85 public void testErrorMessageSequence() {
86 messageSequence(Severity.ERROR);
87 }
88
89
90
91
92 public void testWarningMessageSequence() {
93 messageSequence(Severity.WARNING);
94 }
95
96
97
98
99 public void testInfoMessageSequence() {
100 messageSequence(Severity.INFO);
101 }
102
103 private void messageSequence(Severity severity) {
104 ValidationMessage message1 = new TimeSpecifiedValidationMessage("property1", severity, "message1", 1);
105 defaultValidationResultsModel.addMessage(message1);
106 ValidationMessage message2 = new TimeSpecifiedValidationMessage("property2", severity, "message2", 2);
107 defaultValidationResultsModel.addMessage(message2);
108 ValidationMessage message3 = new TimeSpecifiedValidationMessage("property3", severity, "message3", 3);
109 defaultValidationResultsModel.addMessage(message3);
110 ValidationMessage message4 = new TimeSpecifiedValidationMessage("property4", severity, "message4", 4);
111 defaultValidationResultsModel.addMessage(message4);
112
113 assertEquals(message4, messagable.getMessage());
114
115 defaultValidationResultsModel.removeMessage(message4);
116 assertEquals(message3, messagable.getMessage());
117
118 defaultValidationResultsModel.removeMessage(message2);
119 assertEquals(message3, messagable.getMessage());
120
121 defaultValidationResultsModel.removeMessage(message3);
122 assertEquals(message1, messagable.getMessage());
123
124 defaultValidationResultsModel.removeMessage(message1);
125 assertNull(messagable.getMessage());
126 }
127
128
129
130
131 public void testRandomSeverityMessageSequence() {
132 ValidationMessage error1 = new TimeSpecifiedValidationMessage("error1", Severity.ERROR, "error1", 1);
133 defaultValidationResultsModel.addMessage(error1);
134
135 ValidationMessage warning1 = new TimeSpecifiedValidationMessage("warning1", Severity.WARNING, "warning1", 2);
136 defaultValidationResultsModel.addMessage(warning1);
137
138 assertEquals(error1, messagable.getMessage());
139
140 ValidationMessage info1 = new TimeSpecifiedValidationMessage("info1", Severity.INFO, "info1", 3);
141 defaultValidationResultsModel.addMessage(info1);
142
143 assertEquals(error1, messagable.getMessage());
144
145 ValidationMessage error2 = new TimeSpecifiedValidationMessage("error2", Severity.ERROR, "error2", 4);
146 defaultValidationResultsModel.addMessage(error2);
147
148 assertEquals(error2, messagable.getMessage());
149 defaultValidationResultsModel.removeMessage(error2);
150 assertEquals(error1, messagable.getMessage());
151 defaultValidationResultsModel.removeMessage(error1);
152 assertEquals(warning1, messagable.getMessage());
153 defaultValidationResultsModel.removeMessage(warning1);
154 assertEquals(info1, messagable.getMessage());
155 defaultValidationResultsModel.removeMessage(info1);
156 assertNull(messagable.getMessage());
157 }
158 }