Refactor getQuiz

This commit is contained in:
MangKyu
2023-02-18 21:21:38 +09:00
parent d493a2b3ed
commit 52591b947a
19 changed files with 135 additions and 138 deletions

View File

@@ -5,7 +5,7 @@ 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.app.quiz.converter.QuizDtoConverter;
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.GetQuizService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -15,11 +15,11 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public class AddAnswerService { public class AddAnswerService {
private final QuizService quizService; private final GetQuizService quizService;
private final AnswerRepository answerRepository; private final AnswerRepository answerRepository;
public void add(final AddAnswerRequest request) { public void add(final AddAnswerRequest request) {
final Quiz quiz = quizService.findQuiz(request.getQuizResourceId()); final Quiz quiz = quizService.getQuiz(request.getQuizResourceId());
final Answer quizAnswer = quiz.getAnswer(); final Answer quizAnswer = quiz.getAnswer();
if (quizAnswer == null) { if (quizAnswer == null) {
final Answer answer = QuizDtoConverter.convert(request, quiz); final Answer answer = QuizDtoConverter.convert(request, quiz);

View File

@@ -3,7 +3,7 @@ package com.mangkyu.employment.interview.app.answer.service;
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest; 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.entity.Answer;
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.GetQuizService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -13,10 +13,10 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public class UpdateAnswerService { public class UpdateAnswerService {
private final QuizService quizService; private final GetQuizService quizService;
public void add(final AddAnswerRequest request) { public void add(final AddAnswerRequest request) {
final Quiz quiz = quizService.findQuiz(request.getQuizResourceId()); final Quiz quiz = quizService.getQuiz(request.getQuizResourceId());
final Answer quizAnswer = quiz.getAnswer(); final Answer quizAnswer = quiz.getAnswer();
if (quizAnswer != null) { if (quizAnswer != null) {
quizAnswer.setDescription(request.getDescription()); quizAnswer.setDescription(request.getDescription());

View File

@@ -1,10 +1,9 @@
package com.mangkyu.employment.interview.app.mail.service; package com.mangkyu.employment.interview.app.mail.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mangkyu.employment.interview.app.member.entity.Member; import com.mangkyu.employment.interview.app.member.entity.Member;
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.repository.QuizRepository; import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository; import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
import com.mangkyu.employment.interview.app.member.repository.MemberRepository; import com.mangkyu.employment.interview.app.member.repository.MemberRepository;
import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizCategory;
@@ -12,14 +11,10 @@ import com.mangkyu.employment.interview.enums.value.QuizDay;
import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.enums.value.QuizLevel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
import java.util.*; import java.util.*;
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -27,7 +22,7 @@ public class MailController {
private final MailService mailService; private final MailService mailService;
private final MemberRepository memberRepository; private final MemberRepository memberRepository;
private final QuizService quizService; private final GetQuizService quizService;
private final QuizRepository quizRepository; private final QuizRepository quizRepository;
private final SolvedQuizRepository solvedQuizRepository; private final SolvedQuizRepository solvedQuizRepository;
private final RequestMappingHandlerMapping requestMappingHandlerMapping; private final RequestMappingHandlerMapping requestMappingHandlerMapping;

View File

@@ -2,7 +2,6 @@ package com.mangkyu.employment.interview.app.quiz.controller;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mangkyu.employment.interview.app.quiz.service.AddQuizService; import com.mangkyu.employment.interview.app.quiz.service.AddQuizService;
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
import lombok.*; import lombok.*;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;

View File

@@ -1,6 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
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;
@@ -13,7 +13,7 @@ import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
class GetQuizCategoryController { class GetQuizCategoryController {
private final QuizService quizService; private final GetQuizService quizService;
@GetMapping("/quizzes/categories") @GetMapping("/quizzes/categories")
public ResponseEntity<Map<String, List<QuizCategoryResponse>>> getQuizCategoryList() { public ResponseEntity<Map<String, List<QuizCategoryResponse>>> getQuizCategoryList() {

View File

@@ -1,6 +1,10 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; 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.GetQuizService;
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
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;
@@ -13,11 +17,17 @@ import javax.validation.Valid;
@RequiredArgsConstructor @RequiredArgsConstructor
class GetQuizController { class GetQuizController {
private final QuizService quizService; private final GetQuizService quizService;
private final EnumMapperFactory enumMapperFactory;
@GetMapping("/quizzes/{resourceId}") @GetMapping("/quizzes/{resourceId}")
public ResponseEntity<GetQuizResponse> getQuiz(@PathVariable final String resourceId) { public ResponseEntity<GetQuizResponse> getQuiz(@PathVariable final String resourceId) {
return ResponseEntity.ok(quizService.getQuiz(resourceId)); Quiz quiz = quizService.getQuiz(resourceId);
return ResponseEntity.ok(
QuizDtoConverter.convert(
quiz,
enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()))
);
} }
@GetMapping("/quizzes") @GetMapping("/quizzes")

View File

@@ -1,7 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -4,7 +4,9 @@ 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.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.converter.QuizDtoConverter;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@@ -16,16 +18,18 @@ import org.springframework.web.bind.annotation.PathVariable;
@RequiredArgsConstructor @RequiredArgsConstructor
public class WebQuizController { public class WebQuizController {
private final QuizService quizService; private final GetQuizService quizService;
private final EnumMapperFactory enumMapperFactory;
private final GetAnswerService answerService; private final GetAnswerService answerService;
@GetMapping("/quizzes/editView/{resourceId}") @GetMapping("/quizzes/editView/{resourceId}")
public String addUserPage(@PathVariable final String resourceId, final Model model) { public String addUserPage(@PathVariable final String resourceId, final Model model) {
final GetQuizResponse quiz = quizService.getQuiz(resourceId); com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quizService.getQuiz(resourceId);
model.addAttribute("quiz", quiz); final GetQuizResponse response = QuizDtoConverter.convert(quiz, enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()));
model.addAttribute("quiz", response);
if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) { if (StringUtils.isNotBlank(response.getAnswerResourceId())) {
final Answer answer = answerService.get(quiz.getAnswerResourceId()); final Answer answer = answerService.get(response.getAnswerResourceId());
model.addAttribute("answer", QuizDtoConverter.convert(answer)); model.addAttribute("answer", QuizDtoConverter.convert(answer));
} else { } else {
model.addAttribute("answer", GetAnswerResponse.builder().build()); model.addAttribute("answer", GetAnswerResponse.builder().build());

View File

@@ -4,7 +4,6 @@ import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
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.entity.Answer;
import com.mangkyu.employment.interview.app.quiz.controller.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.controller.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue; import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.enums.value.QuizLevel;
import lombok.AccessLevel; import lombok.AccessLevel;
@@ -26,7 +25,7 @@ public final class QuizDtoConverter {
.build(); .build();
} }
public static GetQuizResponse convert(final Quiz quiz) { public static GetQuizResponse convert(final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz) {
return GetQuizResponse.builder() return GetQuizResponse.builder()
.resourceId(quiz.getResourceId()) .resourceId(quiz.getResourceId())
.answerResourceId(getAnswerResourceId(quiz)) .answerResourceId(getAnswerResourceId(quiz))
@@ -38,7 +37,7 @@ public final class QuizDtoConverter {
} }
@Deprecated @Deprecated
public static GetQuizResponse convert(final Quiz quiz, final EnumMapperValue enumMapperValue) { public static GetQuizResponse convert(final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz, final EnumMapperValue enumMapperValue) {
return GetQuizResponse.builder() return GetQuizResponse.builder()
.resourceId(quiz.getResourceId()) .resourceId(quiz.getResourceId())
.answerResourceId(getAnswerResourceId(quiz)) .answerResourceId(getAnswerResourceId(quiz))
@@ -55,14 +54,14 @@ public final class QuizDtoConverter {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
public static Answer convert(final AddAnswerRequest addAnswerRequest, final Quiz quiz) { public static Answer convert(final AddAnswerRequest addAnswerRequest, final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz) {
return Answer.builder() return Answer.builder()
.resourceId(addAnswerRequest.getResourceId()) .resourceId(addAnswerRequest.getResourceId())
.quiz(quiz) .quiz(quiz)
.description(addAnswerRequest.getDescription()).build(); .description(addAnswerRequest.getDescription()).build();
} }
private static String getAnswerResourceId(final Quiz quiz) { private static String getAnswerResourceId(final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz) {
return (quiz.getAnswer() == null) return (quiz.getAnswer() == null)
? null ? null
: quiz.getAnswer().getResourceId(); : quiz.getAnswer().getResourceId();

View File

@@ -20,32 +20,25 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Transactional(readOnly = true) @Transactional(readOnly = true)
public class QuizService { public class GetQuizService {
private final QuizRepository quizRepository; private final QuizRepository quizRepository;
private final SolvedQuizRepository solvedQuizRepository; private final SolvedQuizRepository solvedQuizRepository;
private final ModelMapper modelMapper; private final ModelMapper modelMapper;
private final EnumMapperFactory enumMapperFactory; private final EnumMapperFactory enumMapperFactory;
public Quiz findQuiz(final String resourceId) { public Quiz getQuiz(final String resourceId) {
return quizRepository.findByResourceId(resourceId) return quizRepository.findByResourceId(resourceId)
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND)); .orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
} }
public GetQuizResponse getQuiz(final String resourceId) {
final Quiz quiz = findQuiz(resourceId);
return QuizDtoConverter.convert(quiz, enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()));
}
public GetQuizResponseHolder getQuizList(final GetQuizRequest getQuizRequest) { public GetQuizResponseHolder getQuizList(final GetQuizRequest getQuizRequest) {
final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize()); final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize());
final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest); final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest);

View File

@@ -5,7 +5,7 @@ import com.mangkyu.employment.interview.app.member.entity.Member;
import com.mangkyu.employment.interview.app.member.service.GetMemberService; import com.mangkyu.employment.interview.app.member.service.GetMemberService;
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.entity.Quizzes; import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService; import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
import com.mangkyu.employment.interview.enums.value.QuizDay; import com.mangkyu.employment.interview.enums.value.QuizDay;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -24,7 +24,7 @@ import java.util.List;
public class SendQuizCronJob { public class SendQuizCronJob {
private final GetMemberService memberService; private final GetMemberService memberService;
private final QuizService quizService; private final GetQuizService quizService;
private final MailService mailService; private final MailService mailService;
private final SolvedQuizService solvedQuizService; private final SolvedQuizService solvedQuizService;

View File

@@ -4,7 +4,7 @@ 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.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.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.GetQuizService;
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;
@@ -23,7 +23,7 @@ class AddAnswerServiceTest {
private AddAnswerService answerService; private AddAnswerService answerService;
@Mock @Mock
private QuizService quizService; private GetQuizService quizService;
@Mock @Mock
private AnswerRepository answerRepository; private AnswerRepository answerRepository;
@@ -38,7 +38,7 @@ class AddAnswerServiceTest {
doReturn(quiz) doReturn(quiz)
.when(quizService) .when(quizService)
.findQuiz(request.getQuizResourceId()); .getQuiz(request.getQuizResourceId());
// when // when
answerService.add(request); answerService.add(request);

View File

@@ -3,7 +3,7 @@ package com.mangkyu.employment.interview.app.answer.service;
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.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.GetQuizService;
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 com.mangkyu.employment.interview.testutils.EntityCreationUtils; import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
@@ -27,7 +27,7 @@ class GetAnswerServiceTest {
private GetAnswerService answerService; private GetAnswerService answerService;
@Mock @Mock
private QuizService quizService; private GetQuizService quizService;
@Mock @Mock
private AnswerRepository answerRepository; private AnswerRepository answerRepository;

View File

@@ -4,8 +4,7 @@ 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.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.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.GetQuizService;
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;
@@ -25,7 +24,7 @@ class UpdateAnswerServiceTest {
private UpdateAnswerService answerService; private UpdateAnswerService answerService;
@Mock @Mock
private QuizService quizService; private GetQuizService quizService;
@Mock @Mock
private AnswerRepository answerRepository; private AnswerRepository answerRepository;
@@ -42,7 +41,7 @@ class UpdateAnswerServiceTest {
doReturn(quiz) doReturn(quiz)
.when(quizService) .when(quizService)
.findQuiz(addAnswerRequest.getQuizResourceId()); .getQuiz(addAnswerRequest.getQuizResourceId());
// when // when
answerService.add(addAnswerRequest); answerService.add(addAnswerRequest);

View File

@@ -1,6 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizCategory;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +21,7 @@ class GetQuizCategoryControllerTest {
private MockMvc mockMvc; private MockMvc mockMvc;
@Autowired @Autowired
private QuizService quizService; private GetQuizService quizService;
@Test @Test
void getCategory() throws Exception { void getCategory() throws Exception {

View File

@@ -1,11 +1,14 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
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.GetQuizService;
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
import com.mangkyu.employment.interview.enums.common.EnumMapperType; import com.mangkyu.employment.interview.enums.common.EnumMapperType;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue; 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.QuizCategory;
import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.enums.value.QuizLevel;
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
@@ -21,7 +24,6 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.UUID;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.*; import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.*;
@@ -36,7 +38,10 @@ class GetQuizControllerTest {
private MockMvc mockMvc; private MockMvc mockMvc;
@Autowired @Autowired
private QuizService quizService; private GetQuizService quizService;
@Autowired
private EnumMapperFactory enumMapperFactory;
private static Stream<Arguments> provideParameters() { private static Stream<Arguments> provideParameters() {
return Stream.of( return Stream.of(
@@ -50,17 +55,25 @@ class GetQuizControllerTest {
@Test @Test
void getQuiz() throws Exception { void getQuiz() throws Exception {
// given // given
final String resourceId = UUID.randomUUID().toString(); final Quiz quiz = EntityCreationUtils.quiz();
final GetQuizResponse quizResponse = GetQuizResponse.builder() final String resourceId = quiz.getResourceId();
.title("quiz")
.quizLevelList(Arrays.asList(QuizLevel.JUNIOR.name(), QuizLevel.SENIOR.name()))
.category(enumMapperValue(QuizCategory.JAVA).getTitle())
.build();
doReturn(quizResponse) doReturn(quiz)
.when(quizService) .when(quizService)
.getQuiz(resourceId); .getQuiz(resourceId);
final QuizCategory quizCategory = QuizCategory.JAVA;
final EnumMapperValue enumMapperValue = EnumMapperValue.builder()
.code(quizCategory.name())
.title(quizCategory.getTitle())
.desc(quizCategory.getDesc())
.expose(true)
.build();
doReturn(Collections.singletonList(enumMapperValue))
.when(enumMapperFactory)
.get(EnumMapperKey.QUIZ_CATEGORY);
// when // when
final ResultActions result = mockMvc.perform( final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.get("/quizzes/{resourceId}", resourceId) MockMvcRequestBuilders.get("/quizzes/{resourceId}", resourceId)
@@ -100,7 +113,7 @@ class GetQuizControllerTest {
.build(); .build();
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE); final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
final PageImpl<Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder() final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder()
.quizList(Collections.singletonList(quizResponse)) .quizList(Collections.singletonList(quizResponse))
@@ -155,7 +168,7 @@ class GetQuizControllerTest {
.build(); .build();
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE); final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
final PageImpl<Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder() final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder()
.quizList(Collections.singletonList(quizResponse)) .quizList(Collections.singletonList(quizResponse))

View File

@@ -4,7 +4,6 @@ import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
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.entity.Answer;
import com.mangkyu.employment.interview.app.quiz.controller.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.controller.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.enums.common.EnumMapperType; import com.mangkyu.employment.interview.enums.common.EnumMapperType;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue; import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import com.mangkyu.employment.interview.testutils.EntityCreationUtils; import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
@@ -24,7 +23,7 @@ class QuizDtoConverterTest {
.quizResourceId(UUID.randomUUID().toString()) .quizResourceId(UUID.randomUUID().toString())
.description("desc") .description("desc")
.build(); .build();
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
// when // when
final Answer result = QuizDtoConverter.convert(addAnswerRequest, quiz); final Answer result = QuizDtoConverter.convert(addAnswerRequest, quiz);
@@ -37,7 +36,7 @@ class QuizDtoConverterTest {
@Test @Test
public void convertAnswerToGetAnswerResponse() { public void convertAnswerToGetAnswerResponse() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
final Answer answer = EntityCreationUtils.answer(quiz); final Answer answer = EntityCreationUtils.answer(quiz);
// when // when
@@ -53,7 +52,7 @@ class QuizDtoConverterTest {
@Test @Test
public void convertQuizToGetQuizResponseWithCategory_AnswerExists() { public void convertQuizToGetQuizResponseWithCategory_AnswerExists() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
final Answer answer = EntityCreationUtils.answer(quiz); final Answer answer = EntityCreationUtils.answer(quiz);
quiz.setAnswer(answer); quiz.setAnswer(answer);
@@ -72,7 +71,7 @@ class QuizDtoConverterTest {
@Test @Test
public void convertQuizToGetQuizResponseWithCategory_NotAnswerExists() { public void convertQuizToGetQuizResponseWithCategory_NotAnswerExists() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
// when // when
final GetQuizResponse result = QuizDtoConverter.convert(quiz, enumMapperValue(quiz.getQuizCategory())); final GetQuizResponse result = QuizDtoConverter.convert(quiz, enumMapperValue(quiz.getQuizCategory()));
@@ -89,7 +88,7 @@ class QuizDtoConverterTest {
@Test @Test
public void convertQuizToGetQuizResponse_AnswerExists() { public void convertQuizToGetQuizResponse_AnswerExists() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
final Answer answer = EntityCreationUtils.answer(quiz); final Answer answer = EntityCreationUtils.answer(quiz);
quiz.setAnswer(answer); quiz.setAnswer(answer);
@@ -108,7 +107,7 @@ class QuizDtoConverterTest {
@Test @Test
public void convertQuizToGetQuizResponse_AnswerNotExists() { public void convertQuizToGetQuizResponse_AnswerNotExists() {
// given // given
final Quiz quiz = EntityCreationUtils.quiz(); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz();
// when // when
final GetQuizResponse result = QuizDtoConverter.convert(quiz); final GetQuizResponse result = QuizDtoConverter.convert(quiz);

View File

@@ -1,7 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.service; package com.mangkyu.employment.interview.app.quiz.service;
import com.mangkyu.employment.interview.app.quiz.controller.*; import com.mangkyu.employment.interview.app.quiz.controller.*;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.app.quiz.entity.Quizzes; import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository; import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz; import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
@@ -26,7 +25,6 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.util.ReflectionTestUtils;
import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -37,10 +35,10 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
class QuizServiceTest { class GetQuizServiceTest {
@InjectMocks @InjectMocks
private QuizService quizService; private GetQuizService quizService;
@Mock @Mock
private QuizRepository quizRepository; private QuizRepository quizRepository;
@@ -60,7 +58,7 @@ class QuizServiceTest {
final int page = 0; final int page = 0;
final int size = 20; final int size = 20;
final List<Quiz> quizList = quizList(); final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList = quizList();
final SearchQuizListRequest request = SearchQuizListRequest.builder() final SearchQuizListRequest request = SearchQuizListRequest.builder()
.query("query") .query("query")
.categories(new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.JAVA))) .categories(new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.JAVA)))
@@ -68,10 +66,11 @@ class QuizServiceTest {
.page(0) .page(0)
.size(20) .size(20)
.build(); .build();
final Pageable pageable = PageRequest.of(page, size);
final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(quizList(), PageRequest.of(page, size), quizList.size());
doReturn(quizPage).when(quizRepository).search(any(QuizSearchCondition.class), any(PageRequest.class)); doReturn(quizPage)
.when(quizRepository)
.search(any(QuizSearchCondition.class), any(PageRequest.class));
// when // when
final GetQuizResponseHolder result = quizService.searchQuizList(request); final GetQuizResponseHolder result = quizService.searchQuizList(request);
@@ -83,12 +82,16 @@ class QuizServiceTest {
@Test @Test
public void findQuizEntityFail_NotExists() { public void findQuizEntityFail_NotExists() {
// given // given
final Quiz quiz = quiz(-1L); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L);
doReturn(Optional.empty()).when(quizRepository).findByResourceId(quiz.getResourceId()); doReturn(Optional.empty())
.when(quizRepository)
.findByResourceId(quiz.getResourceId());
// when // when
final RestApiException result = assertThrows(RestApiException.class, () -> quizService.findQuiz(quiz.getResourceId())); final RestApiException result = assertThrows(
RestApiException.class,
() -> quizService.getQuiz(quiz.getResourceId()));
// then // then
assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND); assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND);
@@ -97,13 +100,14 @@ class QuizServiceTest {
@Test @Test
public void findQuizEntitySuccess() { public void findQuizEntitySuccess() {
// given // given
final long id = -1L; final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L);
final Quiz quiz = quiz(id);
doReturn(Optional.of(quiz)).when(quizRepository).findByResourceId(quiz.getResourceId()); doReturn(Optional.of(quiz))
.when(quizRepository)
.findByResourceId(quiz.getResourceId());
// when // when
final Quiz result = quizService.findQuiz(quiz.getResourceId()); final com.mangkyu.employment.interview.app.quiz.entity.Quiz result = quizService.getQuiz(quiz.getResourceId());
// then // then
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId()); assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
@@ -111,39 +115,6 @@ class QuizServiceTest {
assertThat(result.getCreatedAt()).isEqualTo(quiz.getCreatedAt()); assertThat(result.getCreatedAt()).isEqualTo(quiz.getCreatedAt());
} }
@Test
public void getQuizFail_NotExists() {
// given
final Quiz quiz = quiz(-1L);
doReturn(Optional.empty()).when(quizRepository).findByResourceId(quiz.getResourceId());
// when
final RestApiException result = assertThrows(RestApiException.class, () -> quizService.getQuiz(quiz.getResourceId()));
// then
assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND);
}
@Test
public void getQuizSuccess() {
// given
final long id = -1L;
final Quiz quiz = quiz(id);
doReturn(Optional.of(quiz)).when(quizRepository).findByResourceId(quiz.getResourceId());
// when
final GetQuizResponse result = quizService.getQuiz(quiz.getResourceId());
// then
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
assertThat(result.getTitle()).isEqualTo(quiz.getTitle());
assertThat(result.getCategory()).isEqualTo(quiz.getQuizCategory().getTitle());
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
assertThat(result.getCreatedAt()).isEqualTo(Timestamp.valueOf(quiz.getCreatedAt()).getTime());
}
@Test @Test
public void getCursorQuizList_Success() { public void getCursorQuizList_Success() {
// given // given
@@ -155,11 +126,13 @@ class QuizServiceTest {
.page(page) .page(page)
.size(size) .size(size)
.build(); .build();
final List<Quiz> quizList = quizList(); final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList = quizList();
final Pageable pageable = PageRequest.of(page, size); final Pageable pageable = PageRequest.of(page, size);
final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size());
doReturn(quizPage).when(quizRepository).findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class)); doReturn(quizPage)
.when(quizRepository)
.findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class));
// when // when
final GetQuizResponseHolder result = quizService.getQuizList(request); final GetQuizResponseHolder result = quizService.getQuizList(request);
@@ -177,15 +150,20 @@ class QuizServiceTest {
final Set<Long> solvedQuizIdList = solvedQuizList.stream() final Set<Long> solvedQuizIdList = solvedQuizList.stream()
.map(v -> v.getQuiz().getId()) .map(v -> v.getQuiz().getId())
.collect(Collectors.toSet()); .collect(Collectors.toSet());
final List<Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L)); final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L));
final Set<QuizCategory> quizCategorySet = new HashSet<>(); final Set<QuizCategory> quizCategorySet = new HashSet<>();
quizCategorySet.add(QuizCategory.CULTURE); quizCategorySet.add(QuizCategory.CULTURE);
quizCategorySet.add(QuizCategory.DATABASE); quizCategorySet.add(QuizCategory.DATABASE);
quizCategorySet.add(QuizCategory.EXPERIENCE); quizCategorySet.add(QuizCategory.EXPERIENCE);
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId); doReturn(solvedQuizList)
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); .when(solvedQuizRepository)
.findAllByMember_Id(userId);
doReturn(unsolvedQuizList)
.when(quizRepository)
.customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel);
// when // when
final Quizzes quizzes = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); final Quizzes quizzes = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
@@ -198,15 +176,20 @@ class QuizServiceTest {
public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() { public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() {
// given // given
final List<SolvedQuiz> solvedQuizList = Collections.emptyList(); final List<SolvedQuiz> solvedQuizList = Collections.emptyList();
final List<Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L)); final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L));
final Set<QuizCategory> quizCategorySet = new HashSet<>(); final Set<QuizCategory> quizCategorySet = new HashSet<>();
quizCategorySet.add(QuizCategory.CULTURE); quizCategorySet.add(QuizCategory.CULTURE);
quizCategorySet.add(QuizCategory.DATABASE); quizCategorySet.add(QuizCategory.DATABASE);
quizCategorySet.add(QuizCategory.EXPERIENCE); quizCategorySet.add(QuizCategory.EXPERIENCE);
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId); doReturn(solvedQuizList)
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); .when(solvedQuizRepository)
.findAllByMember_Id(userId);
doReturn(unsolvedQuizList)
.when(quizRepository)
.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel);
// when // when
final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
@@ -228,8 +211,12 @@ class QuizServiceTest {
.expose(true) .expose(true)
.build(); .build();
doReturn(Collections.singletonList(enumMapperValue)).when(enumMapperFactory).get(EnumMapperKey.QUIZ_CATEGORY); doReturn(Collections.singletonList(enumMapperValue))
doReturn(count).when(quizRepository).countByQuizCategoryAndIsEnableTrue(quizCategory); .when(enumMapperFactory)
.get(EnumMapperKey.QUIZ_CATEGORY);
doReturn(count)
.when(quizRepository)
.countByQuizCategoryAndIsEnableTrue(quizCategory);
// when // when
final List<QuizCategoryResponse> result = quizService.getQuizCategoryList(); final List<QuizCategoryResponse> result = quizService.getQuizCategoryList();
@@ -239,8 +226,8 @@ class QuizServiceTest {
assertThat(result.get(0).getCount()).isEqualTo(count); assertThat(result.get(0).getCount()).isEqualTo(count);
} }
private List<Quiz> quizList() { private List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList() {
final List<Quiz> unsolvedQuizList = new ArrayList<>(); final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = new ArrayList<>();
unsolvedQuizList.add(quiz(1L)); unsolvedQuizList.add(quiz(1L));
unsolvedQuizList.add(quiz(2L)); unsolvedQuizList.add(quiz(2L));
@@ -259,15 +246,15 @@ class QuizServiceTest {
} }
private SolvedQuiz solvedQuiz(final long id) { private SolvedQuiz solvedQuiz(final long id) {
final Quiz quiz = quiz(id); final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(id);
return SolvedQuiz.builder() return SolvedQuiz.builder()
.quiz(quiz) .quiz(quiz)
.build(); .build();
} }
private Quiz quiz(final long id) { private com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz(final long id) {
final Quiz quiz = Quiz.builder() final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = com.mangkyu.employment.interview.app.quiz.entity.Quiz.builder()
.title("quiz") .title("quiz")
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
.quizCategory(QuizCategory.JAVA) .quizCategory(QuizCategory.JAVA)

View File

@@ -5,7 +5,7 @@ import com.mangkyu.employment.interview.app.member.entity.Member;
import com.mangkyu.employment.interview.app.member.service.GetMemberService; import com.mangkyu.employment.interview.app.member.service.GetMemberService;
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.entity.Quizzes; import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService; import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
import com.mangkyu.employment.interview.enums.value.QuizDay; import com.mangkyu.employment.interview.enums.value.QuizDay;
import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.enums.value.QuizLevel;
@@ -31,7 +31,7 @@ class SendQuizCronJobTest {
@Mock @Mock
private GetMemberService memberService; private GetMemberService memberService;
@Mock @Mock
private QuizService quizService; private GetQuizService quizService;
@Mock @Mock
private MailService mailService; private MailService mailService;
@Mock @Mock