Divide AddQuizService first
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.AddQuizService;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
import lombok.*;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -20,7 +21,7 @@ import java.util.List;
|
||||
@RequiredArgsConstructor
|
||||
class AddQuizController {
|
||||
|
||||
private final QuizService quizService;
|
||||
private final AddQuizService quizService;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
@GetMapping("/quizzes/init")
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.controller.AddQuizRequest;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
public class AddQuizService {
|
||||
|
||||
private final QuizRepository quizRepository;
|
||||
@Deprecated // TODO: remove modelMapper
|
||||
private final ModelMapper modelMapper;
|
||||
|
||||
public void addQuiz(final AddQuizRequest addQuizRequest) {
|
||||
final Quiz quiz = modelMapper.map(addQuizRequest, Quiz.class);
|
||||
quizRepository.save(quiz);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.controller.*;
|
||||
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.erros.exception.RestApiException;
|
||||
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.repository.QuizRepository;
|
||||
@@ -12,6 +10,8 @@ import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
||||
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.erros.exception.RestApiException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -35,18 +35,12 @@ public class QuizService {
|
||||
private final ModelMapper modelMapper;
|
||||
private final EnumMapperFactory enumMapperFactory;
|
||||
|
||||
@Transactional
|
||||
public void addQuiz(final AddQuizRequest addQuizRequest) {
|
||||
final Quiz quiz = modelMapper.map(addQuizRequest, Quiz.class);
|
||||
quizRepository.save(quiz);
|
||||
}
|
||||
|
||||
public Quiz findQuiz(final String resourceId) throws RestApiException {
|
||||
public Quiz findQuiz(final String resourceId) {
|
||||
return quizRepository.findByResourceId(resourceId)
|
||||
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
|
||||
}
|
||||
|
||||
public GetQuizResponse getQuiz(final String resourceId) throws RestApiException {
|
||||
public GetQuizResponse getQuiz(final String resourceId) {
|
||||
final Quiz quiz = findQuiz(resourceId);
|
||||
return QuizDtoConverter.convert(quiz, enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.controller.AddQuizRequest;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
||||
import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.modelmapper.ModelMapper;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class AddQuizServiceTest {
|
||||
|
||||
@InjectMocks
|
||||
private AddQuizService quizService;
|
||||
|
||||
@Mock
|
||||
private QuizRepository quizRepository;
|
||||
@Spy
|
||||
private ModelMapper modelMapper = new ModelMapperConfig().modelMapper();
|
||||
|
||||
@Test
|
||||
public void addQuiz_Success() {
|
||||
// given
|
||||
final AddQuizRequest request = AddQuizRequest.builder()
|
||||
.title("quiz")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
|
||||
// when
|
||||
quizService.addQuiz(request);
|
||||
|
||||
// then
|
||||
|
||||
// verify
|
||||
verify(quizRepository, times(1)).save(any(Quiz.class));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -170,24 +170,6 @@ class QuizServiceTest {
|
||||
assertThat(result.getSize()).isEqualTo(size);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addQuiz_Success() {
|
||||
// given
|
||||
final AddQuizRequest request = AddQuizRequest.builder()
|
||||
.title("quiz")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
|
||||
// when
|
||||
quizService.addQuiz(request);
|
||||
|
||||
// then
|
||||
|
||||
// verify
|
||||
verify(quizRepository, times(1)).save(any(Quiz.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getUnsolvedQuizSuccess_SolvedQuizEmpty() {
|
||||
// given
|
||||
|
||||
Reference in New Issue
Block a user