1   /*
2    * Copyright (c) 2004 International Decision Systems, Inc.  All Rights Reserved.
3    *
4    * By using this Software, You acknowledge that the Software is a valuable asset
5    * and trade secret of either International Decision Systems, Inc. ("IDSI") or a
6    * third party supplier of IDSI and constitutes confidential and proprietary
7    * information.
8    *
9    * NEITHER IDSI NOR ANY AGENT OR PERSON ACTING FOR OR WITH IDSI HAS MADE OR DOES
10   * MAKE ANY STATEMENTS, AFFIRMATIONS, REPRESENTATIONS OR WARRANTIES WHATSOEVER
11   * TO YOU, WHETHER EXPRESS OR IMPLIED, AS TO THE SOFTWARE, THE QUALITY OR
12   * CONDITION OF THE SOFTWARE, OR THE OPERATING CHARACTERISTICS OR RELIABILITY OF
13   * THE SOFTWARE, OR ITS SUITABILITY FOR ANY GENERAL OR PARTICULAR PURPOSE, OR AS
14   * TO ANY OTHER MATTER WHATSOEVER; ANY AND ALL OTHER WARRANTIES INCLUDING
15   * WITHOUT LIMITATION ANY WARRANTIES IMPLIED BY LAW, SUCH AS THE IMPLIED
16   * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND TITLE,
17   * USE AND NON-INFRINGEMENT; ARE HEREBY EXPRESSLY DISCLAIMED AND EXCLUDED.
18  */
19  package net.sourceforge.addam.ddlgen.generic;
20  
21  import com.mockrunner.jdbc.JDBCTestCaseAdapter;
22  import com.mockrunner.jdbc.StatementResultSetHandler;
23  import com.mockrunner.mock.jdbc.MockConnection;
24  import com.mockrunner.mock.jdbc.MockDatabaseMetaData;
25  import com.mockrunner.mock.jdbc.MockResultSet;
26  
27  import net.sourceforge.addam.ddlgen.generic.InsertGenerator;
28  
29  import org.apache.velocity.VelocityContext;
30  
31  import java.sql.SQLException;
32  import java.sql.Types;
33  import java.util.Date;
34  import java.util.List;
35  
36  /**
37   * User: mkrishna
38   * Date: Nov 18, 2004
39   */
40  public class InsertGeneratorUTEST extends JDBCTestCaseAdapter {
41  
42      public void testInsertSQLGeneratorCreatesObjectsProperly() throws Exception {
43          MockConnection connection = getConnection();
44          net.sourceforge.addam.ddlgen.generic.InsertGenerator generator = new InsertGenerator();
45          VelocityContext context = generator.getContext(null, null, "testforeignKey", connection, null);
46          List<List> rows = (List<List>)context.get("rows");
47          assertEquals(1, rows.size());
48          assertEquals("'column1'", (rows.get(0)).get(0));
49          assertEquals("'column2'", (rows.get(0)).get(1));
50  
51          verifyAllResultSetsClosed();
52          verifyAllStatementsClosed();
53      }
54  
55      public void testGetFormattedString() {
56          InsertGenerator insertGenerator = new InsertGenerator();
57          String formattedString = insertGenerator.getFormattedString("column3", Types.VARCHAR);
58          assertEquals("'column3'", formattedString);
59  
60          formattedString = insertGenerator.getFormattedString(null, Types.VARCHAR);
61          assertEquals("null", formattedString);
62  
63          formattedString = insertGenerator.getFormattedString("2004-11-23 17:20:20.0", Types.DATE);
64          assertEquals("to_timestamp ('2004-11-23 17:20:20.0', 'yyyy-mm-dd HH24:MI:SS.FF')", formattedString);
65      }
66  
67      private MockConnection getConnection() throws SQLException {
68          MockConnection connection;
69          connection = getJDBCMockObjectFactory().getMockConnection();
70          StatementResultSetHandler statementHandler = connection.getStatementResultSetHandler();
71          MockDatabaseMetaData mockDatabaseMetaData = new MockDatabaseMetaData();
72          MockResultSet result = new MockResultSet("some String");
73          mockDatabaseMetaData.setColumns(result);
74          result.addRow(new Object[]{"column1", "column2", new Date(234234)});
75          statementHandler.prepareGlobalResultSet(result);
76          connection.setMetaData(mockDatabaseMetaData);
77          return connection;
78      }
79  }