Skip to content

Commit a2c9f74

Browse files
author
Guilherme Biff Zarelli
committed
refactor: refactoring default container
1 parent 6f8b76f commit a2c9f74

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

acceptance-test/src/test/java/br/com/helpdev/atdd/AbstractContainerBaseTest.java renamed to acceptance-test/src/test/java/br/com/helpdev/atdd/DefaultContainerStarterTest.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.github.tomakehurst.wiremock.WireMockServer;
66
import io.restassured.RestAssured;
7+
import org.junit.jupiter.api.AfterEach;
78
import org.slf4j.LoggerFactory;
89
import org.testcontainers.Testcontainers;
910
import org.testcontainers.containers.GenericContainer;
@@ -14,52 +15,52 @@
1415
import org.testcontainers.lifecycle.Startable;
1516
import org.testcontainers.utility.MountableFile;
1617

17-
abstract class AbstractContainerBaseTest {
18+
abstract class DefaultContainerStarterTest {
1819

1920
private static final GenericContainer<?> APP;
2021
private static final GenericContainer<?> FLYWAY;
2122
private static final GenericContainer<?> MYSQL_CONTAINER;
23+
private static final Network NETWORK = Network.newNetwork();
2224
protected static final WireMockServer MOCK_SERVER;
2325

26+
/* Containers are initialized in static block to create only once in test execution */
2427
static {
25-
final var network = Network.newNetwork();
26-
2728
MOCK_SERVER = new WireMockServer(wireMockConfig().dynamicPort());
2829
MOCK_SERVER.start();
2930
exposeHostMachinePortToContainersForApiIntegrations();
3031

31-
MYSQL_CONTAINER = buildMySqlContainer(network);
32+
MYSQL_CONTAINER = buildMySqlContainer();
3233
MYSQL_CONTAINER.start();
3334

34-
FLYWAY = buildFlywayContainer(network, MYSQL_CONTAINER);
35+
FLYWAY = buildFlywayContainer(MYSQL_CONTAINER);
3536
FLYWAY.start();
3637

37-
APP = buildAppContainer(network, MYSQL_CONTAINER, FLYWAY);
38+
APP = buildAppContainer(MYSQL_CONTAINER, FLYWAY);
3839
APP.start();
3940

4041
initRestAssured();
4142
}
4243

43-
private static GenericContainer<?> buildMySqlContainer(final Network network) {
44+
private static GenericContainer<?> buildMySqlContainer() {
4445
return new MySQLContainer<>("mysql:5.7.22")
45-
.withNetwork(network)
46+
.withNetwork(NETWORK)
4647
.withNetworkAliases("testdb");
4748
}
4849

49-
private static GenericContainer<?> buildFlywayContainer(final Network network, final Startable... dependsOn) {
50+
private static GenericContainer<?> buildFlywayContainer(final Startable... dependsOn) {
5051
return new GenericContainer<>("flyway/flyway")
5152
.dependsOn(dependsOn)
52-
.withNetwork(network)
53+
.withNetwork(NETWORK)
5354
.withCopyFileToContainer(MountableFile.forHostPath("../resources/flyway/db"), "/flyway/sql")
5455
.withCommand("-url=jdbc:mysql://testdb?useSSL=false -schemas=test -user=test -password=test -connectRetries=60 migrate")
5556
.waitingFor(Wait.forLogMessage("(?s).*No migration necessary(?s).*|(?s).*Successfully applied(?s).*", 1))
5657
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("FLYWAY")));
5758
}
5859

59-
private static GenericContainer<?> buildAppContainer(final Network network, final Startable... dependsOn) {
60+
private static GenericContainer<?> buildAppContainer(final Startable... dependsOn) {
6061
return new GenericContainer<>("app-test:integration")
6162
.dependsOn(dependsOn)
62-
.withNetwork(network)
63+
.withNetwork(NETWORK)
6364
.withEnv("RANDOM_DATA_API_URL", "http://host.testcontainers.internal:" + MOCK_SERVER.port())
6465
.withEnv("MYSQL_USER", "test")
6566
.withEnv("MYSQL_PASSWORD", "test")
@@ -80,4 +81,10 @@ private static void exposeHostMachinePortToContainersForApiIntegrations() {
8081
Testcontainers.exposeHostPorts(MOCK_SERVER.port());
8182
}
8283

84+
@AfterEach
85+
void tearDown() {
86+
MOCK_SERVER.resetAll();
87+
/* add here others resets needed after each test */
88+
}
89+
8390
}

acceptance-test/src/test/java/br/com/helpdev/atdd/MessageV1EndpointIT.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package br.com.helpdev.atdd;
22

3-
import static br.com.helpdev.atdd.RandomDataApiMock.mockRandomIdNumber;
3+
import static br.com.helpdev.atdd.mock.RandomDataApiMock.mockRandomIdNumber;
44
import static io.restassured.RestAssured.given;
55
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;
66
import static org.hamcrest.CoreMatchers.equalTo;
@@ -13,7 +13,7 @@
1313
import java.time.ZonedDateTime;
1414
import org.junit.jupiter.api.Test;
1515

16-
class MessageV1EndpointIT extends AbstractContainerBaseTest {
16+
class MessageV1EndpointIT extends DefaultContainerStarterTest {
1717

1818
@Test
1919
void whenCreateNewScheduleThenReturn() {
@@ -65,6 +65,8 @@ void whenGetWithInvalidIdThenReturnError() {
6565

6666
@Test
6767
void whenDeleteMessageThenRemove() {
68+
mockRandomIdNumber(MOCK_SERVER);
69+
6870
var now = ZonedDateTime.now();
6971
Integer id = given()
7072
.contentType(ContentType.JSON)
@@ -99,6 +101,8 @@ void whenDeleteWithInvalidIdThenReturnError() {
99101

100102
@Test
101103
void whenCreateNewEmailScheduleThenReturn() {
104+
mockRandomIdNumber(MOCK_SERVER);
105+
102106
given()
103107
.contentType(ContentType.JSON)
104108
.body(buildMessage(ZonedDateTime.now(), CommunicationChannelDto.EMAIL))
@@ -114,6 +118,8 @@ void whenCreateNewEmailScheduleThenReturn() {
114118

115119
@Test
116120
void whenCreateNewPushScheduleThenReturn() {
121+
mockRandomIdNumber(MOCK_SERVER);
122+
117123
given()
118124
.contentType(ContentType.JSON)
119125
.body(buildMessage(ZonedDateTime.now(), CommunicationChannelDto.PUSH))
@@ -129,6 +135,8 @@ void whenCreateNewPushScheduleThenReturn() {
129135

130136
@Test
131137
void whenCreateNewSmsScheduleThenReturn() {
138+
mockRandomIdNumber(MOCK_SERVER);
139+
132140
given()
133141
.contentType(ContentType.JSON)
134142
.body(buildMessage(ZonedDateTime.now(), CommunicationChannelDto.SMS))

acceptance-test/src/test/java/br/com/helpdev/atdd/RandomDataApiMock.java renamed to acceptance-test/src/test/java/br/com/helpdev/atdd/mock/RandomDataApiMock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package br.com.helpdev.atdd;
1+
package br.com.helpdev.atdd.mock;
22

33
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
44
import static com.github.tomakehurst.wiremock.client.WireMock.get;

0 commit comments

Comments
 (0)