Refactor getQuiz
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user