/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.utils; import fakedb.FakeDriver; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * - * * @author $Author: spinae $ * @version $Revision: 1.2 $ */ public class QueryHelperTest extends TestCase { TestEnvironnement testEnv; Connection con; QueryHelper query; /** * DOCUMENT ME! * * @param Name_ Description of Parameter */ public QueryHelperTest(String Name_) { super(Name_); } /** * A unit test suite for JUnit * * @return The test suite */ public static Test suite() { return new TestSuite(QueryHelperTest.class); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_doSelectAll() throws SQLException { // aucun commit Object[][] matrix = { {"PERIOD"}, {"200008"}, {"200009"} }; FakeDriver.getDriver().pushResultSet(matrix, "select * from AP_PERIOD"); ResultSet rs = query.doSelectAll(); rs.next(); assertEquals(rs.getString("PERIOD"), "200008"); rs.next(); assertEquals(rs.getString("PERIOD"), "200009"); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_doSelect() throws SQLException { Object[][] matrix = { {"PERIOD"}, {"200012"} }; FakeDriver.getDriver().pushResultSet(matrix, "select * from AP_PERIOD where PERIOD=200012"); query.setSelectorValue("PERIOD", "200012"); ResultSet rs = query.doSelect(); assertTrue("Ligne existe", rs.next()); assertEquals(rs.getString("PERIOD"), "200012"); } /** * A unit test for JUnit */ public void test_buildSelectQuery() { List columnList = new ArrayList(); columnList.add("C"); columnList.add("B"); columnList.add("A"); List whereList = new ArrayList(); whereList.add("A"); whereList.add("C"); String query = QueryHelper.buildSelectQuery("MA_TABLE", columnList, whereList); assertEquals(query, "select C, B, A from MA_TABLE where A=? and C=?"); } /** * A unit test for JUnit */ public void test_buildSelectQuery_Star() { List columnList = null; List whereList = new ArrayList(); whereList.add("A"); whereList.add("C"); String query = QueryHelper.buildSelectQuery("MA_TABLE", columnList, whereList); assertEquals(query, "select * from MA_TABLE where A=? and C=?"); } /** * A unit test for JUnit */ public void test_buildUpdateQuery() { List columnList = new ArrayList(); columnList.add("C"); columnList.add("B"); columnList.add("A"); List whereList = new ArrayList(); whereList.add("A"); whereList.add("C"); String query = QueryHelper.buildUpdateQuery("MA_TABLE", columnList, whereList); assertEquals(query, "update MA_TABLE set C=? , B=? , A=? where A=? and C=?"); } /** * A unit test for JUnit */ public void test_buildUpdateQueryWithWhereClause() { List columnList = new ArrayList(); columnList.add("C"); columnList.add("B"); columnList.add("A"); List whereList = new ArrayList(); whereList.add("A"); whereList.add("C"); String whereClause = "D='TITI'"; String query = QueryHelper.buildUpdateQueryWithWhereClause("MA_TABLE", columnList, whereList, whereClause); assertEquals(query, "update MA_TABLE set C=? , B=? , A=? where A=? and C=? and D='TITI'"); } /** * A unit test for JUnit */ public void test_buildInsertStatement() { List columnList = new ArrayList(); columnList.add("C"); columnList.add("B"); columnList.add("A"); String query = QueryHelper.buildInsertQuery("MA_TABLE", columnList); assertEquals(query, "insert into MA_TABLE (C, B, A) values (?, ?, ?)"); } /** * A unit test for JUnit * * @exception SQLException Description of Exception */ public void test_build_NoSelector() throws SQLException { // Construction SQLFieldList is = new SQLFieldList(); is.addStringField("PERIOD"); QueryHelper q = new QueryHelper("AP_PERIOD", con, is); // Insert pour de rire con.setAutoCommit(false); q.setInsertValue("PERIOD", "BOBO"); FakeDriver.getDriver().pushResultSet(FakeDriver.RESULT_ONE, "insert into AP_PERIOD (PERIOD) values (BOBO) select @@identity"); q.doInsert(); q.setInsertValue("PERIOD", "BOBO2"); FakeDriver.getDriver().pushResultSet(FakeDriver.RESULT_ONE, "insert into AP_PERIOD (PERIOD) values (BOBO2) select @@identity"); q.doInsert(); con.rollback(); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_doSelect_BadID() throws SQLException { Object[][] matrix = { {"PERIOD"} }; FakeDriver.getDriver().pushResultSet(matrix, "select * from AP_PERIOD where PERIOD=xxxx"); query.setSelectorValue("PERIOD", "xxxx"); ResultSet rs = query.doSelect(); assertTrue("Enregistrement inconnue", rs.next() == false); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_Insert_Update_Delete() throws SQLException { String str = "Bobo's Period"; // Insert query.setInsertValue("PERIOD", str); FakeDriver.getDriver().pushResultSet(FakeDriver.RESULT_ONE, "insert into AP_PERIOD (PERIOD) values (Bobo's Period) select @@identity"); query.doInsert(); // Update query.setSelectorValue("PERIOD", str); query.setInsertValue("PERIOD", "nouveau"); FakeDriver.getDriver().pushUpdateConstraint("update AP_PERIOD set PERIOD=nouveau where PERIOD=Bobo's Period"); query.doUpdate(); // Delete query.setSelectorValue("PERIOD", "nouveau"); FakeDriver.getDriver().pushUpdateConstraint("delete from AP_PERIOD where PERIOD=nouveau"); query.doDelete(); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_Insert_Select_Delete() throws SQLException { String str = "Bobo's Period"; // Insert query.setInsertValue("PERIOD", str); FakeDriver.getDriver().pushResultSet(FakeDriver.RESULT_ONE, "insert into AP_PERIOD (PERIOD) values (Bobo's Period) select @@identity"); query.doInsert(); // Select query.setSelectorValue("PERIOD", str); Object[][] matrix = { {"PERIOD"}, {str} }; FakeDriver.getDriver().pushResultSet(matrix, "select * from AP_PERIOD where PERIOD=Bobo's Period"); ResultSet rs = query.doSelect(); rs.next(); assertEquals(rs.getString("PERIOD"), str); // Delete query.setSelectorValue("PERIOD", str); FakeDriver.getDriver().pushUpdateConstraint("delete from AP_PERIOD where PERIOD=" + str); query.doDelete(); // Check query.setSelectorValue("PERIOD", str); FakeDriver.getDriver().pushResultSet(FakeDriver.EMPTY, "select * from AP_PERIOD where PERIOD=Bobo's Period"); rs = query.doSelect(); assertTrue("L'enregistrement est efface", rs.next() == false); } /** * DOCUMENT ME! * * @exception SQLException Description of Exception */ public void test_Insert_RollBack() throws SQLException { String str = "Bobo's Period"; con.setAutoCommit(false); query.setInsertValue("PERIOD", str); FakeDriver.getDriver().pushResultSet(FakeDriver.RESULT_ONE, "insert into AP_PERIOD (PERIOD) values (Bobo's Period) select @@identity"); query.doInsert(); con.rollback(); // Check query.setSelectorValue("PERIOD", str); FakeDriver.getDriver().pushResultSet(FakeDriver.EMPTY, "select * from AP_PERIOD where PERIOD=Bobo's Period"); ResultSet rs = query.doSelect(); assertTrue("L'enregistrement est efface", rs.next() == false); } /** * The JUnit setup method * * @exception Exception Description of Exception */ protected void setUp() throws Exception { TestEnvironnement.forceFakeDriver(); testEnv = TestEnvironnement.newEnvironment(); con = testEnv.getHomeConnection(); SQLFieldList selectById = new SQLFieldList(); selectById.addStringField("PERIOD"); SQLFieldList insertFields = new SQLFieldList(); insertFields.addStringField("PERIOD"); query = new QueryHelper("AP_PERIOD", con, insertFields, selectById); } /** * The teardown method for JUnit * * @exception SQLException Description of Exception */ protected void tearDown() throws SQLException { testEnv.close(); } }