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;
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<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
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);
}

View File

@@ -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);
}
}

View File

@@ -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());
}

View File

@@ -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);

View File

@@ -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());

View File

@@ -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());

View File

@@ -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())