1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.sys;
20
21 import static junit.framework.Assert.assertEquals;
22 import static junit.framework.Assert.assertFalse;
23 import static junit.framework.Assert.assertNotNull;
24 import static junit.framework.Assert.assertTrue;
25 import static junit.framework.Assert.fail;
26
27 import java.beans.PropertyDescriptor;
28 import java.lang.reflect.InvocationTargetException;
29 import java.util.Arrays;
30 import java.util.Iterator;
31 import java.util.List;
32
33 import org.apache.commons.beanutils.PropertyUtils;
34 import org.kuali.rice.krad.bo.BusinessObject;
35 import org.kuali.rice.krad.util.ErrorMessage;
36 import org.kuali.rice.krad.util.GlobalVariables;
37 import org.kuali.rice.krad.util.MessageMap;
38 import org.kuali.rice.krad.util.ObjectUtils;
39
40
41
42
43
44
45 public class KualiTestAssertionUtils {
46
47
48 public static void assertEquality(Object a, Object b) {
49 assertNotNull(a);
50 assertNotNull(b);
51
52 assertTrue(a.equals(b));
53 }
54
55 public static void assertInequality(Object a, Object b) {
56 assertNotNull(a);
57 assertNotNull(b);
58
59 assertFalse(a.equals(b));
60 }
61
62
63
64
65 public static void assertSparselyEqualBean(Object expectedBean, Object actualBean) throws InvocationTargetException, NoSuchMethodException {
66 assertSparselyEqualBean(null, expectedBean, actualBean);
67 }
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 public static void assertSparselyEqualBean(String message, Object expectedBean, Object actualBean) throws InvocationTargetException, NoSuchMethodException {
88 if (message == null) {
89 message = "";
90 }
91 else {
92 message = message + " ";
93 }
94 assertNotNull(message + "actual bean is null", actualBean);
95 PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(expectedBean);
96 for (int i = 0; i < descriptors.length; i++) {
97 PropertyDescriptor descriptor = descriptors[i];
98 if (PropertyUtils.getReadMethod(descriptor) != null) {
99 try {
100 Object expectedValue = PropertyUtils.getSimpleProperty(expectedBean, descriptor.getName());
101 if (expectedValue != null && !(expectedValue instanceof BusinessObject)) {
102 assertEquals(message + descriptor.getName(), expectedValue, PropertyUtils.getSimpleProperty(actualBean, descriptor.getName()));
103 }
104 }
105 catch (IllegalAccessException e) {
106 throw new AssertionError(e);
107 }
108 }
109 }
110 }
111
112 public static void assertGlobalMessageMapContains(String expectedFieldName, String expectedErrorKey) {
113 assertGlobalMessageMapContains("", expectedFieldName, expectedErrorKey, null, true);
114 }
115
116 public static void assertGlobalMessageMapContains(String message, String expectedFieldName, String expectedErrorKey) {
117 assertGlobalMessageMapContains(message, expectedFieldName, expectedErrorKey, null, true);
118 }
119
120 public static void assertGlobalMessageMapContains(String expectedFieldName, String expectedErrorKey, String[] expectedErrorParameters) {
121 assertGlobalMessageMapContains("", expectedFieldName, expectedErrorKey, expectedErrorParameters, true);
122 }
123
124 public static void assertGlobalMessageMapContains(String message, String expectedFieldName, String expectedErrorKey, String[] expectedErrorParameters) {
125 assertGlobalMessageMapContains(message, expectedFieldName, expectedErrorKey, expectedErrorParameters, true);
126 }
127
128 public static void assertGlobalMessageMapNotContains(String expectedFieldName, String expectedErrorKey) {
129 assertGlobalMessageMapContains("", expectedFieldName, expectedErrorKey, null, false);
130 }
131
132 public static void assertGlobalMessageMapNotContains(String message, String expectedFieldName, String expectedErrorKey) {
133 assertGlobalMessageMapContains(message, expectedFieldName, expectedErrorKey, null, false);
134 }
135
136 private static void assertGlobalMessageMapContains(String message, String expectedFieldName, String expectedErrorKey, String[] expectedErrorParameters, boolean contains) {
137 String header = message.length() == 0 ? "" : message + ": ";
138 MessageMap map = GlobalVariables.getMessageMap();
139 assertEquals(header + "no error path (global error map path size)", 0, map.getErrorPath().size());
140 assertEquals(header + "error property '" + expectedFieldName + "' has message key " + expectedErrorKey + ": " + map, contains, map.fieldHasMessage(expectedFieldName, expectedErrorKey));
141
142 if (contains && expectedErrorParameters != null) {
143 List expectedParameterList = Arrays.asList(expectedErrorParameters);
144 List fieldMessages = map.getMessages(expectedFieldName);
145 if (fieldMessages != null) {
146 for (Iterator i = fieldMessages.iterator(); i.hasNext();) {
147 ErrorMessage errorMessage = (ErrorMessage) i.next();
148 if (sparselyEqualLists(expectedParameterList, Arrays.asList(errorMessage.getMessageParameters()))) {
149 return;
150 }
151 }
152 }
153 fail(header + "error property '" + expectedFieldName + "' message key " + expectedErrorKey + " does not contain expected parameters " + expectedParameterList + ": " + map);
154 }
155 }
156
157 private static boolean sparselyEqualLists(List expected, List actual) {
158 if (expected.size() != actual.size()) {
159 return false;
160 }
161 Iterator actualIterator = actual.iterator();
162 for (Iterator expectedIterator = expected.iterator(); expectedIterator.hasNext();) {
163 Object expectedItem = expectedIterator.next();
164 Object actualItem = actualIterator.next();
165 if (expectedItem != null && !expectedItem.equals(actualItem)) {
166 return false;
167 }
168 }
169 return true;
170 }
171
172 public static void assertGlobalMessageMapEmpty() {
173 assertGlobalMessageMapSize("", 0);
174 }
175
176 public static void assertGlobalMessageMapEmpty(String message) {
177 assertGlobalMessageMapSize(message, 0);
178 }
179
180 public static void assertGlobalMessageMapSize(int expectedSize) {
181 assertGlobalMessageMapSize("", expectedSize);
182 }
183
184 public static void assertGlobalMessageMapSize(String message, int expectedSize) {
185 String header = message.length() == 0 ? "" : message + ": ";
186 MessageMap map = GlobalVariables.getMessageMap();
187 assertEquals(header + "ThreadLocal MessageMap size: " + map, expectedSize, map.getNumberOfPropertiesWithErrors());
188 }
189
190
191
192
193
194
195
196
197 public static void assertNullHandlingOjbProxies(Object expectedNull) {
198 assertNullHandlingOjbProxies(null, expectedNull);
199 }
200
201
202
203
204
205
206
207
208
209 public static void assertNullHandlingOjbProxies(String message, Object expectedNull) {
210 assertTrue(message, ObjectUtils.isNull(expectedNull));
211 }
212
213
214
215
216
217
218
219
220 public static void assertNotNullHandlingOjbProxies(Object expectedNotNull) {
221 assertNotNullHandlingOjbProxies(null, expectedNotNull);
222 }
223
224
225
226
227
228
229
230
231
232 public static void assertNotNullHandlingOjbProxies(String message, Object expectedNotNull) {
233 assertFalse(message, ObjectUtils.isNull(expectedNotNull));
234 }
235 }