View Javadoc

1   /*
2    * Copyright 2007-2008 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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   * This class tests the DictionaryValidationService (currently only recursive validation is tested).
28   *
29   * @author Kuali Rice Team (rice.collab@kuali.org)
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       * This method tests recursive validation at a depth of zero
53       *
54       * @throws Exception
55       */
56      @Test public void testRecursiveValidation() throws Exception {
57          AccountRequestDocument travelDocument = (AccountRequestDocument) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest");
58          // set all required fields except 1
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          // errors should be 'account type code' and 'request type' both being required
70          assertEquals("Number of errors found is incorrect", 2, recursiveZeroMessageMapSize);
71      }
72  
73      /**
74       * This method tests recursive validation comparing multiple levels of recursion
75       *
76       * @throws Exception
77       */
78      @Test public void testRecursiveValidationMultiple() throws Exception {
79          AccountRequestDocument travelDocument = (AccountRequestDocument) KNSServiceLocator.getDocumentService().getNewDocument("AccountRequest");
80          // set all required fields except 1
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         // set all required fields except 1
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 }