Polishing

This commit is contained in:
Sam Brannen 2023-10-24 11:48:03 +02:00
parent e57b942b4d
commit a803206d5f
2 changed files with 28 additions and 10 deletions

View File

@ -36,6 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Sam Brannen
* @since 6.1
* @see SimpleJdbcInsertTests
*/
class SimpleJdbcInsertIntegrationTests {
@ -81,7 +82,7 @@ class SimpleJdbcInsertIntegrationTests {
insertJaneSmith(insert);
}
@Test // gh-24013
@Test // gh-24013
void usingColumnsAndQuotedIdentifiers() throws Exception {
SimpleJdbcInsert insert = new SimpleJdbcInsert(embeddedDatabase)
.withTableName("users")
@ -90,7 +91,9 @@ class SimpleJdbcInsertIntegrationTests {
insert.compile();
// NOTE: quoted identifiers in H2/HSQL will be UPPERCASE!
assertThat(insert.getInsertString()).isEqualTo("INSERT INTO \"USERS\" (\"FIRST_NAME\", \"LAST_NAME\") VALUES(?, ?)");
assertThat(insert.getInsertString()).isEqualToIgnoringNewLines("""
INSERT INTO "USERS" ("FIRST_NAME", "LAST_NAME") VALUES(?, ?)
""");
insertJaneSmith(insert);
}
@ -123,7 +126,7 @@ class SimpleJdbcInsertIntegrationTests {
insertJaneSmith(insert);
}
@Test // gh-24013
@Test // gh-24013
void usingColumnsAndQuotedIdentifiersWithSchemaName() throws Exception {
SimpleJdbcInsert insert = new SimpleJdbcInsert(embeddedDatabase)
.withSchemaName("my_schema")
@ -133,7 +136,9 @@ class SimpleJdbcInsertIntegrationTests {
insert.compile();
// NOTE: quoted identifiers in H2/HSQL will be UPPERCASE!
assertThat(insert.getInsertString()).isEqualTo("INSERT INTO \"MY_SCHEMA\".\"USERS\" (\"FIRST_NAME\", \"LAST_NAME\") VALUES(?, ?)");
assertThat(insert.getInsertString()).isEqualToIgnoringNewLines("""
INSERT INTO "MY_SCHEMA"."USERS" ("FIRST_NAME", "LAST_NAME") VALUES(?, ?)
""");
insertJaneSmith(insert);
}

View File

@ -38,10 +38,11 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/**
* Mock object based tests for {@link SimpleJdbcInsert}.
* Mock-based tests for {@link SimpleJdbcInsert}.
*
* @author Thomas Risberg
* @author Sam Brannen
* @see SimpleJdbcInsertIntegrationTests
*/
class SimpleJdbcInsertTests {
@ -64,6 +65,18 @@ class SimpleJdbcInsertTests {
}
@Test
void missingTableName() throws Exception {
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource);
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
.isThrownBy(insert::compile)
.withMessage("Table name is required");
// Appease the @AfterEach checks.
connection.close();
}
/**
* This method does not test any functionality but rather only that
* configuration methods can be chained without compiler errors.
@ -100,8 +113,8 @@ class SimpleJdbcInsertTests {
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource).withTableName("x");
// Shouldn't succeed in inserting into table which doesn't exist
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
.isThrownBy(() -> insert.execute(Collections.emptyMap()))
.withMessageStartingWith("Unable to locate columns for table 'x' so an insert statement can't be generated");
.isThrownBy(() -> insert.execute(Collections.emptyMap()))
.withMessageStartingWith("Unable to locate columns for table 'x' so an insert statement can't be generated");
verify(resultSet).close();
}
@ -152,9 +165,9 @@ class SimpleJdbcInsertTests {
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource).withTableName("me");
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
.isThrownBy(insert::compile)
.withMessage("Unable to locate columns for table 'me' so an insert statement can't be generated. " +
"Consider specifying explicit column names -- for example, via SimpleJdbcInsert#usingColumns().");
.isThrownBy(insert::compile)
.withMessage("Unable to locate columns for table 'me' so an insert statement can't be generated. " +
"Consider specifying explicit column names -- for example, via SimpleJdbcInsert#usingColumns().");
verify(columnResultSet).close();
verify(tableResultSet).close();