Skip to content

Commit

Permalink
Merge pull request #60 from KUSITMS-30th-TEAM-A/feature/#59/add-descr…
Browse files Browse the repository at this point in the history
…iption

[feat] : 테스트 코드를 수정하여 REST Docs에 설명을 추가한다
  • Loading branch information
bbbang105 authored Nov 8, 2024
2 parents 9cf4482 + 7662a57 commit 298e83d
Show file tree
Hide file tree
Showing 6 changed files with 172 additions and 130 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ public void getGuideChatbotAnswer() throws Exception {
.tag("Chatbot")
.description("가이드 챗봇 답변을 조회한다.")
.queryParameters(
parameterWithName("stadiumName").description("경기장 이름"),
parameterWithName("categoryName").description("카테고리 이름"),
parameterWithName("orderNumber").description("질문 번호")
parameterWithName("stadiumName").description("경기장 이름 [예시: lg]"),
parameterWithName("categoryName").description("카테고리 이름 [예시: stadium]"),
parameterWithName("orderNumber").description("질문 번호 [예시: 3 (NUMBER type)]")
)
.responseFields(
fieldWithPath("isSuccess").type(JsonFieldType.BOOLEAN).description("성공 여부"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders;
import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.test.web.servlet.ResultActions;

import java.util.List;
Expand All @@ -37,7 +38,13 @@ public class EntertainmentControllerTest extends ControllerTestConfig {
@DisplayName("해당 구장의 즐길거리 목록을 조회한다.")
public void getSuitableEntertainments() throws Exception {

GetEntertainmentsResponseDto.EntertainmentDto entertainmentDto = new GetEntertainmentsResponseDto.EntertainmentDto("테스트이미지", Boundary.INTERIOR, "포토카드", List.of("선수들의 사진을 뽑을 수 있는 포토카드! 경기 시작 전에 포토카드 기계로 가서 포토카드를 뽑을 수 있어요."),List.of("기계의 QR을 통해 원하는 선수나, 자신의 사진으로 커스텀 포토카드를 뽑을 수 있으니 참고하세요!"));
GetEntertainmentsResponseDto.EntertainmentDto entertainmentDto = new GetEntertainmentsResponseDto.EntertainmentDto(
"테스트이미지",
Boundary.INTERIOR,
"포토카드",
List.of("선수들의 사진을 뽑을 수 있는 포토카드! 경기 시작 전에 포토카드 기계로 가서 포토카드를 뽑을 수 있어요."),
List.of("기계의 QR을 통해 원하는 선수나, 자신의 사진으로 커스텀 포토카드를 뽑을 수 있으니 참고하세요!")
);
GetEntertainmentsResponseDto getEntertainmentsResponseDto = GetEntertainmentsResponseDto.of(List.of(entertainmentDto));

Mockito.when(entertainmentService.getSuitableEntertainments(anyString(), anyString())).thenReturn(getEntertainmentsResponseDto);
Expand All @@ -53,7 +60,7 @@ public void getSuitableEntertainments() throws Exception {
resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("$.isSuccess").value(true))
.andExpect(jsonPath("$.code").value(200))
.andExpect(jsonPath("$.code").value("200"))
.andExpect(jsonPath("$.message").value("구장내부 즐길거리 조회가 완료되었습니다."))
.andExpect(jsonPath("$.payload.entertainments[0].imgUrl").value("테스트이미지"))
.andExpect(jsonPath("$.payload.entertainments[0].boundary").value("INTERIOR"))
Expand All @@ -69,24 +76,23 @@ public void getSuitableEntertainments() throws Exception {
.tag("Culture")
.description("해당 구장의 즐길거리 목록을 조회한다.")
.queryParameters(
parameterWithName("stadiumName").description("구장명"),
parameterWithName("boundary").description("구장 영역(내부 or 외부)")
parameterWithName("stadiumName").description("구장명 [예시 : 잠실종합운동장]"),
parameterWithName("boundary").description("구장 영역 (내부 or 외부) [예시 : 내부]")
)
.responseFields(
fieldWithPath("isSuccess").description("성공 여부"),
fieldWithPath("code").description("응답 코드"),
fieldWithPath("message").description("응답 메시지"),
fieldWithPath("payload").description("응답 데이터").optional(),
fieldWithPath("payload.entertainments[].imgUrl").description("해당 즐길거리의 이미지 Url"),
fieldWithPath("payload.entertainments[].boundary").description("해당 즐길거리의 영역(내부 or 외부)"),
fieldWithPath("payload.entertainments[].name").description("해당 즐길거리의 이름"),
fieldWithPath("payload.entertainments[].explanations[]").description("해당 즐길거리의 설명"),
fieldWithPath("payload.entertainments[].tips[]").description("해당 즐길거리의 팁")

fieldWithPath("isSuccess").type(JsonFieldType.BOOLEAN).description("성공 여부"),
fieldWithPath("code").type(JsonFieldType.STRING).description("응답 코드"),
fieldWithPath("message").type(JsonFieldType.STRING).description("응답 메시지"),
fieldWithPath("payload").type(JsonFieldType.OBJECT).description("응답 데이터").optional(),
fieldWithPath("payload.entertainments[].imgUrl").type(JsonFieldType.STRING).description("해당 즐길거리의 이미지 URL"),
fieldWithPath("payload.entertainments[].boundary").type(JsonFieldType.STRING).description("해당 즐길거리의 영역 (내부 or 외부)"),
fieldWithPath("payload.entertainments[].name").type(JsonFieldType.STRING).description("해당 즐길거리의 이름"),
fieldWithPath("payload.entertainments[].explanations[]").type(JsonFieldType.ARRAY).description("해당 즐길거리의 설명 리스트"),
fieldWithPath("payload.entertainments[].tips[]").type(JsonFieldType.ARRAY).description("해당 즐길거리의 팁 리스트")
)
.responseSchema(Schema.schema("GetEntertainmentsResponseDto"))
.build()
)
));
}
}
}
46 changes: 28 additions & 18 deletions src/test/java/kusitms/backend/culture/FoodControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders;
import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.test.web.servlet.ResultActions;

import java.util.List;
Expand All @@ -38,7 +39,16 @@ public class FoodControllerTest extends ControllerTestConfig {
@DisplayName("해당 구장의 먹거리 목록을 조회한다.")
public void getSuitableFoods() throws Exception {

GetFoodsResponseDto.FoodDto foodDto = new GetFoodsResponseDto.FoodDto("테스트이미지", Boundary.INTERIOR, Course.DESSERT, "통밥", "2층 B06 / 2.5층 C05 (1,3루 내야지정석)", List.of("김치말이국수"), "국수 7,000원 (삼겹살+국수 세트 26,000원)", "잠실야구장의 최고 인기 메뉴, 김치말이국수! 전석 매진일 기준 경기 1시간 전 주문 필요해요.");
GetFoodsResponseDto.FoodDto foodDto = new GetFoodsResponseDto.FoodDto(
"테스트이미지",
Boundary.INTERIOR,
Course.DESSERT,
"통밥",
"2층 B06 / 2.5층 C05 (1,3루 내야지정석)",
List.of("김치말이국수"),
"국수 7,000원 (삼겹살+국수 세트 26,000원)",
"잠실야구장의 최고 인기 메뉴, 김치말이국수! 전석 매진일 기준 경기 1시간 전 주문 필요해요."
);
GetFoodsResponseDto getFoodsResponseDto = GetFoodsResponseDto.of(List.of(foodDto));

Mockito.when(foodService.getSuitableFoods(anyString(), anyString(), anyString())).thenReturn(getFoodsResponseDto);
Expand All @@ -55,7 +65,7 @@ public void getSuitableFoods() throws Exception {
resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("$.isSuccess").value(true))
.andExpect(jsonPath("$.code").value(200))
.andExpect(jsonPath("$.code").value("200"))
.andExpect(jsonPath("$.message").value("구장내부 디저트류 매장 조회가 완료되었습니다."))
.andExpect(jsonPath("$.payload.foods[0].imgUrl").value("테스트이미지"))
.andExpect(jsonPath("$.payload.foods[0].boundary").value("INTERIOR"))
Expand All @@ -74,27 +84,27 @@ public void getSuitableFoods() throws Exception {
.tag("Culture")
.description("해당 구장의 음식 목록을 조회한다.")
.queryParameters(
parameterWithName("stadiumName").description("구장명"),
parameterWithName("boundary").description("구장 영역(내부 or 외부)"),
parameterWithName("course").description("구장 코스(식사 or 후식) - 내부일때는 꼭 입력해주세요.").optional()
parameterWithName("stadiumName").description("구장명 [예시 : 잠실종합운동장]"),
parameterWithName("boundary").description("구장 영역(내부 or 외부) [예시 : 내부]"),
parameterWithName("course").description("구장 코스(식사 or 후식) - 내부일때는 꼭 입력해주세요 [예시 : 후식]").optional()
)
.responseFields(
fieldWithPath("isSuccess").description("성공 여부"),
fieldWithPath("code").description("응답 코드"),
fieldWithPath("message").description("응답 메시지"),
fieldWithPath("payload").description("응답 데이터").optional(),
fieldWithPath("payload.foods[].imgUrl").description("해당 매장의 이미지 Url"),
fieldWithPath("payload.foods[].boundary").description("해당 매장의 영역(내부 or 외부)"),
fieldWithPath("payload.foods[].course").description("해당 매장의 코스(식사 or 후식 or 전체)"),
fieldWithPath("payload.foods[].name").description("해당 매장의 이름"),
fieldWithPath("payload.foods[].location").description("해당 매장의 위치"),
fieldWithPath("payload.foods[].menu[]").description("해당 매장의 대표메뉴"),
fieldWithPath("payload.foods[].price").description("해당 매장의 음식들 가격"),
fieldWithPath("payload.foods[].tip").description("해당 매장과 관련된 팁")
fieldWithPath("isSuccess").type(JsonFieldType.BOOLEAN).description("성공 여부"),
fieldWithPath("code").type(JsonFieldType.STRING).description("응답 코드"),
fieldWithPath("message").type(JsonFieldType.STRING).description("응답 메시지"),
fieldWithPath("payload").type(JsonFieldType.OBJECT).description("응답 데이터").optional(),
fieldWithPath("payload.foods[].imgUrl").type(JsonFieldType.STRING).description("해당 매장의 이미지 URL"),
fieldWithPath("payload.foods[].boundary").type(JsonFieldType.STRING).description("해당 매장의 영역(내부 or 외부)"),
fieldWithPath("payload.foods[].course").type(JsonFieldType.STRING).description("해당 매장의 코스(식사 or 후식 or 전체)"),
fieldWithPath("payload.foods[].name").type(JsonFieldType.STRING).description("해당 매장의 이름"),
fieldWithPath("payload.foods[].location").type(JsonFieldType.STRING).description("해당 매장의 위치"),
fieldWithPath("payload.foods[].menu[]").type(JsonFieldType.ARRAY).description("해당 매장의 대표 메뉴 리스트"),
fieldWithPath("payload.foods[].price").type(JsonFieldType.STRING).description("해당 매장의 음식 가격 정보"),
fieldWithPath("payload.foods[].tip").type(JsonFieldType.STRING).description("해당 매장과 관련된 팁")
)
.responseSchema(Schema.schema("GetFoodsResponseDto"))
.build()
)
));
}
}
}
Loading

0 comments on commit 298e83d

Please sign in to comment.