@Test
public void testInsertReleaseConnection() throws Exception {
Connection connection = createMock(Connection.class);
PreparedStatement prepStmt = createMock(PreparedStatement.class);
GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class);
ResultSet resultSet = createMock(ResultSet.class);
ResultSetMetaData metaData = createMock(ResultSetMetaData.class);
JdbcDatabaseConnection jdc = new JdbcDatabaseConnection(connection);
String statement = "statement";
expect(connection.prepareStatement(statement, 1)).andReturn(prepStmt);
expect(prepStmt.executeUpdate()).andReturn(1);
expect(prepStmt.getGeneratedKeys()).andReturn(resultSet);
expect(resultSet.getMetaData()).andReturn(metaData);
expect(resultSet.next()).andReturn(true);
expect(metaData.getColumnCount()).andReturn(1);
expect(metaData.getColumnType(1)).andReturn(Types.INTEGER);
int keyHolderVal = 123131;
expect(resultSet.getInt(1)).andReturn(keyHolderVal);
keyHolder.addKey(keyHolderVal);
expect(resultSet.next()).andReturn(false);
// should close the statement
prepStmt.close();
connection.close();
replay(connection, prepStmt, keyHolder, resultSet, metaData);