From c2504f663a7fb50576624bcb21ddecd440320eb1 Mon Sep 17 00:00:00 2001 From: songhyeonpk Date: Wed, 2 Apr 2025 20:25:55 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EA=B7=B8=EB=A3=A8=EB=B0=8D=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/grooming/controller/.gitkeep | 0 .../LoadGroomingTestsController.java | 28 ++++++++++ .../adapter/in/web/grooming/dto/.gitkeep | 0 .../response/GroomingTestsInfoResponse.java | 22 ++++++++ .../out/persistence/adapter/grooming/.gitkeep | 0 .../GroomingDomainPersistenceAdapter.java | 48 ++++++++++++++++ .../application/port/in/grooming/.gitkeep | 0 .../in/grooming/LoadGroomingTestsUseCase.java | 11 ++++ .../port/out/persistence/grooming/.gitkeep | 0 .../grooming/LoadGroomingTestAnswerPort.java | 11 ++++ .../LoadGroomingTestQuestionPort.java | 11 ++++ .../application/service/grooming/.gitkeep | 0 .../grooming/LoadGroomingTestsService.java | 56 +++++++++++++++++++ .../vo/grooming/GroomingTestAnswerInfoVo.java | 26 +++++++++ .../GroomingTestQuestionWithAnswersVo.java | 30 ++++++++++ .../server/common/consts/StaticConsts.java | 2 + .../security/SecurityConfig.java | 2 +- 17 files changed, 246 insertions(+), 1 deletion(-) delete mode 100644 src/main/java/com/ftm/server/adapter/in/web/grooming/controller/.gitkeep create mode 100644 src/main/java/com/ftm/server/adapter/in/web/grooming/controller/LoadGroomingTestsController.java delete mode 100644 src/main/java/com/ftm/server/adapter/in/web/grooming/dto/.gitkeep create mode 100644 src/main/java/com/ftm/server/adapter/in/web/grooming/dto/response/GroomingTestsInfoResponse.java delete mode 100644 src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/.gitkeep create mode 100644 src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/GroomingDomainPersistenceAdapter.java delete mode 100644 src/main/java/com/ftm/server/application/port/in/grooming/.gitkeep create mode 100644 src/main/java/com/ftm/server/application/port/in/grooming/LoadGroomingTestsUseCase.java delete mode 100644 src/main/java/com/ftm/server/application/port/out/persistence/grooming/.gitkeep create mode 100644 src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestAnswerPort.java create mode 100644 src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestQuestionPort.java delete mode 100644 src/main/java/com/ftm/server/application/service/grooming/.gitkeep create mode 100644 src/main/java/com/ftm/server/application/service/grooming/LoadGroomingTestsService.java create mode 100644 src/main/java/com/ftm/server/application/vo/grooming/GroomingTestAnswerInfoVo.java create mode 100644 src/main/java/com/ftm/server/application/vo/grooming/GroomingTestQuestionWithAnswersVo.java diff --git a/src/main/java/com/ftm/server/adapter/in/web/grooming/controller/.gitkeep b/src/main/java/com/ftm/server/adapter/in/web/grooming/controller/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/adapter/in/web/grooming/controller/LoadGroomingTestsController.java b/src/main/java/com/ftm/server/adapter/in/web/grooming/controller/LoadGroomingTestsController.java new file mode 100644 index 0000000..e5b7d53 --- /dev/null +++ b/src/main/java/com/ftm/server/adapter/in/web/grooming/controller/LoadGroomingTestsController.java @@ -0,0 +1,28 @@ +package com.ftm.server.adapter.in.web.grooming.controller; + +import com.ftm.server.adapter.in.web.grooming.dto.response.GroomingTestsInfoResponse; +import com.ftm.server.application.port.in.grooming.LoadGroomingTestsUseCase; +import com.ftm.server.common.response.ApiResponse; +import com.ftm.server.common.response.enums.SuccessResponseCode; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class LoadGroomingTestsController { + + private final LoadGroomingTestsUseCase loadGroomingTestsUseCase; + + @GetMapping("/api/grooming/tests") + public ResponseEntity> loadGroomingTests() { + return ResponseEntity.status(HttpStatus.OK) + .body( + ApiResponse.success( + SuccessResponseCode.OK, + GroomingTestsInfoResponse.from( + loadGroomingTestsUseCase.execute()))); + } +} diff --git a/src/main/java/com/ftm/server/adapter/in/web/grooming/dto/.gitkeep b/src/main/java/com/ftm/server/adapter/in/web/grooming/dto/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/adapter/in/web/grooming/dto/response/GroomingTestsInfoResponse.java b/src/main/java/com/ftm/server/adapter/in/web/grooming/dto/response/GroomingTestsInfoResponse.java new file mode 100644 index 0000000..d1c3e08 --- /dev/null +++ b/src/main/java/com/ftm/server/adapter/in/web/grooming/dto/response/GroomingTestsInfoResponse.java @@ -0,0 +1,22 @@ +package com.ftm.server.adapter.in.web.grooming.dto.response; + +import com.ftm.server.application.vo.grooming.GroomingTestQuestionWithAnswersVo; +import java.util.Set; +import lombok.Getter; + +@Getter +public class GroomingTestsInfoResponse { + + private final Integer totalCount; + private final Set groomingTests; + + GroomingTestsInfoResponse(Set groomingTests) { + this.totalCount = groomingTests.size(); + this.groomingTests = groomingTests; + } + + public static GroomingTestsInfoResponse from( + Set groomingTests) { + return new GroomingTestsInfoResponse(groomingTests); + } +} diff --git a/src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/.gitkeep b/src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/GroomingDomainPersistenceAdapter.java b/src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/GroomingDomainPersistenceAdapter.java new file mode 100644 index 0000000..0bab35f --- /dev/null +++ b/src/main/java/com/ftm/server/adapter/out/persistence/adapter/grooming/GroomingDomainPersistenceAdapter.java @@ -0,0 +1,48 @@ +package com.ftm.server.adapter.out.persistence.adapter.grooming; + +import com.ftm.server.adapter.out.persistence.mapper.GroomingTestAnswerMapper; +import com.ftm.server.adapter.out.persistence.mapper.GroomingTestQuestionMapper; +import com.ftm.server.adapter.out.persistence.model.GroomingTestAnswerJpaEntity; +import com.ftm.server.adapter.out.persistence.model.GroomingTestQuestionJpaEntity; +import com.ftm.server.adapter.out.persistence.repository.GroomingTestAnswerRepository; +import com.ftm.server.adapter.out.persistence.repository.GroomingTestQuestionRepository; +import com.ftm.server.application.port.out.persistence.grooming.LoadGroomingTestAnswerPort; +import com.ftm.server.application.port.out.persistence.grooming.LoadGroomingTestQuestionPort; +import com.ftm.server.common.annotation.Adapter; +import com.ftm.server.domain.entity.GroomingTestAnswer; +import com.ftm.server.domain.entity.GroomingTestQuestion; +import java.util.List; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Adapter +@RequiredArgsConstructor +@Slf4j +public class GroomingDomainPersistenceAdapter + implements LoadGroomingTestQuestionPort, LoadGroomingTestAnswerPort { + + // Repository + private final GroomingTestQuestionRepository groomingTestQuestionRepository; + private final GroomingTestAnswerRepository groomingTestAnswerRepository; + + // Mapper + private final GroomingTestQuestionMapper groomingTestQuestionMapper; + private final GroomingTestAnswerMapper groomingTestAnswerMapper; + + @Override + public List loadGroomingTestQuestions() { + List questions = groomingTestQuestionRepository.findAll(); + return questions.stream() + .map(groomingTestQuestionMapper::toDomain) + .collect(Collectors.toList()); + } + + @Override + public List loadGroomingTestAnswers() { + List answers = groomingTestAnswerRepository.findAll(); + return answers.stream() + .map(groomingTestAnswerMapper::toDomain) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/ftm/server/application/port/in/grooming/.gitkeep b/src/main/java/com/ftm/server/application/port/in/grooming/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/application/port/in/grooming/LoadGroomingTestsUseCase.java b/src/main/java/com/ftm/server/application/port/in/grooming/LoadGroomingTestsUseCase.java new file mode 100644 index 0000000..e3ddca4 --- /dev/null +++ b/src/main/java/com/ftm/server/application/port/in/grooming/LoadGroomingTestsUseCase.java @@ -0,0 +1,11 @@ +package com.ftm.server.application.port.in.grooming; + +import com.ftm.server.application.vo.grooming.GroomingTestQuestionWithAnswersVo; +import com.ftm.server.common.annotation.UseCase; +import java.util.Set; + +@UseCase +public interface LoadGroomingTestsUseCase { + + Set execute(); +} diff --git a/src/main/java/com/ftm/server/application/port/out/persistence/grooming/.gitkeep b/src/main/java/com/ftm/server/application/port/out/persistence/grooming/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestAnswerPort.java b/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestAnswerPort.java new file mode 100644 index 0000000..6e044c9 --- /dev/null +++ b/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestAnswerPort.java @@ -0,0 +1,11 @@ +package com.ftm.server.application.port.out.persistence.grooming; + +import com.ftm.server.common.annotation.Port; +import com.ftm.server.domain.entity.GroomingTestAnswer; +import java.util.List; + +@Port +public interface LoadGroomingTestAnswerPort { + + List loadGroomingTestAnswers(); +} diff --git a/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestQuestionPort.java b/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestQuestionPort.java new file mode 100644 index 0000000..4673beb --- /dev/null +++ b/src/main/java/com/ftm/server/application/port/out/persistence/grooming/LoadGroomingTestQuestionPort.java @@ -0,0 +1,11 @@ +package com.ftm.server.application.port.out.persistence.grooming; + +import com.ftm.server.common.annotation.Port; +import com.ftm.server.domain.entity.GroomingTestQuestion; +import java.util.List; + +@Port +public interface LoadGroomingTestQuestionPort { + + List loadGroomingTestQuestions(); +} diff --git a/src/main/java/com/ftm/server/application/service/grooming/.gitkeep b/src/main/java/com/ftm/server/application/service/grooming/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/application/service/grooming/LoadGroomingTestsService.java b/src/main/java/com/ftm/server/application/service/grooming/LoadGroomingTestsService.java new file mode 100644 index 0000000..7b916a2 --- /dev/null +++ b/src/main/java/com/ftm/server/application/service/grooming/LoadGroomingTestsService.java @@ -0,0 +1,56 @@ +package com.ftm.server.application.service.grooming; + +import static com.ftm.server.common.consts.StaticConsts.GROOMING_TESTS_INFO_CACHE_KEY_ALL; +import static com.ftm.server.common.consts.StaticConsts.GROOMING_TESTS_INFO_CACHE_NAME; + +import com.ftm.server.application.port.in.grooming.LoadGroomingTestsUseCase; +import com.ftm.server.application.port.out.persistence.grooming.LoadGroomingTestAnswerPort; +import com.ftm.server.application.port.out.persistence.grooming.LoadGroomingTestQuestionPort; +import com.ftm.server.application.vo.grooming.GroomingTestAnswerInfoVo; +import com.ftm.server.application.vo.grooming.GroomingTestQuestionWithAnswersVo; +import com.ftm.server.domain.entity.GroomingTestAnswer; +import com.ftm.server.domain.entity.GroomingTestQuestion; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class LoadGroomingTestsService implements LoadGroomingTestsUseCase { + + private final LoadGroomingTestQuestionPort loadGroomingTestQuestionPort; + private final LoadGroomingTestAnswerPort loadGroomingTestAnswerPort; + + @Override + @Cacheable(value = GROOMING_TESTS_INFO_CACHE_NAME, key = GROOMING_TESTS_INFO_CACHE_KEY_ALL) + public Set execute() { + // 모든 그루밍 테스트 질문 목록 조회 + List questions = + loadGroomingTestQuestionPort.loadGroomingTestQuestions(); + + // 모든 그루밍 테스트 답변 목록 조회 + List answers = loadGroomingTestAnswerPort.loadGroomingTestAnswers(); + + // 같은 질문의 답변 목록끼리 그룹화 + Map> answersByQuestionId = + answers.stream() + .map(GroomingTestAnswerInfoVo::from) + .collect( + Collectors.groupingBy( + GroomingTestAnswerInfoVo::getGroomingTestQuestionId)); + + // 각 그루밍 테스트 질문에 속한 답변목록을 함께 담아 응답, 순서 랜덤 + return questions.stream() + .map( + question -> + GroomingTestQuestionWithAnswersVo.from( + question, + answersByQuestionId.getOrDefault( + question.getId(), List.of()))) + .collect(Collectors.toSet()); + } +} diff --git a/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestAnswerInfoVo.java b/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestAnswerInfoVo.java new file mode 100644 index 0000000..dd1e390 --- /dev/null +++ b/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestAnswerInfoVo.java @@ -0,0 +1,26 @@ +package com.ftm.server.application.vo.grooming; + +import com.ftm.server.domain.entity.GroomingTestAnswer; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class GroomingTestAnswerInfoVo { + + private Long groomingTestAnswerId; + private Long groomingTestQuestionId; + private String answer; + private Integer score; + + private GroomingTestAnswerInfoVo(GroomingTestAnswer groomingTestAnswer) { + this.groomingTestAnswerId = groomingTestAnswer.getId(); + this.groomingTestQuestionId = groomingTestAnswer.getGroomingTestQuestionId(); + this.answer = groomingTestAnswer.getAnswer(); + this.score = groomingTestAnswer.getScore(); + } + + public static GroomingTestAnswerInfoVo from(GroomingTestAnswer groomingTestAnswer) { + return new GroomingTestAnswerInfoVo(groomingTestAnswer); + } +} diff --git a/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestQuestionWithAnswersVo.java b/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestQuestionWithAnswersVo.java new file mode 100644 index 0000000..d740464 --- /dev/null +++ b/src/main/java/com/ftm/server/application/vo/grooming/GroomingTestQuestionWithAnswersVo.java @@ -0,0 +1,30 @@ +package com.ftm.server.application.vo.grooming; + +import com.ftm.server.domain.entity.GroomingTestQuestion; +import com.ftm.server.domain.enums.GroomingCategory; +import java.util.List; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class GroomingTestQuestionWithAnswersVo { + + private Long groomingTestQuestionId; + private String question; + private GroomingCategory groomingCategory; + private List answers; + + private GroomingTestQuestionWithAnswersVo( + GroomingTestQuestion groomingTestQuestion, List answers) { + this.groomingTestQuestionId = groomingTestQuestion.getId(); + this.question = groomingTestQuestion.getQuestion(); + this.groomingCategory = groomingTestQuestion.getGroomingCategory(); + this.answers = answers; + } + + public static GroomingTestQuestionWithAnswersVo from( + GroomingTestQuestion groomingTestQuestion, List answers) { + return new GroomingTestQuestionWithAnswersVo(groomingTestQuestion, answers); + } +} diff --git a/src/main/java/com/ftm/server/common/consts/StaticConsts.java b/src/main/java/com/ftm/server/common/consts/StaticConsts.java index bce595f..1160cc2 100644 --- a/src/main/java/com/ftm/server/common/consts/StaticConsts.java +++ b/src/main/java/com/ftm/server/common/consts/StaticConsts.java @@ -6,4 +6,6 @@ public class StaticConsts { public static final String AUTHORIZATION_GRANT_TYPE = "authorization_code"; public static final String PENDING_SOCIAL_USER_SESSION_KEY = "PENDING_SOCIAL_USER_INFO"; public static final int PENDING_SOCIAL_USER_SESSION_TTL = 300; // 5분 + public static final String GROOMING_TESTS_INFO_CACHE_NAME = "ftm:grooming:tests:info"; + public static final String GROOMING_TESTS_INFO_CACHE_KEY_ALL = "'all'"; } diff --git a/src/main/java/com/ftm/server/infrastructure/security/SecurityConfig.java b/src/main/java/com/ftm/server/infrastructure/security/SecurityConfig.java index 998b140..6d6b3db 100644 --- a/src/main/java/com/ftm/server/infrastructure/security/SecurityConfig.java +++ b/src/main/java/com/ftm/server/infrastructure/security/SecurityConfig.java @@ -51,7 +51,7 @@ public class SecurityConfig { "https://fittheman.site"); // 개발 환경 클라이언트 도메인 private static final String[] GET_ANONYMOUS_MATCHERS = { - "/api/users/email/duplication", "/api/users/options" + "/api/users/email/duplication", "/api/users/options", "/api/grooming/tests" }; private static final String[] POST_ANONYMOUS_MATCHERS = { From a63c9600618498db19f3073f0c3bd3aa10249ba0 Mon Sep 17 00:00:00 2001 From: songhyeonpk Date: Wed, 2 Apr 2025 20:26:06 +0900 Subject: [PATCH 2/3] =?UTF-8?q?test:=20=EA=B7=B8=EB=A3=A8=EB=B0=8D=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../grooming/LoadGroomingTestsTest.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/test/java/com/ftm/server/grooming/LoadGroomingTestsTest.java diff --git a/src/test/java/com/ftm/server/grooming/LoadGroomingTestsTest.java b/src/test/java/com/ftm/server/grooming/LoadGroomingTestsTest.java new file mode 100644 index 0000000..5eee818 --- /dev/null +++ b/src/test/java/com/ftm/server/grooming/LoadGroomingTestsTest.java @@ -0,0 +1,88 @@ +package com.ftm.server.grooming; + +import static com.epages.restdocs.apispec.ResourceDocumentation.resource; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.*; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; +import static org.springframework.restdocs.payload.JsonFieldType.*; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import com.epages.restdocs.apispec.ResourceSnippetParameters; +import com.ftm.server.BaseTest; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders; +import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; +import org.springframework.restdocs.payload.FieldDescriptor; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.transaction.annotation.Transactional; + +public class LoadGroomingTestsTest extends BaseTest { + + private final List responseFieldLoadGroomingTests = + List.of( + fieldWithPath("status").type(NUMBER).description("응답 상태"), + fieldWithPath("code").type(STRING).description("상태 코드"), + fieldWithPath("message").type(STRING).description("메시지"), + fieldWithPath("data").type(OBJECT).optional().description("data"), + fieldWithPath("data.totalCount").type(NUMBER).description("그루밍 테스트 총 문항 수"), + fieldWithPath("data.groomingTests") + .type(ARRAY) + .description("그루밍 테스트 목록 (순서 랜덤, 질문:답변목록 조합)"), + fieldWithPath("data.groomingTests[].groomingTestQuestionId") + .type(NUMBER) + .description("그루밍 테스트 질문 id"), + fieldWithPath("data.groomingTests[].question") + .type(STRING) + .description("그루밍 테스트 질문 내용"), + fieldWithPath("data.groomingTests[].groomingCategory") + .type(STRING) + .description("그루밍 테스트 질문 카테고리"), + fieldWithPath("data.groomingTests[].answers") + .type(ARRAY) + .description("그루밍 테스트 답변 목록"), + fieldWithPath("data.groomingTests[].answers[].groomingTestAnswerId") + .type(NUMBER) + .description("그루밍 테스트 답변 id"), + fieldWithPath("data.groomingTests[].answers[].groomingTestQuestionId") + .type(NUMBER) + .description("그루밍 테스트 답변이 속한 질문 id"), + fieldWithPath("data.groomingTests[].answers[].answer") + .type(STRING) + .description("그루밍 테스트 답변 내용"), + fieldWithPath("data.groomingTests[].answers[].score") + .type(NUMBER) + .description("그루밍 테스트 답변 점수")); + + private RestDocumentationResultHandler getDocument(Integer identifier) { + return document( + "loadGroomingTests/" + identifier, + preprocessRequest(prettyPrint()), + preprocessResponse(prettyPrint(), getModifiedHeader()), + responseFields(responseFieldLoadGroomingTests), + resource( + ResourceSnippetParameters.builder() + .tag("그루밍 테스트") + .summary("그루밍 테스트 목록 조회 api") + .description("그루밍 테스트 목록 조회 api 입니다.") + .responseFields(responseFieldLoadGroomingTests) + .build())); + } + + @Test + @Transactional + void 그루밍_테스트_목록_조회_성공() throws Exception { + // when + ResultActions resultActions = + mockMvc.perform(RestDocumentationRequestBuilders.get("/api/grooming/tests")); + + // then + resultActions.andExpect(status().isOk()).andDo(print()); + + // documentation + resultActions.andDo(getDocument(1)); + } +} From 9ed30af4619caba105e20b831c29409c74e6af5b Mon Sep 17 00:00:00 2001 From: songhyeonpk Date: Wed, 2 Apr 2025 20:26:13 +0900 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=EA=B7=B8=EB=A3=A8=EB=B0=8D=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20api=20=EB=AC=B8=EC=84=9C=ED=99=94=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/grooming-test-api.adoc | 11 +++++++++++ src/docs/asciidoc/index.adoc | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/docs/asciidoc/grooming-test-api.adoc diff --git a/src/docs/asciidoc/grooming-test-api.adoc b/src/docs/asciidoc/grooming-test-api.adoc new file mode 100644 index 0000000..18f5213 --- /dev/null +++ b/src/docs/asciidoc/grooming-test-api.adoc @@ -0,0 +1,11 @@ +=== **1. 그루밍 테스트 목록 조회** + +그루밍 테스트 목록 조회 api 입니다. + +==== 성공 Response +include::{snippetsDir}/loadGroomingTests/1/http-response.adoc[] + +==== Response Body Fields +include::{snippetsDir}/loadGroomingTests/1/response-fields.adoc[] + +--- \ No newline at end of file diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index dcbe71c..04c51c9 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -108,4 +108,8 @@ include::user-api.adoc[] = **인증/인가** -include::auth-api.adoc[] \ No newline at end of file +include::auth-api.adoc[] + += **그루밍 테스트** + +include::grooming-test-api.adoc[] \ No newline at end of file