Add support of reactive repositories with `@DataMongoTest`
Closes gh-8280
This commit is contained in:
		
							parent
							
								
									50553137d3
								
							
						
					
					
						commit
						ce6372c46f
					
				| 
						 | 
				
			
			@ -28,7 +28,7 @@ import org.springframework.context.annotation.Import;
 | 
			
		|||
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
 | 
			
		||||
import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories;
 | 
			
		||||
import org.springframework.data.mongodb.repository.config.ReactiveMongoRepositoryConfigurationExtension;
 | 
			
		||||
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
 | 
			
		||||
import org.springframework.data.mongodb.repository.support.ReactiveMongoRepositoryFactoryBean;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Mongo Reactive
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ import org.springframework.data.mongodb.repository.support.MongoRepositoryFactor
 | 
			
		|||
 */
 | 
			
		||||
@Configuration
 | 
			
		||||
@ConditionalOnClass({ MongoClient.class, ReactiveMongoRepository.class })
 | 
			
		||||
@ConditionalOnMissingBean({ MongoRepositoryFactoryBean.class,
 | 
			
		||||
@ConditionalOnMissingBean({ ReactiveMongoRepositoryFactoryBean.class,
 | 
			
		||||
		ReactiveMongoRepositoryConfigurationExtension.class })
 | 
			
		||||
@ConditionalOnProperty(prefix = "spring.data.mongodb.reactive-repositories", name = "enabled", havingValue = "true", matchIfMissing = true)
 | 
			
		||||
@Import(ReactiveMongoRepositoriesAutoConfigureRegistrar.class)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,6 +142,11 @@
 | 
			
		|||
			<artifactId>h2</artifactId>
 | 
			
		||||
			<scope>test</scope>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>io.projectreactor</groupId>
 | 
			
		||||
			<artifactId>reactor-core</artifactId>
 | 
			
		||||
			<scope>test</scope>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.aspectj</groupId>
 | 
			
		||||
			<artifactId>aspectjrt</artifactId>
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +162,16 @@
 | 
			
		|||
			<artifactId>hsqldb</artifactId>
 | 
			
		||||
			<scope>test</scope>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.mongodb</groupId>
 | 
			
		||||
			<artifactId>mongodb-driver-async</artifactId>
 | 
			
		||||
			<optional>true</optional>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.mongodb</groupId>
 | 
			
		||||
			<artifactId>mongodb-driver-reactivestreams</artifactId>
 | 
			
		||||
			<optional>true</optional>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.skyscreamer</groupId>
 | 
			
		||||
			<artifactId>jsonassert</artifactId>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,10 @@ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
 | 
			
		|||
org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo=\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.mongo.ReactiveMongoDataAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.mongo.ReactiveMongoRepositoriesAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.mongo.ReactiveMongoAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration
 | 
			
		||||
 | 
			
		||||
# AutoConfigureJdbc auto-configuration imports
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2017 the original author or authors.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *      http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.springframework.boot.test.autoconfigure.data.mongo;
 | 
			
		||||
 | 
			
		||||
import org.junit.Rule;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.rules.ExpectedException;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
 | 
			
		||||
import org.springframework.test.context.junit4.SpringRunner;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sample tests for {@link DataMongoTest} using reactive repositories.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Stephane Nicoll
 | 
			
		||||
 */
 | 
			
		||||
@RunWith(SpringRunner.class)
 | 
			
		||||
@DataMongoTest
 | 
			
		||||
public class DataMongoTestReactiveIntegrationTests {
 | 
			
		||||
 | 
			
		||||
	@Rule
 | 
			
		||||
	public ExpectedException thrown = ExpectedException.none();
 | 
			
		||||
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private ReactiveMongoTemplate mongoTemplate;
 | 
			
		||||
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private ExampleReactiveRepository exampleRepository;
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testRepository() {
 | 
			
		||||
		ExampleDocument exampleDocument = new ExampleDocument();
 | 
			
		||||
		exampleDocument.setText("Look, new @DataMongoTest!");
 | 
			
		||||
		exampleDocument = this.exampleRepository.save(exampleDocument).block();
 | 
			
		||||
		assertThat(exampleDocument.getId()).isNotNull();
 | 
			
		||||
		assertThat(this.mongoTemplate.collectionExists("exampleDocuments").block())
 | 
			
		||||
				.isTrue();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2017 the original author or authors.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *      http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.springframework.boot.test.autoconfigure.data.mongo;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example reactive repository used with {@link DataMongoTest} tests.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Stephane Nicoll
 | 
			
		||||
 */
 | 
			
		||||
public interface ExampleReactiveRepository
 | 
			
		||||
		extends ReactiveMongoRepository<ExampleDocument, String> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue