Polish MongoDB integration tests
Move MongoDB container setup from tests to centralized configuration Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
committed by
Mahmoud Ben Hassine
parent
a3e59b526e
commit
dcf95987c9
@@ -23,7 +23,6 @@ import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.step.builder.StepBuilder;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.mongodb.MongoDatabaseFactory;
|
||||
@@ -31,14 +30,24 @@ import org.springframework.data.mongodb.MongoTransactionManager;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
|
||||
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
|
||||
import org.testcontainers.containers.MongoDBContainer;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
/**
|
||||
* @author Mahmoud Ben Hassine
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
class MongoDBIntegrationTestConfiguration {
|
||||
|
||||
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
|
||||
|
||||
@Bean(initMethod = "start")
|
||||
public MongoDBContainer mongoDBContainer() {
|
||||
return new MongoDBContainer(MONGODB_IMAGE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JobRepository jobRepository(MongoTemplate mongoTemplate, MongoTransactionManager transactionManager)
|
||||
throws Exception {
|
||||
@@ -60,8 +69,8 @@ class MongoDBIntegrationTestConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MongoDatabaseFactory mongoDatabaseFactory(@Value("${mongo.connectionString}") String connectionString) {
|
||||
return new SimpleMongoClientDatabaseFactory(connectionString + "/test");
|
||||
public MongoDatabaseFactory mongoDatabaseFactory(MongoDBContainer mongoDBContainer) {
|
||||
return new SimpleMongoClientDatabaseFactory(mongoDBContainer.getConnectionString() + "/test");
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -31,13 +31,8 @@ import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.testcontainers.containers.MongoDBContainer;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
@@ -45,22 +40,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
/**
|
||||
* @author Henning Pöttker
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
@DirtiesContext
|
||||
@Testcontainers(disabledWithoutDocker = true)
|
||||
@SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class)
|
||||
public class MongoDBJobExplorerIntegrationTests {
|
||||
|
||||
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
|
||||
|
||||
@Container
|
||||
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
|
||||
|
||||
@DynamicPropertySource
|
||||
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
|
||||
registry.add("mongo.connectionString", mongodb::getConnectionString);
|
||||
}
|
||||
|
||||
@BeforeAll
|
||||
static void setUp(@Autowired MongoTemplate mongoTemplate) {
|
||||
mongoTemplate.createCollection("BATCH_JOB_INSTANCE");
|
||||
|
||||
@@ -26,13 +26,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.index.Index;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.testcontainers.containers.MongoDBContainer;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.Job;
|
||||
@@ -45,22 +40,13 @@ import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
|
||||
/**
|
||||
* @author Mahmoud Ben Hassine
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
@DirtiesContext
|
||||
@Testcontainers(disabledWithoutDocker = true)
|
||||
@SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class)
|
||||
public class MongoDBJobRepositoryIntegrationTests {
|
||||
|
||||
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
|
||||
|
||||
@Container
|
||||
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
|
||||
|
||||
@DynamicPropertySource
|
||||
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
|
||||
registry.add("mongo.connectionString", mongodb::getConnectionString);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private MongoTemplate mongoTemplate;
|
||||
|
||||
|
||||
@@ -37,13 +37,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.mongodb.core.MongoOperations;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.testcontainers.containers.MongoDBContainer;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
@@ -51,22 +46,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
/**
|
||||
* @author Henning Pöttker
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
@DirtiesContext
|
||||
@Testcontainers(disabledWithoutDocker = true)
|
||||
@SpringJUnitConfig({ MongoDBIntegrationTestConfiguration.class, ExecutionContextDaoConfiguration.class })
|
||||
public class MongoExecutionContextDaoIntegrationTests {
|
||||
|
||||
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
|
||||
|
||||
@Container
|
||||
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
|
||||
|
||||
@DynamicPropertySource
|
||||
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
|
||||
registry.add("mongo.connectionString", mongodb::getConnectionString);
|
||||
}
|
||||
|
||||
@BeforeAll
|
||||
static void setUp(@Autowired MongoTemplate mongoTemplate) {
|
||||
mongoTemplate.createCollection("BATCH_JOB_INSTANCE");
|
||||
|
||||
Reference in New Issue
Block a user