Merge pull request #33368 from tafjwr

* pr/33368:
  Polish "Fix predicate setup in test"
  Fix predicate setup in test

Closes gh-33368
This commit is contained in:
Stéphane Nicoll 2024-08-12 11:02:02 +02:00
commit 289c35c829
1 changed files with 10 additions and 12 deletions

View File

@ -16,8 +16,6 @@
package org.springframework.jdbc.config;
import java.util.function.Predicate;
import javax.sql.DataSource;
import org.junit.jupiter.api.Test;
@ -35,6 +33,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.AbstractDriverBasedDataSource;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean;
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
import org.springframework.lang.Nullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@ -70,26 +69,24 @@ class JdbcNamespaceIntegrationTests {
@Test
void createWithAnonymousDataSourceAndDefaultDatabaseName() {
assertCorrectSetupForSingleDataSource("jdbc-config-db-name-default-and-anonymous-datasource.xml",
url -> url.endsWith(DEFAULT_DATABASE_NAME));
assertThat(extractDataSourceUrl("jdbc-config-db-name-default-and-anonymous-datasource.xml"))
.endsWith(DEFAULT_DATABASE_NAME);
}
@Test
void createWithImplicitDatabaseName() {
assertCorrectSetupForSingleDataSource("jdbc-config-db-name-implicit.xml", url -> url.endsWith("dataSource"));
assertThat(extractDataSourceUrl("jdbc-config-db-name-implicit.xml")).endsWith("dataSource");
}
@Test
void createWithExplicitDatabaseName() {
assertCorrectSetupForSingleDataSource("jdbc-config-db-name-explicit.xml", url -> url.endsWith("customDbName"));
assertThat(extractDataSourceUrl("jdbc-config-db-name-explicit.xml")).endsWith("customDbName");
}
@Test
void createWithGeneratedDatabaseName() {
Predicate<String> urlPredicate = url -> url.startsWith("jdbc:hsqldb:mem:");
urlPredicate.and(url -> !url.endsWith("dataSource"));
urlPredicate.and(url -> !url.endsWith("shouldBeOverriddenByGeneratedName"));
assertCorrectSetupForSingleDataSource("jdbc-config-db-name-generated.xml", urlPredicate);
assertThat(extractDataSourceUrl("jdbc-config-db-name-generated.xml")).startsWith("jdbc:hsqldb:mem:")
.doesNotEndWith("dataSource").doesNotEndWith("shouldBeOverriddenByGeneratedName");
}
@Test
@ -191,13 +188,14 @@ class JdbcNamespaceIntegrationTests {
}
}
private void assertCorrectSetupForSingleDataSource(String file, Predicate<String> urlPredicate) {
@Nullable
private String extractDataSourceUrl(String file) {
try (ConfigurableApplicationContext context = context(file)) {
DataSource dataSource = context.getBean(DataSource.class);
assertNumRowsInTestTable(new JdbcTemplate(dataSource), 1);
assertThat(dataSource).isInstanceOf(AbstractDriverBasedDataSource.class);
AbstractDriverBasedDataSource adbDataSource = (AbstractDriverBasedDataSource) dataSource;
assertThat(urlPredicate.test(adbDataSource.getUrl())).isTrue();
return adbDataSource.getUrl();
}
}