Skip to content

Commit

Permalink
Merge pull request #82 from MARU-EGG/refactor/질문-상태-목록-분리
Browse files Browse the repository at this point in the history
[refactor] 질문 상태 목록 분리
  • Loading branch information
Hoya324 authored Sep 3, 2024
2 parents 6d5569c + 84cc416 commit c99cd64
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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
Expand All @@ -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<QuestionTypeStatusResponse> getQuestionTypeStatus() {
return questionTypeStatusService.getQuestionTypeStatus();
}
}
Original file line number Diff line number Diff line change
@@ -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<QuestionTypeStatusResponse> getQuestionTypeStatus() {
return questionTypeStatusService.getQuestionTypeStatus();
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
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;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
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 {
Expand All @@ -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<QuestionTypeStatusResponse> getQuestionTypeStatus();
}
Original file line number Diff line number Diff line change
@@ -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<QuestionTypeStatusResponse> getQuestionTypeStatus();
}
Original file line number Diff line number Diff line change
@@ -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());
}
}

0 comments on commit c99cd64

Please sign in to comment.