diff --git a/src/main/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerService.java b/src/main/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerService.java index e0b5e15..17780a9 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerService.java @@ -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.quiz.converter.QuizDtoConverter; 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 org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -15,11 +15,11 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class AddAnswerService { - private final QuizService quizService; + private final GetQuizService quizService; private final AnswerRepository answerRepository; 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(); if (quizAnswer == null) { final Answer answer = QuizDtoConverter.convert(request, quiz); diff --git a/src/main/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerService.java b/src/main/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerService.java index 3b78782..5833a87 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerService.java @@ -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.entity.Answer; 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 org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -13,10 +13,10 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class UpdateAnswerService { - private final QuizService quizService; + private final GetQuizService quizService; 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(); if (quizAnswer != null) { quizAnswer.setDescription(request.getDescription()); diff --git a/src/main/java/com/mangkyu/employment/interview/app/mail/service/MailController.java b/src/main/java/com/mangkyu/employment/interview/app/mail/service/MailController.java index cd656b9..25a6fee 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/mail/service/MailController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/mail/service/MailController.java @@ -1,10 +1,9 @@ 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.quiz.entity.Quiz; 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.member.repository.MemberRepository; 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 lombok.RequiredArgsConstructor; 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.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import javax.annotation.PostConstruct; -import java.io.File; -import java.io.IOException; import java.util.*; @RequiredArgsConstructor @@ -27,7 +22,7 @@ public class MailController { private final MailService mailService; private final MemberRepository memberRepository; - private final QuizService quizService; + private final GetQuizService quizService; private final QuizRepository quizRepository; private final SolvedQuizRepository solvedQuizRepository; private final RequestMappingHandlerMapping requestMappingHandlerMapping; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizController.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizController.java index 5603ab2..1526fea 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizController.java @@ -2,7 +2,6 @@ package com.mangkyu.employment.interview.app.quiz.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.mangkyu.employment.interview.app.quiz.service.AddQuizService; -import com.mangkyu.employment.interview.app.quiz.service.QuizService; import lombok.*; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryController.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryController.java index 0094ab2..b214161 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryController.java @@ -1,6 +1,6 @@ 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 org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -13,7 +13,7 @@ import java.util.Map; @RequiredArgsConstructor class GetQuizCategoryController { - private final QuizService quizService; + private final GetQuizService quizService; @GetMapping("/quizzes/categories") public ResponseEntity>> getQuizCategoryList() { diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizController.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizController.java index e5dbc0f..9b5f5ee 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizController.java @@ -1,6 +1,10 @@ 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 org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -13,11 +17,17 @@ import javax.validation.Valid; @RequiredArgsConstructor class GetQuizController { - private final QuizService quizService; + private final GetQuizService quizService; + private final EnumMapperFactory enumMapperFactory; @GetMapping("/quizzes/{resourceId}") public ResponseEntity 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") diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponse.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponse.java index e8dff58..c9aacae 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponse.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponse.java @@ -1,7 +1,6 @@ package com.mangkyu.employment.interview.app.quiz.controller; import com.fasterxml.jackson.annotation.JsonInclude; -import com.mangkyu.employment.interview.enums.common.EnumMapperValue; import lombok.Builder; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java index f767876..4c0a502 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/WebQuizController.java @@ -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.service.GetAnswerService; 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 org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; @@ -16,16 +18,18 @@ import org.springframework.web.bind.annotation.PathVariable; @RequiredArgsConstructor public class WebQuizController { - private final QuizService quizService; + private final GetQuizService quizService; + private final EnumMapperFactory enumMapperFactory; private final GetAnswerService answerService; @GetMapping("/quizzes/editView/{resourceId}") public String addUserPage(@PathVariable final String resourceId, final Model model) { - final GetQuizResponse quiz = quizService.getQuiz(resourceId); - model.addAttribute("quiz", quiz); + com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quizService.getQuiz(resourceId); + final GetQuizResponse response = QuizDtoConverter.convert(quiz, enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory())); + model.addAttribute("quiz", response); - if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) { - final Answer answer = answerService.get(quiz.getAnswerResourceId()); + if (StringUtils.isNotBlank(response.getAnswerResourceId())) { + final Answer answer = answerService.get(response.getAnswerResourceId()); model.addAttribute("answer", QuizDtoConverter.convert(answer)); } else { model.addAttribute("answer", GetAnswerResponse.builder().build()); diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverter.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverter.java index 813cb94..87fa155 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverter.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverter.java @@ -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.entity.Answer; 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.value.QuizLevel; import lombok.AccessLevel; @@ -26,7 +25,7 @@ public final class QuizDtoConverter { .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() .resourceId(quiz.getResourceId()) .answerResourceId(getAnswerResourceId(quiz)) @@ -38,7 +37,7 @@ public final class QuizDtoConverter { } @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() .resourceId(quiz.getResourceId()) .answerResourceId(getAnswerResourceId(quiz)) @@ -55,14 +54,14 @@ public final class QuizDtoConverter { .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() .resourceId(addAnswerRequest.getResourceId()) .quiz(quiz) .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) ? null : quiz.getAnswer().getResourceId(); diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java similarity index 92% rename from src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java rename to src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java index 67ad4c5..9dcb406 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java @@ -20,32 +20,25 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; -import java.util.Random; import java.util.Set; import java.util.stream.Collectors; @Service @RequiredArgsConstructor @Transactional(readOnly = true) -public class QuizService { +public class GetQuizService { private final QuizRepository quizRepository; private final SolvedQuizRepository solvedQuizRepository; private final ModelMapper modelMapper; private final EnumMapperFactory enumMapperFactory; - public Quiz findQuiz(final String resourceId) { + public Quiz getQuiz(final String resourceId) { return quizRepository.findByResourceId(resourceId) .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) { final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize()); final Page quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest); diff --git a/src/main/java/com/mangkyu/employment/interview/cron/SendQuizCronJob.java b/src/main/java/com/mangkyu/employment/interview/cron/SendQuizCronJob.java index fd3de11..d9dec5e 100644 --- a/src/main/java/com/mangkyu/employment/interview/cron/SendQuizCronJob.java +++ b/src/main/java/com/mangkyu/employment/interview/cron/SendQuizCronJob.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.quiz.entity.Quiz; 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.enums.value.QuizDay; import lombok.RequiredArgsConstructor; @@ -24,7 +24,7 @@ import java.util.List; public class SendQuizCronJob { private final GetMemberService memberService; - private final QuizService quizService; + private final GetQuizService quizService; private final MailService mailService; private final SolvedQuizService solvedQuizService; diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerServiceTest.java index d50697b..907a7bf 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/AddAnswerServiceTest.java @@ -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.repository.AnswerRepository; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; -import com.mangkyu.employment.interview.app.quiz.service.QuizService; +import com.mangkyu.employment.interview.app.quiz.service.GetQuizService; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -23,7 +23,7 @@ class AddAnswerServiceTest { private AddAnswerService answerService; @Mock - private QuizService quizService; + private GetQuizService quizService; @Mock private AnswerRepository answerRepository; @@ -38,7 +38,7 @@ class AddAnswerServiceTest { doReturn(quiz) .when(quizService) - .findQuiz(request.getQuizResourceId()); + .getQuiz(request.getQuizResourceId()); // when answerService.add(request); diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java index 7225a3d..4f09413 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/GetAnswerServiceTest.java @@ -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.repository.AnswerRepository; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; -import com.mangkyu.employment.interview.app.quiz.service.QuizService; +import com.mangkyu.employment.interview.app.quiz.service.GetQuizService; import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; import com.mangkyu.employment.interview.erros.exception.RestApiException; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; @@ -27,7 +27,7 @@ class GetAnswerServiceTest { private GetAnswerService answerService; @Mock - private QuizService quizService; + private GetQuizService quizService; @Mock private AnswerRepository answerRepository; diff --git a/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java index 648f0f8..01e4b3e 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/answer/service/UpdateAnswerServiceTest.java @@ -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.repository.AnswerRepository; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; -import com.mangkyu.employment.interview.app.quiz.service.QuizService; -import com.mangkyu.employment.interview.erros.exception.RestApiException; +import com.mangkyu.employment.interview.app.quiz.service.GetQuizService; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -25,7 +24,7 @@ class UpdateAnswerServiceTest { private UpdateAnswerService answerService; @Mock - private QuizService quizService; + private GetQuizService quizService; @Mock private AnswerRepository answerRepository; @@ -42,7 +41,7 @@ class UpdateAnswerServiceTest { doReturn(quiz) .when(quizService) - .findQuiz(addAnswerRequest.getQuizResourceId()); + .getQuiz(addAnswerRequest.getQuizResourceId()); // when answerService.add(addAnswerRequest); diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryControllerTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryControllerTest.java index 63a264b..d50980a 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryControllerTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizCategoryControllerTest.java @@ -1,6 +1,6 @@ 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 org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +21,7 @@ class GetQuizCategoryControllerTest { private MockMvc mockMvc; @Autowired - private QuizService quizService; + private GetQuizService quizService; @Test void getCategory() throws Exception { diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizControllerTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizControllerTest.java index ddb571a..1eb672e 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizControllerTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizControllerTest.java @@ -1,11 +1,14 @@ package com.mangkyu.employment.interview.app.quiz.controller; 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.EnumMapperValue; +import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory; import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizLevel; +import com.mangkyu.employment.interview.testutils.EntityCreationUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; 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.Collections; -import java.util.UUID; import java.util.stream.Stream; import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.*; @@ -36,7 +38,10 @@ class GetQuizControllerTest { private MockMvc mockMvc; @Autowired - private QuizService quizService; + private GetQuizService quizService; + + @Autowired + private EnumMapperFactory enumMapperFactory; private static Stream provideParameters() { return Stream.of( @@ -50,17 +55,25 @@ class GetQuizControllerTest { @Test void getQuiz() throws Exception { // given - final String resourceId = UUID.randomUUID().toString(); - final GetQuizResponse quizResponse = GetQuizResponse.builder() - .title("quiz") - .quizLevelList(Arrays.asList(QuizLevel.JUNIOR.name(), QuizLevel.SENIOR.name())) - .category(enumMapperValue(QuizCategory.JAVA).getTitle()) - .build(); + final Quiz quiz = EntityCreationUtils.quiz(); + final String resourceId = quiz.getResourceId(); - doReturn(quizResponse) + doReturn(quiz) .when(quizService) .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 final ResultActions result = mockMvc.perform( MockMvcRequestBuilders.get("/quizzes/{resourceId}", resourceId) @@ -100,7 +113,7 @@ class GetQuizControllerTest { .build(); final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE); - final PageImpl quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); + final PageImpl quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder() .quizList(Collections.singletonList(quizResponse)) @@ -155,7 +168,7 @@ class GetQuizControllerTest { .build(); final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE); - final PageImpl quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); + final PageImpl quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder() .quizList(Collections.singletonList(quizResponse)) diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverterTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverterTest.java index 29c9531..fa952fb 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverterTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/converter/QuizDtoConverterTest.java @@ -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.entity.Answer; 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.EnumMapperValue; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; @@ -24,7 +23,7 @@ class QuizDtoConverterTest { .quizResourceId(UUID.randomUUID().toString()) .description("desc") .build(); - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); // when final Answer result = QuizDtoConverter.convert(addAnswerRequest, quiz); @@ -37,7 +36,7 @@ class QuizDtoConverterTest { @Test public void convertAnswerToGetAnswerResponse() { // given - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); final Answer answer = EntityCreationUtils.answer(quiz); // when @@ -53,7 +52,7 @@ class QuizDtoConverterTest { @Test public void convertQuizToGetQuizResponseWithCategory_AnswerExists() { // given - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); final Answer answer = EntityCreationUtils.answer(quiz); quiz.setAnswer(answer); @@ -72,7 +71,7 @@ class QuizDtoConverterTest { @Test public void convertQuizToGetQuizResponseWithCategory_NotAnswerExists() { // given - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); // when final GetQuizResponse result = QuizDtoConverter.convert(quiz, enumMapperValue(quiz.getQuizCategory())); @@ -89,7 +88,7 @@ class QuizDtoConverterTest { @Test public void convertQuizToGetQuizResponse_AnswerExists() { // given - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); final Answer answer = EntityCreationUtils.answer(quiz); quiz.setAnswer(answer); @@ -108,7 +107,7 @@ class QuizDtoConverterTest { @Test public void convertQuizToGetQuizResponse_AnswerNotExists() { // given - final Quiz quiz = EntityCreationUtils.quiz(); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = EntityCreationUtils.quiz(); // when final GetQuizResponse result = QuizDtoConverter.convert(quiz); diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java similarity index 66% rename from src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java rename to src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java index c139140..8fac844 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java @@ -1,7 +1,6 @@ package com.mangkyu.employment.interview.app.quiz.service; 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.repository.QuizRepository; 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.test.util.ReflectionTestUtils; -import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -37,10 +35,10 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) -class QuizServiceTest { +class GetQuizServiceTest { @InjectMocks - private QuizService quizService; + private GetQuizService quizService; @Mock private QuizRepository quizRepository; @@ -60,7 +58,7 @@ class QuizServiceTest { final int page = 0; final int size = 20; - final List quizList = quizList(); + final List quizList = quizList(); final SearchQuizListRequest request = SearchQuizListRequest.builder() .query("query") .categories(new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.JAVA))) @@ -68,10 +66,11 @@ class QuizServiceTest { .page(0) .size(20) .build(); - final Pageable pageable = PageRequest.of(page, size); - final PageImpl quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); - doReturn(quizPage).when(quizRepository).search(any(QuizSearchCondition.class), any(PageRequest.class)); + final PageImpl quizPage = new PageImpl<>(quizList(), PageRequest.of(page, size), quizList.size()); + doReturn(quizPage) + .when(quizRepository) + .search(any(QuizSearchCondition.class), any(PageRequest.class)); // when final GetQuizResponseHolder result = quizService.searchQuizList(request); @@ -83,12 +82,16 @@ class QuizServiceTest { @Test public void findQuizEntityFail_NotExists() { // 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 - final RestApiException result = assertThrows(RestApiException.class, () -> quizService.findQuiz(quiz.getResourceId())); + final RestApiException result = assertThrows( + RestApiException.class, + () -> quizService.getQuiz(quiz.getResourceId())); // then assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND); @@ -97,13 +100,14 @@ class QuizServiceTest { @Test public void findQuizEntitySuccess() { // given - final long id = -1L; - final Quiz quiz = quiz(id); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L); - doReturn(Optional.of(quiz)).when(quizRepository).findByResourceId(quiz.getResourceId()); + doReturn(Optional.of(quiz)) + .when(quizRepository) + .findByResourceId(quiz.getResourceId()); // when - final Quiz result = quizService.findQuiz(quiz.getResourceId()); + final com.mangkyu.employment.interview.app.quiz.entity.Quiz result = quizService.getQuiz(quiz.getResourceId()); // then assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId()); @@ -111,39 +115,6 @@ class QuizServiceTest { 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 public void getCursorQuizList_Success() { // given @@ -155,11 +126,13 @@ class QuizServiceTest { .page(page) .size(size) .build(); - final List quizList = quizList(); + final List quizList = quizList(); final Pageable pageable = PageRequest.of(page, size); - final PageImpl quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); - doReturn(quizPage).when(quizRepository).findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class)); + final PageImpl quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); + doReturn(quizPage) + .when(quizRepository) + .findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class)); // when final GetQuizResponseHolder result = quizService.getQuizList(request); @@ -177,15 +150,20 @@ class QuizServiceTest { final Set solvedQuizIdList = solvedQuizList.stream() .map(v -> v.getQuiz().getId()) .collect(Collectors.toSet()); - final List unsolvedQuizList = Collections.singletonList(quiz(4L)); + final List unsolvedQuizList = Collections.singletonList(quiz(4L)); final Set quizCategorySet = new HashSet<>(); quizCategorySet.add(QuizCategory.CULTURE); quizCategorySet.add(QuizCategory.DATABASE); quizCategorySet.add(QuizCategory.EXPERIENCE); - doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId); - doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); + doReturn(solvedQuizList) + .when(solvedQuizRepository) + .findAllByMember_Id(userId); + + doReturn(unsolvedQuizList) + .when(quizRepository) + .customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); // when final Quizzes quizzes = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); @@ -198,15 +176,20 @@ class QuizServiceTest { public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() { // given final List solvedQuizList = Collections.emptyList(); - final List unsolvedQuizList = Collections.singletonList(quiz(4L)); + final List unsolvedQuizList = Collections.singletonList(quiz(4L)); final Set quizCategorySet = new HashSet<>(); quizCategorySet.add(QuizCategory.CULTURE); quizCategorySet.add(QuizCategory.DATABASE); quizCategorySet.add(QuizCategory.EXPERIENCE); - doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId); - doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); + doReturn(solvedQuizList) + .when(solvedQuizRepository) + .findAllByMember_Id(userId); + + doReturn(unsolvedQuizList) + .when(quizRepository) + .customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); // when final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); @@ -228,8 +211,12 @@ class QuizServiceTest { .expose(true) .build(); - doReturn(Collections.singletonList(enumMapperValue)).when(enumMapperFactory).get(EnumMapperKey.QUIZ_CATEGORY); - doReturn(count).when(quizRepository).countByQuizCategoryAndIsEnableTrue(quizCategory); + doReturn(Collections.singletonList(enumMapperValue)) + .when(enumMapperFactory) + .get(EnumMapperKey.QUIZ_CATEGORY); + doReturn(count) + .when(quizRepository) + .countByQuizCategoryAndIsEnableTrue(quizCategory); // when final List result = quizService.getQuizCategoryList(); @@ -239,8 +226,8 @@ class QuizServiceTest { assertThat(result.get(0).getCount()).isEqualTo(count); } - private List quizList() { - final List unsolvedQuizList = new ArrayList<>(); + private List quizList() { + final List unsolvedQuizList = new ArrayList<>(); unsolvedQuizList.add(quiz(1L)); unsolvedQuizList.add(quiz(2L)); @@ -259,15 +246,15 @@ class QuizServiceTest { } 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() .quiz(quiz) .build(); } - private Quiz quiz(final long id) { - final Quiz quiz = Quiz.builder() + private com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz(final long id) { + final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = com.mangkyu.employment.interview.app.quiz.entity.Quiz.builder() .title("quiz") .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) .quizCategory(QuizCategory.JAVA) diff --git a/src/test/java/com/mangkyu/employment/interview/cron/SendQuizCronJobTest.java b/src/test/java/com/mangkyu/employment/interview/cron/SendQuizCronJobTest.java index 5723b7b..333553b 100644 --- a/src/test/java/com/mangkyu/employment/interview/cron/SendQuizCronJobTest.java +++ b/src/test/java/com/mangkyu/employment/interview/cron/SendQuizCronJobTest.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.quiz.entity.Quiz; 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.enums.value.QuizDay; import com.mangkyu.employment.interview.enums.value.QuizLevel; @@ -31,7 +31,7 @@ class SendQuizCronJobTest { @Mock private GetMemberService memberService; @Mock - private QuizService quizService; + private GetQuizService quizService; @Mock private MailService mailService; @Mock