/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.server.repository;
import net.codjo.database.common.api.DatabaseFactory;
import net.codjo.database.common.api.JdbcFixture;
import net.codjo.datagen.DatagenFixture;
import net.codjo.dataprocess.common.exception.TreatmentException;
import net.codjo.dataprocess.common.model.TreatmentModel;
import net.codjo.dataprocess.server.treatmenthelper.RepositoryDescriptor;
import net.codjo.dataprocess.server.treatmenthelper.TreatmentHelper;
import net.codjo.dataprocess.server.util.TestUtils;
import net.codjo.test.common.fixture.CompositeFixture;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Map;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
public class RepositoryTest {
private static final DatagenFixture DATAGEN = new DatagenFixture(RepositoryTest.class);
private static final JdbcFixture FIXTURE = createJdbcFixture();
private static final CompositeFixture COMPOSITE_FIXTURE = new CompositeFixture(FIXTURE, DATAGEN);
@BeforeClass
public static void beforeClass() throws Exception {
COMPOSITE_FIXTURE.doSetUp();
FIXTURE.advanced().dropAllObjects();
try {
DATAGEN.generate();
TestUtils.initScript(FIXTURE, DATAGEN, "PM_REPOSITORY.tab");
TestUtils.initScript(FIXTURE, DATAGEN, "PM_REPOSITORY_CONTENT.tab");
}
catch (Exception e) {
fail(e.getLocalizedMessage());
}
}
static JdbcFixture createJdbcFixture() {
try {
return new DatabaseFactory().createJdbcFixture();
}
catch (SQLException e) {
fail(e.getLocalizedMessage());
}
return null;
}
@AfterClass
public static void afterClass() throws Exception {
COMPOSITE_FIXTURE.doTearDown();
}
@Test
public void loadAllTreatmentsFromXmlRepository() throws Exception {
int repositoryId = 1;
Connection con = FIXTURE.getConnection();
TreatmentHelper.deleteRepository(con, repositoryId);
RepositoryDescriptor repositoryDescriptor = new RepositoryDescriptor(repositoryId, "REP1",
new String[]{
"/net/codjo/dataprocess/server/repository/RepositoryTest3.xml"});
TreatmentHelper.initRepository(con, Arrays.asList(repositoryDescriptor));
Repository.loadAllTreatmentsFromRepository(con, repositoryId);
TreatmentModel trt1 = Repository.getTreatmentById(con, repositoryId, "trt1");
TreatmentModel trt2 = Repository.getTreatmentById(con, repositoryId, "trt2");
assertThat("trt1", equalTo(trt1.getId()));
assertThat("trt2", equalTo(trt2.getId()));
assertThat("java", equalTo(trt1.getType()));
assertThat("stored_procedure", equalTo(trt2.getType()));
assertThat("com.patati.patata.Patatouf", equalTo(trt1.getTarget()));
assertThat("sp_SIF_Aggregate_Transactions", equalTo(trt2.getTarget()));
assertThat("com.patati.patata.mage.imba", equalTo(trt1.getGuiTarget()));
assertThat("com.patati.patata.druide.feral", equalTo(trt2.getGuiTarget()));
Map<String, TreatmentModel> result = Repository.getTreatments(con, repositoryId);
assertThat(result.size(), equalTo(2));
TreatmentModel trt1Test = result.get("trt1");
TreatmentModel trt2Test = result.get("trt2");
assertThat(trt1Test, equalTo(trt1));
assertThat(trt2Test, equalTo(trt2));
try {
Repository.loadAllTreatmentsFromRepository(con, 666);
fail("Une exception �tait attendue !");
}
catch (Exception ex) {
assertThat(ex.getLocalizedMessage(), equalTo("Le repository [id = 666] n'existe pas !"));
}
try {
Repository.getTreatmentById(con, repositoryId, "XXX");
}
catch (TreatmentException ex) {
assertThat(ex.getLocalizedMessage(),
equalTo("Le traitement 'XXX' est inexistant dans le repository [id = 1]"));
}
}
@Test
public void loadRepoWithTreatmentIdTooLongError() throws Exception {
int repositoryId = 1;
Connection con = FIXTURE.getConnection();
TreatmentHelper.deleteRepository(con, repositoryId);
RepositoryDescriptor repositoryDescriptor = new RepositoryDescriptor(repositoryId, "REP",
new String[]{
"/net/codjo/dataprocess/server/repository/RepoTreatmentIdTooLongTest.xml"});
try {
TreatmentHelper.initRepository(con, Arrays.asList(repositoryDescriptor));
fail("Une exception �tait attendue !");
}
catch (Exception ex) {
assertThat(ex.getLocalizedMessage(), equalTo(
"La taille de l'identifiant d'un traitement ('trt1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab') d�passe 50 caract�res."));
}
}
@Test
public void loadRepoWithTreatmentContentTooLongError() throws Exception {
int repositoryId = 1;
Connection con = FIXTURE.getConnection();
TreatmentHelper.deleteRepository(con, repositoryId);
RepositoryDescriptor repositoryDescriptor = new RepositoryDescriptor(repositoryId, "REP",
new String[]{
"/net/codjo/dataprocess/server/repository/RepoTreatmentContentTooLongTest.xml"});
try {
TreatmentHelper.initRepository(con, Arrays.asList(repositoryDescriptor));
}
catch (Exception ex) {
assertThat(ex.getLocalizedMessage(), equalTo(
"\n#####################################################################################################################################\n"
+ "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"
+ "trt2 est trop long ! : UILLE=#PTF1.CODE_PORTEFEUILLE \" +\"and PM_OPCVM_PERIMETRE.TYPE_STOCK=#PTF1.TYPE_STOCK \" \n"
+ "trt3 est trop long ! : PORTEFEUILLE \" +\"and PM_OPCVM_PERIMETRE.TYPE_STOCK=#PTF1.TYPE_STOCK \" +\"wher\n"
+ "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"
+ "#####################################################################################################################################"));
}
}
@Test
public void getRepositoryContent() throws Exception {
int repositoryId = 1;
Connection con = FIXTURE.getConnection();
TreatmentHelper.deleteRepository(con, repositoryId);
RepositoryDescriptor repositoryDescriptor = new RepositoryDescriptor(repositoryId, "REP1",
new String[]{
"/net/codjo/dataprocess/server/repository/RepositoryTest3.xml"});
TreatmentHelper.initRepository(con, Arrays.asList(repositoryDescriptor));
Repository.loadAllTreatmentsFromRepository(con, repositoryId);
String result = Repository.getRepositoryContent(con, repositoryId);
assertThat(result, equalTo("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
+ "<root>\n"
+ "<treatment id=\"trt1\" scope=\"TREATMENT\" type=\"java\">\r\n"
+ " <title>Maj des ptf miroit�s</title>\r\n"
+ " <comment>Traitement des Maj des ptf miroit�s</comment>\r\n"
+ " <target>com.patati.patata.Patatouf</target>\r\n"
+ " <gui-target>com.patati.patata.mage.imba</gui-target>\r\n"
+ " <arguments/>\r\n"
+ " </treatment>\n"
+ "<treatment id=\"trt2\" scope=\"TREATMENT\" type=\"stored_procedure\">\r\n"
+ " <title>Conso des mouvements</title>\r\n"
+ " <comment>Traitement des Conso des mouvements</comment>\r\n"
+ " <target>sp_SIF_Aggregate_Transactions</target>\r\n"
+ " <gui-target>com.patati.patata.druide.feral</gui-target>\r\n"
+ " <arguments/>\r\n"
+ " </treatment>\n"
+ "</root>"));
}
}