diff --git a/src/main/java/com/mangkyu/employment/interview/app/answer/controller/GetAnswerController.java b/src/main/java/com/mangkyu/employment/interview/app/answer/controller/GetAnswerController.java index b4f1259..ab2b816 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/answer/controller/GetAnswerController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/answer/controller/GetAnswerController.java @@ -1,6 +1,8 @@ package com.mangkyu.employment.interview.app.answer.controller; +import com.mangkyu.employment.interview.app.answer.entity.Answer; import com.mangkyu.employment.interview.app.answer.service.GetAnswerService; +import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -15,7 +17,8 @@ class GetAnswerController { @GetMapping("/answers/{resourceId}") public ResponseEntity get(@PathVariable final String resourceId) { - return ResponseEntity.ok(answerService.get(resourceId)); + Answer answer = answerService.get(resourceId); + return ResponseEntity.ok(QuizDtoConverter.convert(answer)); } } \ No newline at end of file diff --git a/src/main/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerService.java b/src/main/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerService.java index 4e4b94a..36b987b 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerService.java @@ -13,11 +13,11 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class DeleteAnswerService { + private final GetAnswerService getAnswerService; private final AnswerRepository answerRepository; public void delete(final String resourceId) { - final Answer answer = answerRepository.findByResourceId(resourceId) - .orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND)); + final Answer answer = getAnswerService.get(resourceId); answer.getQuiz().setAnswer(null); answerRepository.delete(answer); } diff --git a/src/main/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerService.java b/src/main/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerService.java index 7885d9a..aff0a18 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerService.java @@ -1,9 +1,7 @@ package com.mangkyu.employment.interview.app.answer.service; -import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse; import com.mangkyu.employment.interview.app.answer.entity.Answer; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; -import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter; import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; import com.mangkyu.employment.interview.erros.exception.RestApiException; import lombok.RequiredArgsConstructor; @@ -17,11 +15,9 @@ public class GetAnswerService { private final AnswerRepository answerRepository; - public GetAnswerResponse get(final String resourceId) { - final Answer answer = answerRepository.findByResourceId(resourceId) + public Answer get(final String resourceId) { + return answerRepository.findByResourceId(resourceId) .orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND)); - - return QuizDtoConverter.convert(answer); } } \ No newline at end of file diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java index 4c1ab5c..b06bd77 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java @@ -1,7 +1,9 @@ package com.mangkyu.employment.interview.app.quiz.controller; import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse; +import com.mangkyu.employment.interview.app.answer.entity.Answer; import com.mangkyu.employment.interview.app.answer.service.GetAnswerService; +import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter; import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.service.QuizService; import lombok.RequiredArgsConstructor; @@ -24,8 +26,8 @@ public class WebQuizController { model.addAttribute("quiz", quiz); if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) { - final GetAnswerResponse answer = answerService.get(quiz.getAnswerResourceId()); - model.addAttribute("answer", answer); + final Answer answer = answerService.get(quiz.getAnswerResourceId()); + model.addAttribute("answer", QuizDtoConverter.convert(answer)); } else { model.addAttribute("answer", GetAnswerResponse.builder().build()); } diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/repository/AnswerRepositoryTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/repository/AnswerRepositoryTest.java index 969699d..99d0bc9 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/repository/AnswerRepositoryTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/repository/AnswerRepositoryTest.java @@ -25,7 +25,7 @@ class AnswerRepositoryTest { private EntityManager entityManager; @Test - public void selectAnswerByQuizId() { + public void findOptionalByQuizId() { // given final Quiz quiz = EntityCreationUtils.quiz(); final Quiz savedQuiz = quizRepository.save(quiz); diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerServiceTest.java index 08e9687..b43c0fd 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/DeleteAnswerServiceTest.java @@ -25,35 +25,19 @@ class DeleteAnswerServiceTest { @InjectMocks private DeleteAnswerService answerService; @Mock + private GetAnswerService getAnswerService; + @Mock private AnswerRepository answerRepository; @Test - void deleteAnswerByQuizResourceIdFail_AnswerNotExists() { - // given - final String resourceId = UUID.randomUUID().toString(); - - doReturn(Optional.empty()) - .when(answerRepository) - .findByResourceId(resourceId); - - // when - final RestApiException result = assertThrows( - RestApiException.class, - () -> answerService.delete(resourceId)); - - // then - assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND); - } - - @Test - void deleteAnswerByQuizResourceIdSuccess() throws RestApiException { + void deleteAnswer_Success() throws RestApiException { // given final Quiz quiz = EntityCreationUtils.quiz(); final Answer answer = EntityCreationUtils.answer(quiz); - doReturn(Optional.of(answer)) - .when(answerRepository) - .findByResourceId(answer.getResourceId()); + doReturn(answer) + .when(getAnswerService) + .get(answer.getResourceId()); // when answerService.delete(answer.getResourceId()); diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java index 2ffca01..3fbac35 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java @@ -1,12 +1,11 @@ package com.mangkyu.employment.interview.app.answer.service; -import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse; import com.mangkyu.employment.interview.app.answer.entity.Answer; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; -import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; -import com.mangkyu.employment.interview.erros.exception.RestApiException; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.app.quiz.service.QuizService; +import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; +import com.mangkyu.employment.interview.erros.exception.RestApiException; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -19,7 +18,7 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doReturn; @ExtendWith(MockitoExtension.class) class GetAnswerServiceTest { @@ -33,7 +32,7 @@ class GetAnswerServiceTest { private AnswerRepository answerRepository; @Test - public void getAnswerByQuizResourceIdFail_AnswerNotExists() { + public void getAnswer_Fail_NotExists() { // given final String resourceId = UUID.randomUUID().toString(); @@ -51,7 +50,7 @@ class GetAnswerServiceTest { } @Test - public void getAnswerByQuizResourceIdSuccess() throws RestApiException { + public void getAnswer_Success() throws RestApiException { // given final Quiz quiz = EntityCreationUtils.quiz(); final Answer answer = EntityCreationUtils.answer(quiz); @@ -61,7 +60,7 @@ class GetAnswerServiceTest { .findByResourceId(answer.getResourceId()); // when - final GetAnswerResponse result = answerService.get(answer.getResourceId()); + final Answer result = answerService.get(answer.getResourceId()); // then assertThat(result.getDescription()).isEqualTo(answer.getDescription()); diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java index 58f8f00..0364006 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java @@ -30,7 +30,7 @@ class UpdateAnswerServiceTest { private AnswerRepository answerRepository; @Test - public void addAnswerSuccess_Modify() throws RestApiException { + public void addAnswer_Success_Modify() throws RestApiException { // given final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder() .quizResourceId(UUID.randomUUID().toString()) @@ -54,7 +54,7 @@ class UpdateAnswerServiceTest { } @Test - public void addAnswerSuccess_Insert() throws RestApiException { + public void addAnswer_Success_Insert() throws RestApiException { // given final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder() .quizResourceId(UUID.randomUUID().toString())