diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java index 570f484917..0a9e47f901 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java @@ -19,6 +19,7 @@ package org.springframework.boot.test.autoconfigure.data.neo4j; import java.time.Duration; import org.junit.jupiter.api.Test; +import org.neo4j.driver.Driver; import org.testcontainers.containers.Neo4jContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -27,8 +28,13 @@ import reactor.test.StepVerifier; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.data.neo4j.core.DatabaseSelectionProvider; import org.springframework.data.neo4j.core.ReactiveNeo4jTemplate; +import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager; +import org.springframework.data.neo4j.repository.config.ReactiveNeo4jRepositoryConfigurationExtension; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -38,6 +44,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; * Integration tests for the reactive SDN/RX Neo4j test slice. * * @author Michael J. Simons + * @author Scott Frederick * @since 2.4.0 */ @DataNeo4jTest @@ -75,4 +82,20 @@ class DataNeo4jTestReactiveIntegrationTests { .isThrownBy(() -> this.applicationContext.getBean(ExampleService.class)); } + // Providing this bean fulfills a requirement that a @Transactional test has a + // PlatformTransactionManager in the app context (enforced by + // org.springframework.test.context.transaction.TransactionalTestExecutionListener). + // Providing a ReactiveNeo4jTransactionManager would be more appropriate, but won't + // allow the test to succeed. + @TestConfiguration(proxyBeanMethods = false) + static class ReactiveTransactionManagerConfiguration { + + @Bean(ReactiveNeo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME) + Neo4jTransactionManager reactiveTransactionManager(Driver driver, + DatabaseSelectionProvider databaseNameProvider) { + return new Neo4jTransactionManager(driver, databaseNameProvider); + } + + } + }