001 /*
002 * Copyright 2007-2008 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License"); you may not use this file except in
005 * compliance with the License. You may obtain a copy of the License at
006 *
007 * http://www.opensource.org/licenses/ecl2.php
008 *
009 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS
010 * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
011 * language governing permissions and limitations under the License.
012 */
013 package org.kuali.test;
014
015 import java.util.List;
016
017 import org.kuali.rice.core.lifecycle.BaseLifecycle;
018 import org.kuali.rice.core.lifecycle.Lifecycle;
019 import org.kuali.rice.kew.batch.KEWXmlDataLoaderLifecycle;
020 import org.kuali.rice.kns.service.KNSServiceLocator;
021 import org.kuali.rice.kns.util.GlobalVariables;
022 import org.kuali.rice.kns.util.MessageMap;
023 import org.kuali.rice.test.RiceInternalSuiteDataTestCase;
024 import org.kuali.rice.test.TransactionalLifecycle;
025 import org.kuali.rice.test.lifecycles.JettyServerLifecycle;
026 import org.kuali.rice.test.lifecycles.SQLDataLoaderLifecycle;
027 import org.kuali.rice.test.web.HtmlUnitUtil;
028
029
030 /**
031 * Default test base for a full KNS enabled unit test.
032 *
033 * @author Kuali Rice Team (rice.collab@kuali.org)
034 */
035 public abstract class KNSTestCase extends RiceInternalSuiteDataTestCase {
036
037 private static final String SQL_FILE = "classpath:org/kuali/rice/kns/test/DefaultSuiteTestData.sql";
038 private static final String XML_FILE = "classpath:org/kuali/rice/kns/test/DefaultSuiteTestData.xml";
039
040 private String contextName = "/knstest";
041 private String relativeWebappRoot = "/../kns/src/test/webapp";
042
043
044 private TransactionalLifecycle transactionalLifecycle;
045
046 @Override
047 protected void loadSuiteTestData() throws Exception {
048 super.loadSuiteTestData();
049 new SQLDataLoaderLifecycle(SQL_FILE, ";").start();
050 }
051
052 @Override
053 protected List<Lifecycle> getSuiteLifecycles() {
054 List<Lifecycle> suiteLifecycles = super.getSuiteLifecycles();
055 suiteLifecycles.add(new KEWXmlDataLoaderLifecycle(XML_FILE));
056 return suiteLifecycles;
057 }
058
059 @Override
060 protected Lifecycle getLoadApplicationLifecycle() {
061 return new BaseLifecycle() {
062 public void start() throws Exception {
063 new JettyServerLifecycle(getPort(), getContextName(), getRelativeWebappRoot()).start();
064 super.start();
065 }
066 };
067 }
068
069 public void setUp() throws Exception {
070 super.setUp();
071 final boolean needsSpring = getClass().isAnnotationPresent(KNSWithTestSpringContext.class);
072 GlobalVariables.setMessageMap(new MessageMap());
073 if (needsSpring) {
074 transactionalLifecycle = new TransactionalLifecycle();
075 transactionalLifecycle.setTransactionManager(KNSServiceLocator.getTransactionManager());
076 transactionalLifecycle.start();
077 }
078 }
079
080 public void tearDown() throws Exception {
081 final boolean needsSpring = getClass().isAnnotationPresent(KNSWithTestSpringContext.class);
082 if (needsSpring) {
083 if ( (transactionalLifecycle != null) && (transactionalLifecycle.isStarted()) ) {
084 transactionalLifecycle.stop();
085 }
086 }
087 GlobalVariables.setMessageMap(new MessageMap());
088 super.tearDown();
089 }
090
091
092 @Override
093 protected String getModuleName() {
094 return "kns";
095 }
096
097 protected String getContextName() {
098 return contextName;
099 }
100
101 protected void setContextName(String contextName) {
102 this.contextName = contextName;
103 }
104
105 protected int getPort() {
106 return HtmlUnitUtil.getPort();
107 }
108
109 protected String getRelativeWebappRoot() {
110 return relativeWebappRoot;
111 }
112
113 protected void setRelativeWebappRoot(String relativeWebappRoot) {
114 this.relativeWebappRoot = relativeWebappRoot;
115 }
116
117 }