diff --git a/src/main/java/mju/iphak/maru_egg/question/api/AdminQuestionTypeStatusController.java b/src/main/java/mju/iphak/maru_egg/question/api/AdminQuestionTypeStatusController.java index dd3fc8e..850c92d 100644 --- a/src/main/java/mju/iphak/maru_egg/question/api/AdminQuestionTypeStatusController.java +++ b/src/main/java/mju/iphak/maru_egg/question/api/AdminQuestionTypeStatusController.java @@ -1,8 +1,5 @@ package mju.iphak.maru_egg.question.api; -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -16,7 +13,6 @@ import mju.iphak.maru_egg.question.application.QuestionTypeStatusService; import mju.iphak.maru_egg.question.docs.AdminQuestionTypeStatusControllerDocs; import mju.iphak.maru_egg.question.dto.request.UpdateQuestionTypeStatusRequest; -import mju.iphak.maru_egg.question.dto.response.QuestionTypeStatusResponse; @RequiredArgsConstructor @RestController @@ -42,12 +38,4 @@ public void initializeQuestionTypeStatus() { public void updateQuestionTypeStatus(@Valid @RequestBody UpdateQuestionTypeStatusRequest request) { questionTypeStatusService.updateStatus(request.type()); } - - @CustomApiResponses({ - @CustomApiResponse(error = "InternalServerError", status = 500, message = "내부 서버 오류가 발생했습니다.", description = "내부 서버 오류") - }) - @GetMapping() - public List getQuestionTypeStatus() { - return questionTypeStatusService.getQuestionTypeStatus(); - } } diff --git a/src/main/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusController.java b/src/main/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusController.java new file mode 100644 index 0000000..6b5223d --- /dev/null +++ b/src/main/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusController.java @@ -0,0 +1,29 @@ +package mju.iphak.maru_egg.question.api; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; +import mju.iphak.maru_egg.common.meta.CustomApiResponse; +import mju.iphak.maru_egg.common.meta.CustomApiResponses; +import mju.iphak.maru_egg.question.application.QuestionTypeStatusService; +import mju.iphak.maru_egg.question.dto.response.QuestionTypeStatusResponse; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/api/questions/status") +public class QuestionTypeStatusController { + + private final QuestionTypeStatusService questionTypeStatusService; + + @CustomApiResponses({ + @CustomApiResponse(error = "InternalServerError", status = 500, message = "내부 서버 오류가 발생했습니다.", description = "내부 서버 오류") + }) + @GetMapping() + public List getQuestionTypeStatus() { + return questionTypeStatusService.getQuestionTypeStatus(); + } +} diff --git a/src/main/java/mju/iphak/maru_egg/question/docs/AdminQuestionTypeStatusControllerDocs.java b/src/main/java/mju/iphak/maru_egg/question/docs/AdminQuestionTypeStatusControllerDocs.java index e90748d..04c8640 100644 --- a/src/main/java/mju/iphak/maru_egg/question/docs/AdminQuestionTypeStatusControllerDocs.java +++ b/src/main/java/mju/iphak/maru_egg/question/docs/AdminQuestionTypeStatusControllerDocs.java @@ -1,7 +1,5 @@ package mju.iphak.maru_egg.question.docs; -import java.util.List; - import org.springframework.web.bind.annotation.RequestBody; import io.swagger.v3.oas.annotations.Operation; @@ -9,7 +7,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import mju.iphak.maru_egg.question.dto.request.UpdateQuestionTypeStatusRequest; -import mju.iphak.maru_egg.question.dto.response.QuestionTypeStatusResponse; @Tag(name = "Admin QuestionTypeStatus API", description = "어드민 질문타입 상태 관련 API 입니다.") public interface AdminQuestionTypeStatusControllerDocs { @@ -23,9 +20,4 @@ public interface AdminQuestionTypeStatusControllerDocs { @ApiResponse(responseCode = "200", description = "질문타입 상태 변경 성공") }) void updateQuestionTypeStatus(@Valid @RequestBody UpdateQuestionTypeStatusRequest request); - - @Operation(summary = "전체 질문타입과 상태 조회", description = "전체 질문타입과 상태를 조회합니다.", responses = { - @ApiResponse(responseCode = "200", description = "전체 질문타입과 상태 조회 성공") - }) - List getQuestionTypeStatus(); } diff --git a/src/main/java/mju/iphak/maru_egg/question/docs/QuestionTypeStatusControllerDocs.java b/src/main/java/mju/iphak/maru_egg/question/docs/QuestionTypeStatusControllerDocs.java new file mode 100644 index 0000000..5198956 --- /dev/null +++ b/src/main/java/mju/iphak/maru_egg/question/docs/QuestionTypeStatusControllerDocs.java @@ -0,0 +1,17 @@ +package mju.iphak.maru_egg.question.docs; + +import java.util.List; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import mju.iphak.maru_egg.question.dto.response.QuestionTypeStatusResponse; + +@Tag(name = "QuestionTypeStatus API", description = "질문타입 상태 관련 API 입니다.") +public interface QuestionTypeStatusControllerDocs { + + @Operation(summary = "전체 질문타입과 상태 조회", description = "전체 질문타입과 상태를 조회합니다.", responses = { + @ApiResponse(responseCode = "200", description = "전체 질문타입과 상태 조회 성공") + }) + List getQuestionTypeStatus(); +} diff --git a/src/test/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusControllerTest.java b/src/test/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusControllerTest.java new file mode 100644 index 0000000..6abeb61 --- /dev/null +++ b/src/test/java/mju/iphak/maru_egg/question/api/QuestionTypeStatusControllerTest.java @@ -0,0 +1,45 @@ +package mju.iphak.maru_egg.question.api; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.ResultActions; + +import mju.iphak.maru_egg.common.IntegrationTest; +import mju.iphak.maru_egg.question.application.QuestionTypeStatusService; + +class QuestionTypeStatusControllerTest extends IntegrationTest { + + @Autowired + private QuestionTypeStatusService questionTypeStatusService; + + @BeforeEach + void setUp() { + questionTypeStatusService.initializeQuestionTypeStatus(); + } + + @DisplayName("200 전체 질문타입과 상태 조회") + @Test + public void 전체_질문타입과_상태_조회_정상적인_요청() throws Exception { + // given & when + ResultActions resultActions = performGetQuestionTypeStatus(); + + // then + resultActions + .andExpect(status().isOk()) + .andExpect(jsonPath("$").isArray()) + .andExpect(jsonPath("$").isNotEmpty()); + } + + private ResultActions performGetQuestionTypeStatus() throws Exception { + return mvc.perform(get("/api/questions/status") + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()); + } +} \ No newline at end of file