001 /**
002 * Copyright 2005-2011 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.kew.engine;
017
018 import static org.junit.Assert.assertNotNull;
019
020 import java.io.IOException;
021 import java.util.Map;
022
023 import org.apache.log4j.Logger;
024 import org.custommonkey.xmlunit.XMLAssert;
025 import org.custommonkey.xmlunit.XMLUnit;
026 import org.junit.Test;
027 import org.kuali.rice.kew.doctype.bo.DocumentType;
028 import org.kuali.rice.kew.engine.node.RouteNode;
029 import org.kuali.rice.kew.service.KEWServiceLocator;
030 import org.kuali.rice.kew.test.KEWTestCase;
031 import org.kuali.rice.kew.util.Utilities;
032 import org.xml.sax.SAXException;
033
034 /**
035 * Tests the parsing of route node config params
036 * @author Kuali Rice Team (rice.collab@kuali.org)
037 */
038 public class RouteNodeConfigParamTest extends KEWTestCase {
039
040 private static final Logger LOG = Logger.getLogger(RouteNodeConfigParamTest.class);
041
042 protected void loadTestData() throws Exception {
043 loadXmlFile("RouteNodeConfigParams.xml");
044 }
045
046 /**
047 * Asserts that specified route node definition has the specified config parameter
048 */
049 protected void assertHasConfigParam(RouteNode routeNodeDef, String key, String value) {
050 Map<String, String> cfgMap = Utilities.getKeyValueCollectionAsMap(routeNodeDef.getConfigParams());
051 try {
052 XMLUnit.setIgnoreWhitespace(true);
053 XMLAssert.assertXMLEqual(value, cfgMap.get(key));
054 } catch (SAXException e) {
055 e.printStackTrace();
056 } catch (IOException e) {
057 e.printStackTrace();
058 }
059 }
060
061 @Test public void testRouteNodeConfigParams() {
062 DocumentType docType = KEWServiceLocator.getDocumentTypeService().findByName("RouteNodeConfigParams");
063 assertNotNull(docType);
064 assertNotNull(docType.getDocumentTypeId());
065
066 // adhoc node
067 RouteNode routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "AdHoc");
068 assertNotNull(routeNodeDef);
069 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<start name=\"AdHoc\"><activationType>P</activationType></start>");
070 assertHasConfigParam(routeNodeDef, "activationType", "P");
071
072 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setStartedVar");
073 assertNotNull(routeNodeDef);
074 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setStartedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>started</name><value>startedVariableValue</value></simple>");
075 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
076 assertHasConfigParam(routeNodeDef, "name", "started");
077 assertHasConfigParam(routeNodeDef, "value", "startedVariableValue");
078
079 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setCopiedVar");
080 assertNotNull(routeNodeDef);
081 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setCopiedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>copiedVar</name><value>var:started</value></simple>");
082 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
083 assertHasConfigParam(routeNodeDef, "name", "copiedVar");
084 assertHasConfigParam(routeNodeDef, "value", "var:started");
085
086 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "PreApprovalTestOne");
087 assertNotNull(routeNodeDef);
088 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<requests name=\"PreApprovalTestOne\"><activationType>S</activationType><ruleSelector>Named</ruleSelector><ruleName>TestRule1</ruleName></requests>");
089 assertHasConfigParam(routeNodeDef, "activationType", "S");
090 assertHasConfigParam(routeNodeDef, "ruleSelector", "Named");
091 assertHasConfigParam(routeNodeDef, "ruleName", "TestRule1");
092
093 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setEndedVar");
094 assertNotNull(routeNodeDef);
095 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setEndedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>ended</name><value>endedVariableValue</value></simple>");
096 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
097 assertHasConfigParam(routeNodeDef, "name", "ended");
098 assertHasConfigParam(routeNodeDef, "value", "endedVariableValue");
099
100 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setGoogleVar");
101 assertNotNull(routeNodeDef);
102 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setGoogleVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>google</name><value>url:http://google.com</value></simple>");
103 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
104 assertHasConfigParam(routeNodeDef, "name", "google");
105 assertHasConfigParam(routeNodeDef, "value", "url:http://google.com");
106
107 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setXPathVar");
108 assertNotNull(routeNodeDef);
109 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setXPathVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>xpath</name><value>xpath:concat(local-name(//documentContent),$ended)</value></simple>");
110 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
111 assertHasConfigParam(routeNodeDef, "name", "xpath");
112 assertHasConfigParam(routeNodeDef, "value", "xpath:concat(local-name(//documentContent),$ended)");
113
114 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "resetStartedVar");
115 assertNotNull(routeNodeDef);
116 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"resetStartedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>started</name><value>aNewStartedVariableValue</value></simple>");
117 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode");
118 assertHasConfigParam(routeNodeDef, "name", "started");
119 assertHasConfigParam(routeNodeDef, "value", "aNewStartedVariableValue");
120
121 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "logNode");
122 assertNotNull(routeNodeDef);
123 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"logNode\"><type>org.kuali.rice.kew.engine.node.LogNode</type><message>var:xpath</message></simple>");
124 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.LogNode");
125 assertHasConfigParam(routeNodeDef, "message", "var:xpath");
126
127 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "logNode2");
128 assertNotNull(routeNodeDef);
129 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"logNode2\"><type>org.kuali.rice.kew.engine.node.LogNode</type><level>ErRoR</level><log>Custom.Logger.Name</log><message>THAT'S ALL FOLKS</message></simple>");
130 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.LogNode");
131 assertHasConfigParam(routeNodeDef, "level", "ErRoR");
132 assertHasConfigParam(routeNodeDef, "message", "THAT'S ALL FOLKS");
133 }
134 }