package net.codjo.dataprocess.server.dao;
import net.codjo.database.common.api.JdbcFixture;
import net.codjo.datagen.DatagenFixture;
import net.codjo.dataprocess.server.util.TestUtils;
import net.codjo.test.common.fixture.CompositeFixture;
import net.codjo.tokio.TokioFixture;
import java.sql.Connection;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
/**
*
*/
public class UtilDaoTest {
private static final TokioFixture TOKIO = new TokioFixture(UtilDaoTest.class);
private static final DatagenFixture DATAGEN = new DatagenFixture(UtilDaoTest.class);
private static final CompositeFixture COMPOSITE_FIXTURE = new CompositeFixture(TOKIO, DATAGEN);
@BeforeClass
public static void beforeClass() throws Exception {
COMPOSITE_FIXTURE.doSetUp();
JdbcFixture jdbcFixture = TOKIO.getJdbcFixture();
jdbcFixture.advanced().dropAllObjects();
try {
DATAGEN.generate();
TestUtils.initScript(jdbcFixture, DATAGEN, "PM_TREATMENT.tab");
TestUtils.initScript(jdbcFixture, DATAGEN, "PM_REPOSITORY.tab");
}
catch (Exception e) {
COMPOSITE_FIXTURE.doTearDown();
fail(e.getLocalizedMessage());
}
}
@AfterClass
public static void afterClass() throws Exception {
COMPOSITE_FIXTURE.doTearDown();
}
@Test
public void exportSqlQueryToStringFormat() throws Exception {
TOKIO.insertInputInDb("EXPORT");
String sql = " select * from PM_TREATMENT";
Connection con = TOKIO.getConnection();
UtilDao utilDao = new UtilDao();
String result = utilDao.exportSqlQueryToStringFormat(con, sql, ", ", "\"",
Boolean.TRUE);
assertThat(result, equalTo("\"TREATMENT_ID\", \"PRIORITY\", \"EXECUTION_LIST_ID\"\n"
+ "\"AAAA\", \"1\", \"10\"\n" + "\"BBBB\", \"2\", \"20\"\n"
+ "\"CCCC\", \"3\", \"30\"\n" + "\"DDDD\", \"4\", \"40\"\n"));
// test avec une table temporaire ...
sql = "create table #TEMP (CODE_PORTEFEUILLE varchar(10) null, "
+ " QUANTITE numeric(25,5) default 0 null) "
+ " insert into #TEMP (CODE_PORTEFEUILLE, QUANTITE) values ('CP1', 1) "
+ " insert into #TEMP (CODE_PORTEFEUILLE, QUANTITE) values ('CP2', 10) "
+ " select * from #TEMP ";
result = utilDao.exportSqlQueryToStringFormat(con, sql, ", ", "\"", Boolean.TRUE);
assertThat(result, equalTo("\"CODE_PORTEFEUILLE\", \"QUANTITE\"\n" + "\"CP1\", \"1.00000\"\n"
+ "\"CP2\", \"10.00000\"\n"));
}
}