introduces proper setting for testcontainers (TBD - profile)
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -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>
|
||||
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user