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 java.sql.Connection; import java.util.HashMap; import java.util.Map; import org.junit.After; import org.junit.Before; import org.junit.Test; import static net.codjo.test.common.matcher.JUnitMatchers.*; /** * */ public class SelectAllByFilterFactoryTest { private Connection con; private SelectAllByFilterFactory selectAllByFilterFactory; private JdbcFixture fixture; private static final String TABLE_TEST = "#TABLE_TEST"; @Before public void before() throws Exception { fixture = new DatabaseFactory().createJdbcFixture(); fixture.doSetUp(); selectAllByFilterFactory = new SelectAllByFilterFactory(); con = fixture.getConnection(); fixture.create(SqlTable.table(TABLE_TEST), "TABLE_ID1 int not null, " + "TABLE_ID2 int not null, " + "CHAMP1 varchar(50) null," + "CHAMP2 varchar(75) null," + "CHAMP3 varchar(25) null"); } @After public void after() { fixture.doTearDown(); } @Test public void proceedWithWhereClause() throws Exception { Map<String, String> args = new HashMap<String, String>(); args.put(DataProcessConstants.TABLE_NAME_KEY, TABLE_TEST); args.put(DataProcessConstants.WHERE_CLAUSE_KEY, "CHAMP1 = '1'"); args.put("CHAMP1", "VALEUR1"); args.put("CHAMP2", "VALEUR2"); String sqlInsert = selectAllByFilterFactory.proceed(con, args); assertThat("Select TABLE_ID1, TABLE_ID2, CHAMP1, CHAMP2, CHAMP3 from #TABLE_TEST where CHAMP1 = '1'", equalTo(sqlInsert)); } @Test public void proceedWithoutWhereClause() throws Exception { Map<String, String> args = new HashMap<String, String>(); args.put(DataProcessConstants.TABLE_NAME_KEY, TABLE_TEST); args.put("champ1", "VALEUR1"); args.put("champ2", "VALEUR2"); String sql = selectAllByFilterFactory.proceed(con, args); assertThat("Select TABLE_ID1, TABLE_ID2, CHAMP1, CHAMP2, CHAMP3 from #TABLE_TEST" + " where CHAMP1 = ? and CHAMP2 = ?", equalTo(sql)); args.clear(); args.put(DataProcessConstants.TABLE_NAME_KEY, TABLE_TEST); sql = selectAllByFilterFactory.proceed(con, args); assertThat("Select TABLE_ID1, TABLE_ID2, CHAMP1, CHAMP2, CHAMP3 from #TABLE_TEST", equalTo(sql)); } }