/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.server.kernel;
import net.codjo.dataprocess.common.context.DataProcessContext;
import net.codjo.dataprocess.common.exception.TreatmentException;
import net.codjo.dataprocess.common.model.ArgModel;
import net.codjo.dataprocess.common.model.ExecutionListModel;
import net.codjo.dataprocess.common.model.TreatmentModel;
import net.codjo.dataprocess.common.report.TreatmentReport;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
/**
*
*/
public class AbstractTreatmentTest {
@Test
public void getNotResolvableArgs() {
TestAbstractTreatment testAbstractTreatment = new TestAbstractTreatment();
DataProcessContext context = new DataProcessContext();
context.setProperty("portfolioCode", "MIMI");
context.setProperty("code", "codeValue");
context.setProperty("1.Ma liste d'ex�cution 1.monParamLocal", "valeur locale bien locale");
testAbstractTreatment.setRepositoryId(1);
ExecutionListModel executionListModel = new ExecutionListModel();
executionListModel.setName("Ma liste d'ex�cution 1");
testAbstractTreatment.setExecutionListModel(executionListModel);
//testAbstractTreatment.setExecutionListName("Ma liste d'ex�cution 1");
testAbstractTreatment.setArgs(buildArgs());
List<String> argsList = testAbstractTreatment.getNotResolvableArguments(context);
assertThat(0, equalTo(argsList.size()));
context.removeProperty("code");
executionListModel = new ExecutionListModel();
executionListModel.setName("Autre liste d'ex�cution");
testAbstractTreatment.setExecutionListModel(executionListModel);
argsList = testAbstractTreatment.getNotResolvableArguments(context);
assertThat("[" + Argument.getNotResolvedMessage("code") + ", "
+ Argument.getNotResolvedMessage("monParamLocal") + "]", equalTo(argsList.toString()));
executionListModel = new ExecutionListModel();
executionListModel.setName("Ma liste d'ex�cution 1");
testAbstractTreatment.setExecutionListModel(executionListModel);
testAbstractTreatment.setArgs(buildArgsWithFakeArgumentModifier());
argsList = testAbstractTreatment.getNotResolvableArguments(context);
assertThat("[" + Argument.getNotResolvedMessage("code") + ", "
+ "Classe de modification d'arguments 'net.codjo.dataprocess.common.util.ArgumentModifierFake' inexistante.]",
equalTo(argsList.toString()));
executionListModel = new ExecutionListModel();
executionListModel.setName("Autre liste d'ex�cution");
testAbstractTreatment.setExecutionListModel(executionListModel);
argsList = testAbstractTreatment.getNotResolvableArguments(context);
assertThat("[" + Argument.getNotResolvedMessage("code") + ", "
+ Argument.getNotResolvedMessage("monParamLocal") + ", "
+ "Classe de modification d'arguments 'net.codjo.dataprocess.common.util.ArgumentModifierFake' inexistante.]",
equalTo(argsList.toString()));
}
@Test
public void getTreatmentReport() {
TreatmentModel treatmentModel = new TreatmentModel();
treatmentModel.setId("treatment1");
TestAbstractTreatment testAbstractTreatment = new TestAbstractTreatment();
testAbstractTreatment.setTreatmentModel(treatmentModel);
testAbstractTreatment.setError(new Exception("erreur X"));
testAbstractTreatment.setResult(5);
assertThat(testAbstractTreatment.getTreatmentReport(),
equalTo(new TreatmentReport("treatment1", "5", "erreur X")));
}
private static Map<String, Argument> buildArgs() {
Map<String, Argument> args = new HashMap<String, Argument>();
args.put("name1", buildArgs("name1", "$portfolioCode$"));
args.put("name2", buildArgs("name2", "$code$"));
args.put("name3", buildArgs("name3",
"net.codjo.dataprocess.server.kernel.ArgumentModifierExample('$portfolioCode$', '#monParamLocal#', 'BURNING')"));
return args;
}
private static Map<String, Argument> buildArgsWithFakeArgumentModifier() {
Map<String, Argument> args = new HashMap<String, Argument>();
args.put("name1", buildArgs("name1", "$portfolioCode$"));
args.put("name2", buildArgs("name2", "$code$"));
args.put("name3", buildArgs("name3",
"net.codjo.dataprocess.common.util.ArgumentModifierFake('$portfolioCode$', '#monParamLocal#', 'BURNING')"));
return args;
}
private static Argument buildArgs(String name, String value) {
return new Argument(new ArgModel(name, value));
}
static class TestAbstractTreatment extends AbstractTreatment {
public Object proceedTreatment(DataProcessContext context, Object... param)
throws TreatmentException {
return null;
}
}
}