package net.codjo.dataprocess.server.handlerfactory;
import net.codjo.database.common.api.DatabaseFactory;
import net.codjo.database.common.api.JdbcFixture;
import net.codjo.database.common.api.structure.SqlTable;
import net.codjo.dataprocess.common.DataProcessConstants;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class DuplicateRowFactoryTest {
private Connection con;
private DuplicateRowFactory duplicateRowFactory;
private JdbcFixture fixture;
private static final String TABLE_TEST = "#TABLE_TEST";
@Before
public void before() throws Exception {
fixture = new DatabaseFactory().createJdbcFixture();
fixture.doSetUp();
duplicateRowFactory = new DuplicateRowFactory();
con = fixture.getConnection();
fixture.create(SqlTable.table(TABLE_TEST), "TABLE_ID1 int not null, "
+ "TABLE_ID2 int not null, "
+ "VALEUR1 varchar(50) null,"
+ "VALEUR2 varchar(75) null");
}
@After
public void after() {
fixture.doTearDown();
}
@Test
public void proceed() throws Exception {
Map<String, String> args = new HashMap<String, String>();
args.put("tableId1", "10");
args.put("tableId2", "15");
args.put(DataProcessConstants.TABLE_NAME_KEY, TABLE_TEST);
String sqlInsert = duplicateRowFactory.proceed(con, args);
assertThat("insert into #TABLE_TEST (VALEUR1, VALEUR2) "
+ "select VALEUR1, VALEUR2 from #TABLE_TEST where TABLE_ID1 = ? and TABLE_ID2 = ?",
equalTo(sqlInsert));
}
@Test
public void toSqlUpper() {
assertThat(duplicateRowFactory.sqlUpper("tableId"), equalTo("TABLE_ID"));
assertThat(duplicateRowFactory.sqlUpper("tTable"), equalTo("T_TABLE"));
}
}