Divide AddAnswerService and UpdateAnswerService
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.mangkyu.employment.interview.app.answer.controller;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.service.UpdateAnswerService;
|
||||
import com.mangkyu.employment.interview.app.answer.service.AddAnswerService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -13,7 +13,7 @@ import javax.validation.Valid;
|
||||
@RequiredArgsConstructor
|
||||
class AddAnswerController {
|
||||
|
||||
private final UpdateAnswerService answerService;
|
||||
private final AddAnswerService answerService;
|
||||
|
||||
@PostMapping("/answers")
|
||||
public ResponseEntity<Void> add(@RequestBody @Valid final AddAnswerRequest request) {
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
|
||||
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.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
public class AddAnswerService {
|
||||
|
||||
private final QuizService quizService;
|
||||
private final AnswerRepository answerRepository;
|
||||
|
||||
public void add(final AddAnswerRequest request) {
|
||||
final Quiz quiz = quizService.findQuiz(request.getQuizResourceId());
|
||||
final Answer quizAnswer = quiz.getAnswer();
|
||||
if (quizAnswer == null) {
|
||||
final Answer answer = QuizDtoConverter.convert(request, quiz);
|
||||
answerRepository.save(answer);
|
||||
quiz.setAnswer(answer);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,8 +2,6 @@ package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
|
||||
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.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -16,16 +14,11 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
public class UpdateAnswerService {
|
||||
|
||||
private final QuizService quizService;
|
||||
private final AnswerRepository answerRepository;
|
||||
|
||||
public void add(final AddAnswerRequest request) {
|
||||
final Quiz quiz = quizService.findQuiz(request.getQuizResourceId());
|
||||
final Answer quizAnswer = quiz.getAnswer();
|
||||
if (quizAnswer == null) {
|
||||
final Answer answer = QuizDtoConverter.convert(request, quiz);
|
||||
answerRepository.save(answer);
|
||||
quiz.setAnswer(answer);
|
||||
} else {
|
||||
if (quizAnswer != null) {
|
||||
quizAnswer.setDescription(request.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
|
||||
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.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
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;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class AddAnswerServiceTest {
|
||||
|
||||
@InjectMocks
|
||||
private AddAnswerService answerService;
|
||||
|
||||
@Mock
|
||||
private QuizService quizService;
|
||||
@Mock
|
||||
private AnswerRepository answerRepository;
|
||||
|
||||
@Test
|
||||
void addAnswer_Success_Insert() throws RestApiException {
|
||||
// given
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
.quizResourceId(UUID.randomUUID().toString())
|
||||
.description("desc")
|
||||
.build();
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
|
||||
doReturn(quiz)
|
||||
.when(quizService)
|
||||
.findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
|
||||
// when
|
||||
answerService.add(addAnswerRequest);
|
||||
|
||||
// then
|
||||
verify(answerRepository, times(1)).save(any(Answer.class));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,7 +30,7 @@ class UpdateAnswerServiceTest {
|
||||
private AnswerRepository answerRepository;
|
||||
|
||||
@Test
|
||||
public void addAnswer_Success_Modify() throws RestApiException {
|
||||
void updateAnswer_Success() throws RestApiException {
|
||||
// given
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
.quizResourceId(UUID.randomUUID().toString())
|
||||
@@ -53,24 +53,4 @@ class UpdateAnswerServiceTest {
|
||||
verify(answerRepository, times(0)).save(answer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addAnswer_Success_Insert() throws RestApiException {
|
||||
// given
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
.quizResourceId(UUID.randomUUID().toString())
|
||||
.description("desc")
|
||||
.build();
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
|
||||
doReturn(quiz)
|
||||
.when(quizService)
|
||||
.findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
|
||||
// when
|
||||
answerService.add(addAnswerRequest);
|
||||
|
||||
// then
|
||||
verify(answerRepository, times(1)).save(any(Answer.class));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user