Update All AnswerService to use GetAnswerService and rename test method

This commit is contained in:
MangKyu
2023-02-18 17:30:19 +09:00
parent 5901cf1d02
commit a76d263b7a
8 changed files with 27 additions and 43 deletions

View File

@@ -1,6 +1,8 @@
package com.mangkyu.employment.interview.app.answer.controller; 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.answer.service.GetAnswerService;
import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -15,7 +17,8 @@ class GetAnswerController {
@GetMapping("/answers/{resourceId}") @GetMapping("/answers/{resourceId}")
public ResponseEntity<GetAnswerResponse> get(@PathVariable final String resourceId) { public ResponseEntity<GetAnswerResponse> get(@PathVariable final String resourceId) {
return ResponseEntity.ok(answerService.get(resourceId)); Answer answer = answerService.get(resourceId);
return ResponseEntity.ok(QuizDtoConverter.convert(answer));
} }
} }

View File

@@ -13,11 +13,11 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public class DeleteAnswerService { public class DeleteAnswerService {
private final GetAnswerService getAnswerService;
private final AnswerRepository answerRepository; private final AnswerRepository answerRepository;
public void delete(final String resourceId) { public void delete(final String resourceId) {
final Answer answer = answerRepository.findByResourceId(resourceId) final Answer answer = getAnswerService.get(resourceId);
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
answer.getQuiz().setAnswer(null); answer.getQuiz().setAnswer(null);
answerRepository.delete(answer); answerRepository.delete(answer);
} }

View File

@@ -1,9 +1,7 @@
package com.mangkyu.employment.interview.app.answer.service; 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.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; 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.errorcode.CommonErrorCode;
import com.mangkyu.employment.interview.erros.exception.RestApiException; import com.mangkyu.employment.interview.erros.exception.RestApiException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -17,11 +15,9 @@ public class GetAnswerService {
private final AnswerRepository answerRepository; private final AnswerRepository answerRepository;
public GetAnswerResponse get(final String resourceId) { public Answer get(final String resourceId) {
final Answer answer = answerRepository.findByResourceId(resourceId) return answerRepository.findByResourceId(resourceId)
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND)); .orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
return QuizDtoConverter.convert(answer);
} }
} }

View File

@@ -1,7 +1,9 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse; 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.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.dto.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.QuizService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -24,8 +26,8 @@ public class WebQuizController {
model.addAttribute("quiz", quiz); model.addAttribute("quiz", quiz);
if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) { if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) {
final GetAnswerResponse answer = answerService.get(quiz.getAnswerResourceId()); final Answer answer = answerService.get(quiz.getAnswerResourceId());
model.addAttribute("answer", answer); model.addAttribute("answer", QuizDtoConverter.convert(answer));
} else { } else {
model.addAttribute("answer", GetAnswerResponse.builder().build()); model.addAttribute("answer", GetAnswerResponse.builder().build());
} }

View File

@@ -25,7 +25,7 @@ class AnswerRepositoryTest {
private EntityManager entityManager; private EntityManager entityManager;
@Test @Test
public void selectAnswerByQuizId() { public void findOptionalByQuizId() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final Quiz quiz = EntityCreationUtils.quiz();
final Quiz savedQuiz = quizRepository.save(quiz); final Quiz savedQuiz = quizRepository.save(quiz);

View File

@@ -25,35 +25,19 @@ class DeleteAnswerServiceTest {
@InjectMocks @InjectMocks
private DeleteAnswerService answerService; private DeleteAnswerService answerService;
@Mock @Mock
private GetAnswerService getAnswerService;
@Mock
private AnswerRepository answerRepository; private AnswerRepository answerRepository;
@Test @Test
void deleteAnswerByQuizResourceIdFail_AnswerNotExists() { void deleteAnswer_Success() throws RestApiException {
// 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 {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final Quiz quiz = EntityCreationUtils.quiz();
final Answer answer = EntityCreationUtils.answer(quiz); final Answer answer = EntityCreationUtils.answer(quiz);
doReturn(Optional.of(answer)) doReturn(answer)
.when(answerRepository) .when(getAnswerService)
.findByResourceId(answer.getResourceId()); .get(answer.getResourceId());
// when // when
answerService.delete(answer.getResourceId()); answerService.delete(answer.getResourceId());

View File

@@ -1,12 +1,11 @@
package com.mangkyu.employment.interview.app.answer.service; 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.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; 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.entity.Quiz;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; 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 com.mangkyu.employment.interview.testutils.EntityCreationUtils;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; 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.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.doReturn;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
class GetAnswerServiceTest { class GetAnswerServiceTest {
@@ -33,7 +32,7 @@ class GetAnswerServiceTest {
private AnswerRepository answerRepository; private AnswerRepository answerRepository;
@Test @Test
public void getAnswerByQuizResourceIdFail_AnswerNotExists() { public void getAnswer_Fail_NotExists() {
// given // given
final String resourceId = UUID.randomUUID().toString(); final String resourceId = UUID.randomUUID().toString();
@@ -51,7 +50,7 @@ class GetAnswerServiceTest {
} }
@Test @Test
public void getAnswerByQuizResourceIdSuccess() throws RestApiException { public void getAnswer_Success() throws RestApiException {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final Quiz quiz = EntityCreationUtils.quiz();
final Answer answer = EntityCreationUtils.answer(quiz); final Answer answer = EntityCreationUtils.answer(quiz);
@@ -61,7 +60,7 @@ class GetAnswerServiceTest {
.findByResourceId(answer.getResourceId()); .findByResourceId(answer.getResourceId());
// when // when
final GetAnswerResponse result = answerService.get(answer.getResourceId()); final Answer result = answerService.get(answer.getResourceId());
// then // then
assertThat(result.getDescription()).isEqualTo(answer.getDescription()); assertThat(result.getDescription()).isEqualTo(answer.getDescription());

View File

@@ -30,7 +30,7 @@ class UpdateAnswerServiceTest {
private AnswerRepository answerRepository; private AnswerRepository answerRepository;
@Test @Test
public void addAnswerSuccess_Modify() throws RestApiException { public void addAnswer_Success_Modify() throws RestApiException {
// given // given
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder() final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString()) .quizResourceId(UUID.randomUUID().toString())
@@ -54,7 +54,7 @@ class UpdateAnswerServiceTest {
} }
@Test @Test
public void addAnswerSuccess_Insert() throws RestApiException { public void addAnswer_Success_Insert() throws RestApiException {
// given // given
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder() final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString()) .quizResourceId(UUID.randomUUID().toString())