test(order): 주문 상세보기 WebMvc 테스트 작성
This commit is contained in:
@@ -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']
|
||||
|
||||
== 점주 서비스
|
||||
=== 주문 페이지
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user