package net.codjo.dataprocess.server.util; import net.codjo.database.common.api.DatabaseFactory; import net.codjo.database.common.api.JdbcFixture; import net.codjo.database.common.api.structure.SqlTable; import java.sql.SQLException; import java.util.Arrays; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import static net.codjo.test.common.matcher.JUnitMatchers.*; /** * */ public class DatabaseToolsTest { private JdbcFixture jdbc; private static final String TABLE_TEST_1 = "TABLE_TEST_1"; private static final String TABLE_TEST_2 = "TABLE_TEST_2"; @Before public void before() throws Exception { jdbc = new DatabaseFactory().createJdbcFixture(); jdbc.doSetUp(); jdbc.advanced().dropAllObjects(); } @After public void after() throws Exception { jdbc.doTearDown(); } @Test public void getAllFieldNamesByTable() throws Exception { createTestTables(jdbc); String result = DatabaseTools.getAllFieldNamesByTable(jdbc.getConnection()); List<String> list = Arrays.asList(result.split(",")); assertThat(true, equalTo(list.contains("TABLE_TEST_1.id"))); assertThat(true, equalTo(list.contains("TABLE_TEST_1.field1"))); assertThat(true, equalTo(list.contains("TABLE_TEST_1.field2"))); assertThat(true, equalTo(list.contains("TABLE_TEST_2.id"))); assertThat(true, equalTo(list.contains("TABLE_TEST_2.field1"))); assertThat(true, equalTo(list.contains("TABLE_TEST_2.field2"))); dropTestTables(jdbc); } @Test public void executeQuery() throws Exception { jdbc.create(SqlTable.table("T_DIRECTSQL_LOG"), "T_DIRECT_SQL_LOG_ID numeric(23) identity not null, " + " INITIATOR varchar(30) not null, " + " FLAG varchar(30) null, " + " REQUEST_DATE datetime not null, " + " SQL_REQUEST text not null, " + " RESULT text not null"); jdbc.create(SqlTable.table(TABLE_TEST_1), "id integer, field1 varchar(50) not null, field2 varchar(50) not null"); jdbc.executeUpdate( "insert into " + TABLE_TEST_1 + " (id, field1, field2) values (1, 'poire', 'confiture')"); jdbc.executeUpdate( "insert into " + TABLE_TEST_1 + " (id, field1, field2) values (2, 'banane', 'marmalade')"); jdbc.executeUpdate( "insert into " + TABLE_TEST_1 + " (id, field1, field2) values (3, 'fraise', 'jus')"); String result = DatabaseTools.executeQuery("michel", jdbc.getConnection(), "SELECT id, field1, field2 from " + TABLE_TEST_1 + " order by id, field1, field2", 1, 10); assertThat(result, equalTo( "RS\n3\n3\nid\tfield1\tfield2\t\n1\tpoire\tconfiture\t\n2\tbanane\tmarmalade\t\n3\tfraise\tjus\t\n")); result = DatabaseTools.executeQuery("michel", jdbc.getConnection(), "SELETC * from " + TABLE_TEST_1, 1, 10); assertThat(result.startsWith(DatabaseTools.EXCEPTION_THROWN + "\n"), equalTo(true)); jdbc.drop(SqlTable.table("T_DIRECTSQL_LOG")); } private static void createTestTables(JdbcFixture fixture) throws SQLException { fixture.create(SqlTable.table(TABLE_TEST_1), "id integer, field1 varchar(50) not null, field2 varchar(100) not null"); fixture.create(SqlTable.table(TABLE_TEST_2), "id integer, field1 varchar(100) not null, field2 varchar(100) not null"); } private static void dropTestTables(JdbcFixture fixture) throws SQLException { fixture.drop(SqlTable.table(TABLE_TEST_1)); fixture.drop(SqlTable.table(TABLE_TEST_2)); } }