From 3afe6b0adf6dee196a0264ff4961abf5f1dcf32f Mon Sep 17 00:00:00 2001 From: bum12ark Date: Mon, 21 Mar 2022 18:35:00 +0900 Subject: [PATCH] =?UTF-8?q?test(order):=20=EC=A3=BC=EB=AC=B8=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20WebMvc=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order-service/src/docs/asciidoc/api-docs.adoc | 2 + .../domain/order/web/OrderControllerTest.java | 105 +++++++++++++++++- 2 files changed, 103 insertions(+), 4 deletions(-) diff --git a/order-service/src/docs/asciidoc/api-docs.adoc b/order-service/src/docs/asciidoc/api-docs.adoc index f5c4776..8052a28 100644 --- a/order-service/src/docs/asciidoc/api-docs.adoc +++ b/order-service/src/docs/asciidoc/api-docs.adoc @@ -67,6 +67,8 @@ domain-httpRequestCode-etc == 주문 === 주문 수정 operation::order-patch[snippets='curl-request,http-request,http-response,path-parameters,request-fields,response-fields'] +=== 주문 상세보기 +operation::api-orderDetail[snippets='curl-request,http-request,http-response,path-parameters,response-fields'] == 점주 서비스 === 주문 페이지 diff --git a/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderControllerTest.java b/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderControllerTest.java index b17c477..89ad9ee 100644 --- a/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderControllerTest.java +++ b/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderControllerTest.java @@ -1,12 +1,12 @@ package com.justpickup.orderservice.domain.order.web; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.justpickup.orderservice.config.TestConfig; +import com.justpickup.orderservice.domain.order.dto.OrderDetailDto; import com.justpickup.orderservice.domain.order.entity.OrderStatus; -import com.justpickup.orderservice.domain.order.repository.OrderRepository; import com.justpickup.orderservice.domain.order.service.OrderService; import com.justpickup.orderservice.domain.order.web.OrderController.PatchOrderRequest; +import com.justpickup.orderservice.global.client.store.OptionType; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -18,11 +18,14 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import static org.junit.jupiter.api.Assertions.*; +import java.time.LocalDateTime; +import java.util.List; + +import static org.mockito.BDDMockito.given; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.patch; import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @@ -77,4 +80,98 @@ class OrderControllerTest { ; } + + @Test + @DisplayName("[GET] 주문 상세 내역 가져오기") + void getOrderDetail() throws Exception { + // GIVEN + Long orderId = 1589L; + + given(orderService.findOrderDetail(orderId)).willReturn(getOrderDetailWillReturn(orderId)); + // THEN + ResultActions actions = mockMvc.perform(get("/api/order-detail/{orderId}", String.valueOf(orderId))); + // WHEN + actions.andExpect(status().isOk()) + .andDo(print()) + .andDo(document("api-orderDetail", + pathParameters( + parameterWithName("orderId").description("주문 고유번호") + ), + responseFields( + fieldWithPath("code").description("결과코드 SUCCESS/ERROR"), + fieldWithPath("message").description("메세지"), + fieldWithPath("data.id").description("주문 고유번호"), + fieldWithPath("data.orderTime").description("주문 시간 [yyy-MM-dd]"), + fieldWithPath("data.orderPrice").description("주문 금액"), + fieldWithPath("data.user.id").description("주문한 회원 고유번호"), + fieldWithPath("data.user.name").description("주문한 회원 이름"), + fieldWithPath("data.user.phoneNumber").description("주문한 회원 전화번호"), + fieldWithPath("data.orderItems[*].id").description("주문아이템 고유번호"), + fieldWithPath("data.orderItems[*].itemId").description("아이템 고유번호"), + fieldWithPath("data.orderItems[*].totalPrice").description("주문아이템 총합계"), + fieldWithPath("data.orderItems[*].count").description("주문아이템 수량"), + fieldWithPath("data.orderItems[*].name").description("아이템 이름"), + fieldWithPath("data.orderItems[*].options[*].id").description("주문아이템옵션 고유번호"), + fieldWithPath("data.orderItems[*].options[*].itemOptionId").description("아이템옵션 고유번호"), + fieldWithPath("data.orderItems[*].options[*].name").description("아이템옵션 이름"), + fieldWithPath("data.orderItems[*].options[*].optionType").description("아이템옵션 타입") + ) + )) + ; + } + + private OrderDetailDto getOrderDetailWillReturn(Long orderId) { + OrderDetailDto.OrderDetailUser orderDetailUser = OrderDetailDto.OrderDetailUser.builder() + .id(6L) + .name("박상범") + .phoneNumber("010-1234-5678") + .build(); + + long id = 11371L; + long itemOptionId = 40L; + OrderDetailDto.OrderDetailItemOption ice = OrderDetailDto.OrderDetailItemOption.builder() + .id(id++) + .itemOptionId(itemOptionId++) + .name("ICE") + .optionType(OptionType.REQUIRED) + .build(); + + OrderDetailDto.OrderDetailItemOption hot = OrderDetailDto.OrderDetailItemOption.builder() + .id(id++) + .itemOptionId(itemOptionId++) + .name("HOT") + .optionType(OptionType.REQUIRED) + .build(); + + OrderDetailDto.OrderDetailItemOption plus = OrderDetailDto.OrderDetailItemOption.builder() + .id(id++) + .itemOptionId(itemOptionId++) + .name("시럽 추가") + .optionType(OptionType.OTHER) + .build(); + + OrderDetailDto.OrderDetailItem 카페라떼 = OrderDetailDto.OrderDetailItem.builder() + .id(id++) + .itemId(itemOptionId++) + .count(2) + .name("카페라떼") + .options(List.of(hot, plus)) + .build(); + + OrderDetailDto.OrderDetailItem 아메리카노 = OrderDetailDto.OrderDetailItem.builder() + .id(id++) + .itemId(itemOptionId++) + .count(2) + .options(List.of(ice)) + .name("아메리카노") + .build(); + + return OrderDetailDto.builder() + .id(orderId) + .orderTime(LocalDateTime.now()) + .orderPrice(76600L) + .user(orderDetailUser) + .orderItems(List.of(카페라떼, 아메리카노)) + .build(); + } } \ No newline at end of file