introduces proper setting for testcontainers (TBD - profile)

This commit is contained in:
szsa
2022-05-17 20:16:34 +02:00
parent cbeac683d8
commit d4bd59141b
4 changed files with 18 additions and 26 deletions

View File

@@ -72,6 +72,7 @@
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>3.4.5</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -1,12 +1,11 @@
spring:
application:
name: reactive-timesheet-app
data:
mongodb:
database: db_1
host: localhost
port: 27017
# data:
# database: db_1
# host: localhost
# port: 27017
mongodb:
embedded:
version: 3.6.5
version: 3.4.5

View File

@@ -1,5 +1,6 @@
package net.szymonsawicki.reactivetimesheetapp.application.service;
import net.szymonsawicki.reactivetimesheetapp.application.service.utils.TimesheetAppMongoDbContainer;
import net.szymonsawicki.reactivetimesheetapp.domain.team.Team;
import net.szymonsawicki.reactivetimesheetapp.domain.team.TeamUtils;
import net.szymonsawicki.reactivetimesheetapp.domain.team.repository.TeamRepository;
@@ -8,28 +9,23 @@ import net.szymonsawicki.reactivetimesheetapp.domain.user.repository.UserReposit
import net.szymonsawicki.reactivetimesheetapp.domain.user.type.Role;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.testcontainers.containers.MongoDBContainer;
import org.testcontainers.junit.jupiter.Container;
import reactor.test.StepVerifier;
import java.util.List;
@SpringBootTest
@AutoConfigureDataMongo
// @Testcontainers
// @DataMongoTest
public class TeamServiceTest {
/*
@Container
private static final MongoDBContainer MONGO_DB_CONTAINER = AppMongoDbContainer.getInstance();*/
private static final MongoDBContainer MONGO_DB_CONTAINER = TimesheetAppMongoDbContainer.getInstance();
@Autowired
private TeamRepository teamRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private MongoTemplate mongoTemplate;
@Test
void shouldReturnTeamOnGetById() {
@@ -47,15 +43,16 @@ public class TeamServiceTest {
.build();
var team = Team.builder()
.id(teamId)
.name(teamName)
.members(List.of(member))
.build();
var insertedTeam = teamRepository.save(team);
var insertedTeamId = TeamUtils.toId.apply(teamRepository.save(team).block());
var insertedTeamId = TeamUtils.toId.apply(insertedTeam.block());
StepVerifier.create(teamRepository.findById(insertedTeamId))
.expectNextMatches(t -> TeamUtils.toMembers.apply(t).size() == 1)
.verifyComplete();
}
}

View File

@@ -2,7 +2,7 @@ package net.szymonsawicki.reactivetimesheetapp.application.service.utils;
import org.testcontainers.containers.MongoDBContainer;
public class AppMongoDbContainer extends MongoDBContainer {
public class TimesheetAppMongoDbContainer extends MongoDBContainer {
private static final String IMAGE_VERSION = "mongo:4.0.10";
@@ -10,23 +10,18 @@ public class AppMongoDbContainer extends MongoDBContainer {
public static synchronized MongoDBContainer getInstance() {
if (container == null) {
container = new AppMongoDbContainer()
.withEnv("MONGO_DB_HOST", "mongodb")
.withExposedPorts(27017);
container = new TimesheetAppMongoDbContainer();
}
return container;
}
private AppMongoDbContainer() {
private TimesheetAppMongoDbContainer() {
super(IMAGE_VERSION);
}
@Override
public void start() {
super.start();
System.setProperty("spring.data.mongodb.host", container.getHost());
System.setProperty("spring.data.mongodb.port", String.valueOf(container.getBoundPortNumbers()));
System.setProperty("spring.data.mongodb.database", "db_1");
}
@Override