@Test public void testUpdateReleaseConnection() throws Exception { Connection connection = createMock(Connection.class); JdbcDatabaseConnection jdc = new JdbcDatabaseConnection(connection); String statement = "statement"; PreparedStatement prepStmt = createMock(PreparedStatement.class); expect(connection.prepareStatement(statement)).andReturn(prepStmt); expect(prepStmt.executeUpdate()).andReturn(1); // should close the statement prepStmt.close(); connection.close(); replay(connection, prepStmt); jdc.update(statement, new Object[0], new FieldType[0]); jdc.close(); verify(connection, prepStmt); }
@Test public void testQueryForOneReleaseConnection() throws Exception { Connection connection = createMock(Connection.class); PreparedStatement prepStmt = createMock(PreparedStatement.class); GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class); ResultSet resultSet = createMock(ResultSet.class); @SuppressWarnings("unchecked") GenericRowMapper<Foo> rowMapper = createMock(GenericRowMapper.class); JdbcDatabaseConnection jdc = new JdbcDatabaseConnection(connection); String statement = "statement"; expect(connection.prepareStatement(statement, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)) .andReturn(prepStmt); expect(prepStmt.executeQuery()).andReturn(resultSet); expect(resultSet.getMetaData()).andReturn(null); expect(resultSet.next()).andReturn(false); resultSet.close(); expect(prepStmt.getMoreResults()).andReturn(false); // should close the statement prepStmt.close(); connection.close(); replay(connection, prepStmt, keyHolder, resultSet, rowMapper); jdc.queryForOne(statement, new Object[0], new FieldType[0], rowMapper, null); jdc.close(); verify(connection, prepStmt, keyHolder, resultSet, rowMapper); }
@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); jdc.insert(statement, new Object[0], new FieldType[0], keyHolder); jdc.close(); verify(connection, prepStmt, keyHolder, resultSet, metaData); }
@Test public void testReleaseAlreadyClosedUnknown() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); conn1.close(); pooled.releaseConnection(conn1); } finally { pooled.close(); } }