This repository has been archived by the owner on Aug 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* Build : configuration * Test : * Chore : format 탭 수정 * Chore : google java format 적용 * Format : Google Java Format * Feat : RabbitMQ 프로듀서의 MessageConverter 오버라이드 * Feat : 신규주문 MessageProducer부터 > RabbitMQ 까지테스트 * Feat : MessageProducer 빈등록 + 생성방법 변경 * Format : Google Java Format * Feat : RabbitMQ 테스트컨테이너 활용 * Feat : formatting * Format : Google Java Format * Refactor : 미사용 설정정보 삭제 * Fix : 임시주석 * Format : Google Java Format * Fix : syntax error * Fix : 잘못된 static import any() * Format : Google Java Format Co-authored-by: github-actions <>
- Loading branch information
1 parent
187e27b
commit 21c2359
Showing
6 changed files
with
124 additions
and
31 deletions.
There are no files selected for viewing
91 changes: 91 additions & 0 deletions
91
...src/integrationTest/java/com/inbobwetrust/publisher/DeliveryMessagePublisherImplTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
package com.inbobwetrust.publisher; | ||
|
||
import static org.junit.Assert.assertTrue; | ||
import static org.mockito.ArgumentMatchers.any; | ||
import static org.mockito.Mockito.times; | ||
|
||
import com.inbobwetrust.domain.Delivery; | ||
import com.inbobwetrust.repository.DeliveryRepository; | ||
import java.time.LocalDateTime; | ||
import org.junit.jupiter.api.Test; | ||
import org.mockito.ArgumentMatchers; | ||
import org.mockito.Mockito; | ||
import org.springframework.amqp.core.AmqpTemplate; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.boot.test.mock.mockito.SpyBean; | ||
import org.springframework.test.context.ContextConfiguration; | ||
import org.springframework.test.context.DynamicPropertyRegistry; | ||
import org.springframework.test.context.DynamicPropertySource; | ||
import org.springframework.test.web.reactive.server.WebTestClient; | ||
import org.testcontainers.containers.RabbitMQContainer; | ||
import org.testcontainers.junit.jupiter.Container; | ||
import org.testcontainers.junit.jupiter.Testcontainers; | ||
|
||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) | ||
@AutoConfigureWebTestClient | ||
@Testcontainers | ||
@ContextConfiguration | ||
public class DeliveryMessagePublisherImplTest { | ||
|
||
@Value("messageQueue.exchange.shop") | ||
private String shopExchange; | ||
|
||
@Value("messageQueue.exchange.agency") | ||
private String agencyExchange; | ||
|
||
@Autowired WebTestClient webTestClient; | ||
|
||
@Autowired DeliveryRepository deliveryRepository; | ||
|
||
@Container | ||
static RabbitMQContainer container = new RabbitMQContainer("rabbitmq:3.7.25-management-alpine"); | ||
|
||
@SpyBean AmqpTemplate amqpTemplate; | ||
|
||
@DynamicPropertySource | ||
static void configure(DynamicPropertyRegistry registry) { | ||
registry.add("spring.rabbitmq.host", container::getContainerIpAddress); | ||
registry.add("spring.rabbitmq.port", container::getAmqpPort); | ||
} | ||
|
||
@Test | ||
void sendAddDeliveryEventTest() throws InterruptedException { | ||
// given | ||
var delivery = makeValidDelivery(); | ||
// when | ||
var resBody = | ||
this.webTestClient | ||
.post() | ||
.uri("/api/delivery") | ||
.bodyValue(delivery) | ||
.exchange() | ||
.expectStatus() | ||
.isOk() | ||
.expectBody(Delivery.class) | ||
.returnResult() | ||
.getResponseBody(); | ||
|
||
Thread.sleep(1000L); | ||
// then | ||
var savedDelivery = deliveryRepository.findAll().blockLast(); | ||
delivery.setId(savedDelivery.getId()); | ||
assertTrue(delivery.getShopId().equals(savedDelivery.getShopId())); | ||
assertTrue(delivery.getCustomerId().equals(savedDelivery.getCustomerId())); | ||
Mockito.verify(amqpTemplate, times(1)) | ||
.convertAndSend(ArgumentMatchers.eq(shopExchange), any(Delivery.class)); | ||
} | ||
|
||
private Delivery makeValidDelivery() { | ||
return Delivery.builder() | ||
.shopId("shop1234") | ||
.orderId("order-1234") | ||
.customerId("customer-1234") | ||
.address("서울시 강남구 삼성동 봉은사로 12-41") | ||
.phoneNumber("01031583212") | ||
.orderTime(LocalDateTime.now()) | ||
.build(); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
delivery-info-service/src/main/java/com/inbobwetrust/config/Jack2JsonConfiguration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.inbobwetrust.config; | ||
|
||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | ||
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
|
||
@Configuration | ||
public class Jack2JsonConfiguration { | ||
|
||
@Bean | ||
public Jackson2JsonMessageConverter jsonMessageConverter() { | ||
return new Jackson2JsonMessageConverter( | ||
new ObjectMapper().registerModule(new JavaTimeModule())); | ||
} | ||
} |
25 changes: 8 additions & 17 deletions
25
...y-info-service/src/main/java/com/inbobwetrust/publisher/DeliveryMessagePublisherImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters