Skip to content

Commit

Permalink
test: 어드민 주문단 restdoc 테스트 코드 완성 및 스키마, 태그 처리
Browse files Browse the repository at this point in the history
  • Loading branch information
cofls6581 committed Aug 31, 2023
1 parent 191f779 commit 2fbacb6
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.document
import com.epages.restdocs.apispec.ResourceDocumentation.parameterWithName
import com.epages.restdocs.apispec.ResourceDocumentation.resource
import com.epages.restdocs.apispec.ResourceSnippetParametersBuilder
import com.epages.restdocs.apispec.Schema
import com.higoods.api.common.BaseControllerTest
import com.higoods.api.order.controller.OrderAdminController
import com.higoods.api.order.dto.response.OrderAdminResponse
Expand All @@ -16,13 +17,12 @@ import io.mockk.mockk
import org.springframework.data.domain.PageImpl
import org.springframework.data.domain.PageRequest
import org.springframework.http.MediaType
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post
import org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest
import org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse
import org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint
import org.springframework.restdocs.payload.JsonFieldType
import org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import org.springframework.test.web.servlet.result.MockMvcResultMatchers

class OrderAdminControllerTest : BaseControllerTest() {
Expand All @@ -33,12 +33,21 @@ class OrderAdminControllerTest : BaseControllerTest() {

init {
test("주문 취소") {
val orderId = 1L
val orderAdminResponse =
OrderAdminResponse(
orderNo = "H100001",
name = "이홍익",
depositName = "이홍익",
createdAt = "23.08.27 03:15",
phoneNum = "010-1111-2222",
totalCost = 10000,
orderState = OrderState.PENDING
)

every { orderCancelUseCase.execute(orderId) } returns orderId
every { orderCancelUseCase.execute(1L) } returns orderAdminResponse

mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/admins/orders/{order_id}/cancellations", 1L)
post("/v1/admins/orders/{order_id}/cancellations", 1L)
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
)
Expand All @@ -50,26 +59,43 @@ class OrderAdminControllerTest : BaseControllerTest() {
preprocessResponse(prettyPrint()),
resource(
ResourceSnippetParametersBuilder()
.description("총대가 주문을 취소합니다.")
.description("[어드민] 주문 취소 API")
.tag("[어드민] 주문")
.pathParameters(
parameterWithName("order_id").description("주문 id")
)
.responseFields(
fieldWithPath("orderId").type(JsonFieldType.NUMBER).description("주문 id")
fieldWithPath("orderNo").description("주문 번호"),
fieldWithPath("name").description("이름"),
fieldWithPath("depositName").description("입금자명"),
fieldWithPath("createdAt").description("주문 일시"),
fieldWithPath("phoneNum").description("전화번호"),
fieldWithPath("totalCost").description("총 금액"),
fieldWithPath("orderState").description("주문 상태")
)
.responseSchema(Schema.schema("[어드민] 주문 취소 Res"))
.build()
)
)
)
}

test("입금 승인") {
val orderId = 1L
val orderAdminResponse =
OrderAdminResponse(
orderNo = "H100001",
name = "이홍익",
depositName = "이홍익",
createdAt = "23.08.27 03:15",
phoneNum = "010-1111-2222",
totalCost = 10000,
orderState = OrderState.PENDING
)

every { orderApproveUseCase.execute(1) } returns orderId
every { orderApproveUseCase.execute(1L) } returns orderAdminResponse

mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/admins/orders/{order_id}/approvals", 1)
post("/v1/admins/orders/{order_id}/approvals", 1L)
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
)
Expand All @@ -82,12 +108,21 @@ class OrderAdminControllerTest : BaseControllerTest() {
resource(
ResourceSnippetParametersBuilder()
.description("총대가 입금을 승인합니다.")
.tag("[어드민] 주문")
.pathParameters(
parameterWithName("order_id").description("주문 id")
)
.responseFields(
fieldWithPath("orderId").type(JsonFieldType.NUMBER).description("주문 id")
).build()
fieldWithPath("orderNo").description("주문 번호"),
fieldWithPath("name").description("이름"),
fieldWithPath("depositName").description("입금자명"),
fieldWithPath("createdAt").description("주문 일시"),
fieldWithPath("phoneNum").description("전화번호"),
fieldWithPath("totalCost").description("총 금액"),
fieldWithPath("orderState").description("주문 상태")
)
.responseSchema(Schema.schema("[어드민] 입금 승인 Res"))
.build()
)
)
)
Expand All @@ -105,9 +140,7 @@ class OrderAdminControllerTest : BaseControllerTest() {
totalCost = 10000,
orderState = OrderState.PENDING
)
),
PageRequest.of(1, 6),
10 // 전체 아이템 개수
)
)

every { orderReadUseCase.findByStateAndName(1, OrderState.PENDING, null, PageRequest.of(1, 6)) } returns orderAdminResponse
Expand All @@ -130,9 +163,16 @@ class OrderAdminControllerTest : BaseControllerTest() {
resource(
ResourceSnippetParametersBuilder()
.description("[어드민] 명단 관리-입금 확인 목록 API")
.tag("[어드민] 주문")
.pathParameters(
parameterWithName("project_id").description("프로젝트 id")
)
.requestParameters(
parameterWithName("state").description("state"),
parameterWithName("name").description("name").optional(),
parameterWithName("page").description("page"),
parameterWithName("size").description("size")
)
.responseFields(
fieldWithPath("content[]").description("주문 목록"),
fieldWithPath("content[].orderNo").description("주문 번호"),
Expand All @@ -143,8 +183,19 @@ class OrderAdminControllerTest : BaseControllerTest() {
fieldWithPath("content[].totalCost").description("총 금액"),
fieldWithPath("content[].orderState").description("주문 상태"),
fieldWithPath("pageable").description("페이지 정보"),
fieldWithPath("totalElements").description("전체 주문 개수")
fieldWithPath("totalElements").description("전체 주문 개수"),
fieldWithPath("totalPages").description("전체 페이지 수"),
fieldWithPath("last").description("마지막 페이지 여부"),
fieldWithPath("number").description("현재 페이지 번호"),
fieldWithPath("size").description("페이지 크기"),
fieldWithPath("sort.empty").description("정렬 필드가 비어있는지 여부"),
fieldWithPath("sort.unsorted").description("정렬된 상태 여부"),
fieldWithPath("sort.sorted").description("정렬되지 않은 상태 여부"),
fieldWithPath("first").description("첫 페이지 여부"),
fieldWithPath("numberOfElements").description("현재 페이지의 요소 수"),
fieldWithPath("empty").description("데이터 비어있음 여부")
)
.responseSchema(Schema.schema("[어드민] 명단 관리-입금 확인 목록 Res"))
.build()
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.document
import com.epages.restdocs.apispec.ResourceDocumentation.parameterWithName
import com.epages.restdocs.apispec.ResourceDocumentation.resource
import com.epages.restdocs.apispec.ResourceSnippetParametersBuilder
import com.epages.restdocs.apispec.Schema
import com.higoods.api.common.BaseControllerTest
import com.higoods.api.order.controller.OrderController
import com.higoods.api.order.dto.request.OrderAnswerDto
Expand Down Expand Up @@ -81,7 +82,8 @@ class OrderControllerTest : BaseControllerTest() {
preprocessResponse(prettyPrint()),
resource(
ResourceSnippetParametersBuilder()
.description("유저가 주문을 생성합니다.")
.description("주문 생성 API")
.tag("주문")
.pathParameters(
parameterWithName("project_id").description("프로젝트 id")
)
Expand Down Expand Up @@ -121,7 +123,10 @@ class OrderControllerTest : BaseControllerTest() {
fieldWithPath("orderAnswers[].answerType").type(JsonFieldType.STRING).description("커스텀 주문폼 정보").optional(),
fieldWithPath("orderAnswers[].multipleChoiceId").type(JsonFieldType.NUMBER).description("커스텀 주문폼 정보").optional(),
fieldWithPath("orderAnswers[].shortAnswer").type(JsonFieldType.STRING).description("커스텀 주문폼 정보").optional()
).build()
)
.requestSchema(Schema.schema("주문 생성 Req"))
.responseSchema(Schema.schema("주문 생성 Res"))
.build()
)
)
)
Expand Down Expand Up @@ -153,14 +158,16 @@ class OrderControllerTest : BaseControllerTest() {
preprocessResponse(prettyPrint()),
resource(
ResourceSnippetParametersBuilder()
.description("마이페이지-내 주문 목록을 조회합니다.")
.description("마이페이지-내 주문 목록 조회 API")
.tag("주문")
.responseFields(
fieldWithPath("[].orderId").type(JsonFieldType.NUMBER).description("주문 id"),
fieldWithPath("[].title").type(JsonFieldType.STRING).description("제목"),
fieldWithPath("[].titleImage").type(JsonFieldType.STRING).description("이미지"),
fieldWithPath("[].subTitle").type(JsonFieldType.STRING).description("부제목"),
fieldWithPath("[].orderState").type(JsonFieldType.STRING).description("주문 상태")
)
.responseSchema(Schema.schema("마이페이지-내 주문 목록 조회 Res"))
.build()
)
)
Expand All @@ -184,7 +191,8 @@ class OrderControllerTest : BaseControllerTest() {
preprocessResponse(prettyPrint()),
resource(
ResourceSnippetParametersBuilder()
.description("내 주문을 상세 조회합니다.")
.description("내 주문 상세 조회 API")
.tag("주문")
.pathParameters(
parameterWithName("order_id").description("주문 id")
)
Expand All @@ -207,6 +215,7 @@ class OrderControllerTest : BaseControllerTest() {
fieldWithPath("orderAnswers[].multipleChoiceId").type(JsonFieldType.NUMBER).description("커스텀 주문폼 정보").optional(),
fieldWithPath("orderAnswers[].shortAnswer").type(JsonFieldType.STRING).description("커스텀 주문폼 정보").optional()
)
.responseSchema(Schema.schema("내 주문 상세 조회 Res"))
.build()
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class TestControllerTest : BaseControllerTest() {
resource(
ResourceSnippetParametersBuilder()
.description("이번엔 되겠지")
.tag("테스트")
.responseFields(
fieldWithPath("id").type(JsonFieldType.NUMBER).description("id"),
fieldWithPath("name").type(JsonFieldType.STRING).description("이름"),
Expand Down

0 comments on commit 2fbacb6

Please sign in to comment.