Skip to content

Commit

Permalink
Polish autoconfigure-kotlin module
Browse files Browse the repository at this point in the history
Signed-off-by: Taeik Lim <[email protected]>
  • Loading branch information
acktsap authored Feb 3, 2025
1 parent b89c08e commit 9328a8a
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
testImplementation(libs.spring.boot.autoconfigure)
testImplementation(libs.spring.boot.test)
testImplementation(libs.spring.batch.core)
testImplementation(libs.spring.jdbc)

testRuntimeOnly(libs.h2)
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,84 +36,84 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
import org.springframework.transaction.TransactionManager
import javax.sql.DataSource

internal class BatchPlusAutoConfigurationTest {
private class BatchPlusAutoConfigurationIT {

private val contextRunner = ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(BatchPlusAutoConfiguration::class.java))

@Test
fun testRegister() {
fun autoConfigure() {
@EnableBatchProcessing(
dataSourceRef = "metadataDataSource",
transactionManagerRef = "metadataTransactionManager",
)
class BatchConfiguration {

@Bean
fun metadataTransactionManager(): TransactionManager {
return DataSourceTransactionManager(metadataDataSource())
}

@Bean
fun metadataDataSource(): DataSource {
return EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build()
}
}

contextRunner.withUserConfiguration(BatchConfiguration::class.java)
.run { context: AssertableApplicationContext? ->
.run { context: AssertableApplicationContext ->
assertThat(context).hasSingleBean(BatchDsl::class.java)
}
}

@Test
fun testNotRegisterWhenAlreadyRegistered() {
contextRunner.withUserConfiguration(BatchDslConfiguration::class.java)
.run { context: AssertableApplicationContext? ->
fun autoConfigureShouldNotRegisterWhenAlreadyRegisteredOneExists() {
@EnableBatchProcessing(
dataSourceRef = "metadataDataSource",
transactionManagerRef = "metadataTransactionManager",
)
class BatchConfiguration {
@Bean
fun batchDsl(
beanFactory: BeanFactory,
jobRepository: JobRepository,
): BatchDsl {
return BatchDsl(
beanFactory,
jobRepository,
)
}

@Bean
fun metadataTransactionManager(): TransactionManager {
return DataSourceTransactionManager(metadataDataSource())
}

@Bean
fun metadataDataSource(): DataSource {
return EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build()
}
}

contextRunner.withUserConfiguration(BatchConfiguration::class.java)
.run { context: AssertableApplicationContext ->
assertThat(context).hasSingleBean(BatchDsl::class.java)
}
}

@Test
fun testNotRegisterOnNoRequiredBeans() {
fun autoConfigureShouldNotRegisterWhenNoRequiredBeans() {
contextRunner.run { context: AssertableApplicationContext ->
assertThatThrownBy { context.getBean<BatchDsl>() }
.hasMessageContaining("No qualifying bean")
}
}

@EnableBatchProcessing(
dataSourceRef = "metadataDataSource",
transactionManagerRef = "metadataTransactionManager",
)
class BatchConfiguration {

@Bean
fun metadataTransactionManager(): TransactionManager {
return DataSourceTransactionManager(metadataDataSource())
}

@Bean
fun metadataDataSource(): DataSource {
return EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build()
}
}

@EnableBatchProcessing(
dataSourceRef = "metadataDataSource",
transactionManagerRef = "metadataTransactionManager",
)
class BatchDslConfiguration {
@Bean
fun batchDsl(
beanFactory: BeanFactory,
jobRepository: JobRepository,
): BatchDsl {
return BatchDsl(
beanFactory,
jobRepository,
)
}

@Bean
fun metadataTransactionManager(): TransactionManager {
return DataSourceTransactionManager(metadataDataSource())
}

@Bean
fun metadataDataSource(): DataSource {
return EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build()
}
}
}

0 comments on commit 9328a8a

Please sign in to comment.