Skip to content

Commit 9cafaba

Browse files
committed
feat: add RabbitMQ test with TestContainers
1 parent ed1b89a commit 9cafaba

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

domain/src/main/java/br/com/alura/marketplace/domain/usecase/CadastroProdutoUseCase.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public Produto cadastrar(Produto produto) {
3636
var produtoSalvo = produtoRepository.save(produto);
3737

3838
// queueRepository.notificarCadastro(produtoSalvo);
39+
3940
// return produtoSalvo;
4041

4142
return Produto.builder().build();

iandt/src/test/java/br/com/alura/marketplace/iandt/CadastroProdutoTest.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package br.com.alura.marketplace.iandt;
22

33
import br.com.alura.marketplace.application.Application;
4+
import br.com.alura.marketplace.domain.repository.ProdutoRepository;
45
import br.com.alura.marketplace.iandt.setup.LocalStackSetup;
56
import br.com.alura.marketplace.iandt.setup.PostgresSetup;
7+
import br.com.alura.marketplace.iandt.setup.RabbitMQSetup;
68
import br.com.alura.marketplace.iandt.setup.WiremockSetup;
79
import com.fasterxml.jackson.core.JsonProcessingException;
810
import com.fasterxml.jackson.databind.ObjectMapper;
911
import io.awspring.cloud.s3.S3Template;
1012
import io.restassured.RestAssured;
11-
import org.junit.jupiter.api.BeforeEach;
12-
import org.junit.jupiter.api.DisplayName;
13-
import org.junit.jupiter.api.Nested;
14-
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.api.*;
1514
import org.springframework.beans.factory.annotation.Autowired;
1615
import org.springframework.beans.factory.annotation.Value;
1716
import org.springframework.boot.test.context.SpringBootTest;
@@ -34,7 +33,7 @@
3433
@SpringBootTest(webEnvironment = RANDOM_PORT)
3534
@ContextConfiguration(classes = Application.class)
3635
@Testcontainers
37-
public class CadastroProdutoTest implements LocalStackSetup, WiremockSetup, PostgresSetup {
36+
public class CadastroProdutoTest implements LocalStackSetup, WiremockSetup, PostgresSetup, RabbitMQSetup {
3837

3938
@LocalServerPort
4039
Integer port;
@@ -45,6 +44,8 @@ public class CadastroProdutoTest implements LocalStackSetup, WiremockSetup, Post
4544
@Autowired
4645
S3Template s3Template;
4746

47+
@Autowired
48+
ProdutoRepository produtoRepository;
4849

4950
@Value("${aws.s3.bucket.name}")
5051
String bucketName;
@@ -58,6 +59,11 @@ void beforeEach() {
5859
}
5960
}
6061

62+
@AfterEach
63+
void afterEach() {
64+
produtoRepository.deleteAll();
65+
}
66+
6167

6268
@DisplayName("Quando criar um produto")
6369
@Nested
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package br.com.alura.marketplace.iandt.setup;
2+
3+
import org.junit.jupiter.api.BeforeAll;
4+
import org.springframework.test.context.DynamicPropertyRegistry;
5+
import org.springframework.test.context.DynamicPropertySource;
6+
import org.testcontainers.containers.RabbitMQContainer;
7+
import org.testcontainers.utility.DockerImageName;
8+
9+
public interface RabbitMQSetup {
10+
11+
RabbitMQContainer RABBIT_MQ = new RabbitMQContainer(DockerImageName.parse("rabbitmq:3.7.25-management-alpine"));
12+
13+
@DynamicPropertySource
14+
static void rabbitMQDynamicPropertySource(DynamicPropertyRegistry registry) {
15+
registry.add("spring.rabbitmq.host", RABBIT_MQ::getHost);
16+
registry.add("spring.rabbitmq.port", RABBIT_MQ::getAmqpPort);
17+
registry.add("spring.rabbitmq.username", RABBIT_MQ::getAdminUsername);
18+
registry.add("spring.rabbitmq.password", RABBIT_MQ::getAdminPassword);
19+
}
20+
21+
@BeforeAll
22+
static void rabbitMQBeforeAll() {
23+
RABBIT_MQ.start();
24+
}
25+
}

0 commit comments

Comments
 (0)