1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kns.service;
17
18 import org.junit.Test;
19 import org.kuali.rice.kns.UserSession;
20 import org.kuali.rice.kns.test.document.AccountRequestDocument;
21 import org.kuali.rice.kns.test.document.AccountRequestDocumentWithCyclicalReference;
22 import org.kuali.rice.kns.util.GlobalVariables;
23 import org.kuali.rice.kns.util.MessageMap;
24 import org.kuali.test.KNSTestCase;
25
26
27
28
29
30
31
32 public class DictionaryValidationServiceTest extends KNSTestCase {
33
34 public DictionaryValidationServiceTest() {
35 }
36
37 @Override
38 public void setUp() throws Exception {
39 super.setUp();
40 GlobalVariables.setMessageMap(new MessageMap());
41 GlobalVariables.setUserSession(new UserSession("quickstart"));
42 }
43
44 @Override
45 public void tearDown() throws Exception {
46 GlobalVariables.setMessageMap(new MessageMap());
47 GlobalVariables.setUserSession(null);
48 super.tearDown();
49 }
50
51
52
53
54
55
56 @Test public void testRecursiveValidation() throws Exception {
57 AccountRequestDocument travelDocument = (AccountRequestDocument) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest");
58
59 travelDocument.getDocumentHeader().setDocumentDescription("test document");
60 travelDocument.setReason1("reason1");
61 travelDocument.setReason2("reason2");
62 travelDocument.setRequester("requester");
63
64 GlobalVariables.setMessageMap(new MessageMap());
65 KNSServiceLocator.getDictionaryValidationService().validateDocumentAndUpdatableReferencesRecursively(travelDocument, 0, true);
66 MessageMap errorMap = GlobalVariables.getMessageMap();
67 int recursiveZeroMessageMapSize = errorMap.size();
68
69
70 assertEquals("Number of errors found is incorrect", 2, recursiveZeroMessageMapSize);
71 }
72
73
74
75
76
77
78 @Test public void testRecursiveValidationMultiple() throws Exception {
79 AccountRequestDocument travelDocument = (AccountRequestDocument) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest");
80
81 travelDocument.getDocumentHeader().setDocumentDescription("test document");
82 travelDocument.setReason1("reason1");
83 travelDocument.setReason2("reason2");
84 travelDocument.setRequester("requester");
85
86 GlobalVariables.setMessageMap(new MessageMap());
87 KNSServiceLocator.getDictionaryValidationService().validateDocumentAndUpdatableReferencesRecursively(travelDocument, 0, true);
88 MessageMap errorMap = GlobalVariables.getMessageMap();
89 int recursiveZeroMessageMapSize = errorMap.size();
90
91 GlobalVariables.setMessageMap(new MessageMap());
92 KNSServiceLocator.getDictionaryValidationService().validateDocumentAndUpdatableReferencesRecursively(travelDocument, 5, true);
93 MessageMap errorMap2 = GlobalVariables.getMessageMap();
94 int recursiveFiveMessageMapSize = errorMap2.size();
95
96 assertEquals("We should get the same number of errors no matter how deeply we recursively validate for this document", recursiveZeroMessageMapSize, recursiveFiveMessageMapSize);
97 }
98
99 @Test public void testRecursiveValidationParentChildLoop() throws Exception {
100 AccountRequestDocumentWithCyclicalReference doc1 = (AccountRequestDocumentWithCyclicalReference) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest3");
101
102 doc1.getDocumentHeader().setDocumentDescription("test document 1");
103 doc1.setReason1("reason1");
104 doc1.setReason2("reason2");
105 doc1.setRequester("requester");
106
107 AccountRequestDocumentWithCyclicalReference doc2 = (AccountRequestDocumentWithCyclicalReference) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest3");
108 doc2.getDocumentHeader().setDocumentDescription("test document 2");
109 doc2.setReason1("reason1a");
110 doc2.setReason2("reason2a");
111 doc2.setRequester("requester2");
112 doc2.setParent(doc1);
113 doc1.setChild(doc2);
114
115 GlobalVariables.setMessageMap(new MessageMap());
116 KNSServiceLocator.getDictionaryValidationService().validateDocumentAndUpdatableReferencesRecursively(doc1, 5, true);
117 MessageMap errorMap = GlobalVariables.getMessageMap();
118 int recursiveFiveMessageMapSize = errorMap.size();
119
120 GlobalVariables.setMessageMap(new MessageMap());
121 KNSServiceLocator.getDictionaryValidationService().validateDocumentAndUpdatableReferencesRecursively(doc1, 10, true);
122 MessageMap errorMap2 = GlobalVariables.getMessageMap();
123 int recursiveTenMessageMapSize = errorMap2.size();
124
125 assertEquals("We should get the same number of errors no matter how deeply we recursively validate for this document", recursiveFiveMessageMapSize, recursiveTenMessageMapSize);
126 }
127
128 }