/* * (c) Rob Gordon 2005 */ package org.oddjob.script; import java.util.Date; import java.util.Map; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.oddjob.Oddjob; import org.oddjob.OddjobLookup; import org.oddjob.arooa.convert.ArooaConversionException; import org.oddjob.arooa.convert.DefaultConverter; import org.oddjob.arooa.reflect.ArooaPropertyException; import org.oddjob.arooa.xml.XMLConfiguration; import org.oddjob.state.ParentState; import org.oddjob.tools.OddjobTestHelper; import org.oddjob.values.VariablesJob; /** * */ public class ScriptJobTest extends TestCase { private static final Logger logger = Logger.getLogger(ScriptJobTest.class); public void testHelloWorld() { Oddjob oj = new Oddjob(); oj.setConfiguration(new XMLConfiguration( "org/oddjob/script/ScriptHelloWorld.xml", getClass().getClassLoader())); oj.run(); assertEquals(ParentState.COMPLETE, OddjobTestHelper.getJobState(oj)); } public void testVariableFromAndToJava() throws ArooaPropertyException, ArooaConversionException { Oddjob oj = new Oddjob(); oj.setConfiguration(new XMLConfiguration( "org/oddjob/script/VariablesFromAndToOddjob.xml", getClass().getClassLoader())); oj.run(); assertEquals(ParentState.COMPLETE, OddjobTestHelper.getJobState(oj)); String snack = new OddjobLookup(oj).lookup("e.text", String.class); assertEquals("apple", snack); } public void testSettingOutput() { String xml = "<oddjob>" + " <job>" + " <script id='s' language='JavaScript'>" + " <input>" + " <buffer>" + // works in Groovy, not JavaScript. // "results.fruit = \"apple\"" + "results.put('fruit', \"apple\");" + " </buffer>" + " </input>" + " <beans>" + " <bean key='results' class='java.util.HashMap'/>" + " </beans>" + " </script>" + " </job>" + "</oddjob>"; Oddjob oj = new Oddjob(); oj.setConfiguration(new XMLConfiguration("XML", xml)); oj.run(); ScriptJob sc = (ScriptJob) new OddjobLookup(oj).lookup("s"); Map<?, ?> results = (Map<?, ?>) sc.getBeans("results"); assertEquals("apple", results.get("fruit")); } public void testResult() { Oddjob oj = new Oddjob(); oj.setConfiguration(new XMLConfiguration( "org/oddjob/script/ScriptResult.xml", getClass().getClassLoader())); oj.run(); assertEquals(ParentState.INCOMPLETE, oj.lastStateEvent().getState()); } public void testSettingVariables() throws Exception { Oddjob oj = new Oddjob(); oj.setConfiguration(new XMLConfiguration( "org/oddjob/script/ScriptSettingProperty.xml", getClass().getClassLoader())); oj.run(); assertEquals(ParentState.COMPLETE, oj.lastStateEvent().getState()); VariablesJob v = (VariablesJob) new OddjobLookup(oj).lookup("v"); Object result = new DefaultConverter().convert( v.get("today"), Object.class); assertNotNull(result); assertEquals(Date.class, result.getClass()); Object formatted = v.get("formattedToday"); assertNotNull(formatted); logger.info(formatted); } }