]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - legacy/org.argeo.slc.spring/ext/test/org/argeo/slc/core/execution/AbstractExecutionFlowTestCase.java
Clarify overall project structure.
[gpl/argeo-slc.git] / legacy / org.argeo.slc.spring / ext / test / org / argeo / slc / core / execution / AbstractExecutionFlowTestCase.java
diff --git a/legacy/org.argeo.slc.spring/ext/test/org/argeo/slc/core/execution/AbstractExecutionFlowTestCase.java b/legacy/org.argeo.slc.spring/ext/test/org/argeo/slc/core/execution/AbstractExecutionFlowTestCase.java
new file mode 100644 (file)
index 0000000..3a5e8a7
--- /dev/null
@@ -0,0 +1,68 @@
+package org.argeo.slc.core.execution;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.execution.ExecutionContext;
+import org.argeo.slc.execution.ExecutionFlow;
+import org.argeo.slc.runtime.test.SimpleTestResult;
+import org.argeo.slc.test.TestResultPart;
+import org.argeo.slc.test.TestStatus;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public abstract class AbstractExecutionFlowTestCase extends TestCase {
+
+       protected final Log log = LogFactory.getLog(getClass());
+
+       protected void logException(Throwable ex) {
+               log.info("Got Exception of class " + ex.getClass().toString()
+                               + " with message '" + ex.getMessage() + "'.");
+       }
+
+       protected void validateTestResult(SimpleTestResult testResult) {
+               validateTestResult(testResult, TestStatus.PASSED);
+       }
+
+       protected void validateTestResult(SimpleTestResult testResult,
+                       int expectedStatus) {
+               for (TestResultPart part : testResult.getParts()) {
+                       if (part.getStatus() != expectedStatus) {
+                               fail("Error found in TestResult: " + part.getMessage());
+                       }
+               }
+       }
+
+       protected ConfigurableApplicationContext createApplicationContext(
+                       String applicationContextSuffix) {
+               ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext(
+                               inPackage(applicationContextSuffix));
+               // applicationContext.start();
+               return applicationContext;
+       }
+
+       protected void configureAndExecuteSlcFlow(String applicationContextSuffix,
+                       String beanName) {
+               ConfigurableApplicationContext applicationContext = createApplicationContext(applicationContextSuffix);
+               ExecutionContext executionContext = (ExecutionContext) applicationContext
+                               .getBean("executionContext");
+               ExecutionFlow executionFlow = (ExecutionFlow) applicationContext
+                               .getBean(beanName);
+               if (executionFlow instanceof DefaultExecutionFlow)
+                       ((DefaultExecutionFlow) executionFlow)
+                                       .setExecutionContext(executionContext);
+               try {
+                       executionContext.beforeFlow(executionFlow);
+                       executionFlow.run();
+               } finally {
+                       executionContext.afterFlow(executionFlow);
+               }
+               applicationContext.close();
+       }
+
+       protected String inPackage(String suffix) {
+               String prefix = getClass().getPackage().getName().replace('.', '/');
+               return prefix + '/' + suffix;
+       }
+}