From f70732d72f2427bc200ca6e27a60f31b16ec4dca Mon Sep 17 00:00:00 2001 From: MangKyu Date: Sat, 18 Feb 2023 22:42:11 +0900 Subject: [PATCH] Refactor getQuizList --- ...Holder.java => GetPagingQuizResponse.java} | 11 ++- .../quiz/controller/GetQuizController.java | 32 ++++---- .../quiz/controller/WebQuizController.java | 2 +- .../QuizSearchCondition.java | 2 +- .../quiz/repository/QuizRepositoryCustom.java | 2 +- .../quiz/repository/QuizRepositoryImpl.java | 2 +- .../app/quiz/service/GetQuizService.java | 30 ++++---- .../controller/AddQuizControllerTest.java | 4 +- .../controller/GetQuizControllerTest.java | 34 +++------ .../app/quiz/entity/QuizzesTest.java | 12 +-- .../quiz/repository/QuizRepositoryTest.java | 76 +++++++++---------- .../app/quiz/service/AddQuizServiceTest.java | 3 +- .../app/quiz/service/GetQuizServiceTest.java | 58 +++++++------- 13 files changed, 129 insertions(+), 139 deletions(-) rename src/main/java/com/mangkyu/employment/interview/app/quiz/controller/{GetQuizResponseHolder.java => GetPagingQuizResponse.java} (66%) rename src/main/java/com/mangkyu/employment/interview/app/quiz/{service => entity}/QuizSearchCondition.java (88%) diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponseHolder.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetPagingQuizResponse.java similarity index 66% rename from src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponseHolder.java rename to src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetPagingQuizResponse.java index 7158b86..fb0cd40 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetQuizResponseHolder.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/controller/GetPagingQuizResponse.java @@ -9,7 +9,7 @@ import lombok.Getter; import java.util.List; @Getter -public class GetQuizResponseHolder extends ResponseMetaData { +public class GetPagingQuizResponse extends ResponseMetaData { private final List quizList; @@ -17,7 +17,14 @@ public class GetQuizResponseHolder extends ResponseMetaData { private final EnumMapperValue category; @Builder - public GetQuizResponseHolder(final List quizList, final EnumMapperValue category, final boolean hasNext, final int page, final int size, final int totalPages) { + public GetPagingQuizResponse( + final List quizList, + final EnumMapperValue category, + final boolean hasNext, + final int page, + final int size, + final int totalPages) { + super(hasNext, page, size, totalPages); this.category = category; this.quizList = quizList; 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 78913f1..64f9dd8 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 @@ -5,8 +5,8 @@ import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes; 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.common.EnumMapperValue; import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory; -import com.mangkyu.employment.interview.enums.value.QuizCategory; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -34,16 +34,26 @@ class GetQuizController { } @GetMapping("/quizzes") - public ResponseEntity getQuizList(@Valid final GetQuizRequest getQuizRequest) { - PagingQuizzes quizzes = quizService.getQuizList(getQuizRequest); - final GetQuizResponseHolder response = toResponse(quizzes, getQuizRequest.getCategory()); - return ResponseEntity.ok(response); + public ResponseEntity getQuizList(@Valid final GetQuizRequest getQuizRequest) { + final PagingQuizzes quizzes = quizService.getQuizList(getQuizRequest); + return ResponseEntity.ok( + toPageQuizResponse( + quizzes, + enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, getQuizRequest.getCategory()) + ) + ); } - private GetQuizResponseHolder toResponse(PagingQuizzes quizzes, QuizCategory category) { - return GetQuizResponseHolder.builder() + @GetMapping("/quizzes/search") + public ResponseEntity searchQuizList(@Valid final SearchQuizListRequest request) { + final PagingQuizzes quizzes = quizService.searchQuizList(request); + return ResponseEntity.ok(toPageQuizResponse(quizzes, null)); + } + + private GetPagingQuizResponse toPageQuizResponse(final PagingQuizzes quizzes, final EnumMapperValue category) { + return GetPagingQuizResponse.builder() .quizList(quizzes.getQuizzes().getQuizList().stream().map(QuizDtoConverter::convert).collect(Collectors.toList())) - .category(enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, category)) + .category(category) .hasNext(quizzes.isHasNext()) .page(quizzes.getPageNumber()) .size(quizzes.getPageSize()) @@ -51,10 +61,4 @@ class GetQuizController { .build(); } - @GetMapping("/quizzes/search") - public ResponseEntity searchQuizList(@Valid final SearchQuizListRequest request) { - final GetQuizResponseHolder response = quizService.searchQuizList(request); - return ResponseEntity.ok(response); - } - } \ No newline at end of file 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 4c0a502..11e587c 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 @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.PathVariable; @Controller @RequiredArgsConstructor -public class WebQuizController { +class WebQuizController { private final GetQuizService quizService; private final EnumMapperFactory enumMapperFactory; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizSearchCondition.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/entity/QuizSearchCondition.java similarity index 88% rename from src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizSearchCondition.java rename to src/main/java/com/mangkyu/employment/interview/app/quiz/entity/QuizSearchCondition.java index f36d55a..bc5d6de 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizSearchCondition.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/entity/QuizSearchCondition.java @@ -1,4 +1,4 @@ -package com.mangkyu.employment.interview.app.quiz.service; +package com.mangkyu.employment.interview.app.quiz.entity; import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizLevel; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryCustom.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryCustom.java index eea4708..2604385 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryCustom.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryCustom.java @@ -1,6 +1,6 @@ package com.mangkyu.employment.interview.app.quiz.repository; -import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition; +import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryImpl.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryImpl.java index a34daa3..4cc5d28 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryImpl.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryImpl.java @@ -1,6 +1,6 @@ package com.mangkyu.employment.interview.app.quiz.repository; -import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition; +import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition; import com.mangkyu.employment.interview.app.quiz.entity.QQuiz; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.enums.value.QuizCategory; diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java index 3a2e335..b356059 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizService.java @@ -1,9 +1,10 @@ package com.mangkyu.employment.interview.app.quiz.service; -import com.mangkyu.employment.interview.app.quiz.controller.*; -import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter; +import com.mangkyu.employment.interview.app.quiz.controller.GetQuizRequest; +import com.mangkyu.employment.interview.app.quiz.controller.SearchQuizListRequest; import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; +import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition; 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.repository.SolvedQuizRepository; @@ -18,7 +19,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -47,9 +47,9 @@ public class GetQuizService { // TODO: do not use GetQuizResponseHolder in service layer - public PagingQuizzes getQuizList(final GetQuizRequest getQuizRequest) { - final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize()); - final Page quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest); + public PagingQuizzes getQuizList(final GetQuizRequest request) { + final PageRequest pageRequest = PageRequest.of(request.getPage(), request.getSize()); + final Page quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(request.getCategory(), pageRequest); return PagingQuizzes.builder() .quizzes(new Quizzes(quizPage.getContent())) @@ -60,21 +60,17 @@ public class GetQuizService { .build(); } - public GetQuizResponseHolder searchQuizList(final SearchQuizListRequest searchRequest) { - final QuizSearchCondition condition = modelMapper.map(searchRequest, QuizSearchCondition.class); - final PageRequest pageRequest = PageRequest.of(searchRequest.getPage(), searchRequest.getSize()); + public PagingQuizzes searchQuizList(final SearchQuizListRequest request) { + final QuizSearchCondition condition = modelMapper.map(request, QuizSearchCondition.class); + final PageRequest pageRequest = PageRequest.of(request.getPage(), request.getSize()); final Page quizPage = quizRepository.search(condition, pageRequest); - final List quizResponseList = quizPage.getContent().stream() - .map(QuizDtoConverter::convert) - .collect(Collectors.toList()); - - return GetQuizResponseHolder.builder() - .quizList(quizResponseList) + return PagingQuizzes.builder() + .quizzes(new Quizzes(quizPage.getContent())) .hasNext(quizPage.hasNext()) - .page(quizPage.nextOrLastPageable().getPageNumber()) - .size(quizPage.nextOrLastPageable().getPageSize()) + .pageNumber(quizPage.nextOrLastPageable().getPageNumber()) + .pageSize(quizPage.nextOrLastPageable().getPageSize()) .totalPages(quizPage.getTotalPages()) .build(); } diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizControllerTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizControllerTest.java index 9d7bf12..93099f2 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizControllerTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/controller/AddQuizControllerTest.java @@ -11,7 +11,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import java.util.Collections; +import java.util.List; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -30,7 +30,7 @@ class AddQuizControllerTest { final AddQuizRequest request = AddQuizRequest.builder() .quizCategory(QuizCategory.JAVA) .title("Title") - .quizLevel(Collections.singletonList(QuizLevel.NEW)) + .quizLevel(List.of(QuizLevel.NEW)) .build(); // when 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 48e6b68..c4155ad 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 @@ -5,11 +5,9 @@ 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.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; @@ -24,8 +22,6 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.stream.Stream; @@ -73,7 +69,7 @@ class GetQuizControllerTest { .expose(true) .build(); - doReturn(Collections.singletonList(enumMapperValue)) + doReturn(List.of(enumMapperValue)) .when(enumMapperFactory) .get(EnumMapperKey.QUIZ_CATEGORY); @@ -112,7 +108,7 @@ class GetQuizControllerTest { final Quiz quiz = EntityCreationUtils.quiz(); 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<>(List.of(), pageable, 0); final PagingQuizzes quizzes = PagingQuizzes.builder() .quizzes(new Quizzes(List.of(quiz))) @@ -160,24 +156,20 @@ class GetQuizControllerTest { @Test void searchQuizSuccess() throws Exception { // given - 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 Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE); - final PageImpl quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0); + final PageImpl quizPage = new PageImpl<>(List.of(), pageable, 0); - final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder() - .quizList(Collections.singletonList(quizResponse)) + final PagingQuizzes quizzes = PagingQuizzes.builder() + .quizzes(new Quizzes(List.of(quiz))) .hasNext(quizPage.hasNext()) - .page(quizPage.nextOrLastPageable().getPageNumber()) - .size(quizPage.nextOrLastPageable().getPageSize()) + .pageNumber(quizPage.nextOrLastPageable().getPageNumber()) + .pageSize(quizPage.nextOrLastPageable().getPageSize()) .totalPages(quizPage.getTotalPages()) .build(); - doReturn(getQuizResponseHolder) + doReturn(quizzes) .when(quizService) .searchQuizList(any(SearchQuizListRequest.class)); @@ -192,12 +184,4 @@ class GetQuizControllerTest { result.andExpect(status().isOk()); } - private EnumMapperValue enumMapperValue(final EnumMapperType enumMapperType) { - return EnumMapperValue.builder() - .code(enumMapperType.name()) - .title(enumMapperType.getTitle()) - .desc(enumMapperType.getDesc()) - .build(); - } - } \ No newline at end of file diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/entity/QuizzesTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/entity/QuizzesTest.java index 5d08297..c17bbb5 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/entity/QuizzesTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/entity/QuizzesTest.java @@ -3,15 +3,15 @@ package com.mangkyu.employment.interview.app.quiz.entity; import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizLevel; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.util.ReflectionTestUtils; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; class QuizzesTest { @@ -68,9 +68,9 @@ class QuizzesTest { private Quiz quiz(final long id) { final Quiz quiz = Quiz.builder() .title("quiz") - .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .quizLevel(List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)) .quizCategory(QuizCategory.JAVA) - .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); ReflectionTestUtils.setField(quiz, "id", id); diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java index 84492d5..41a0636 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java @@ -2,8 +2,8 @@ package com.mangkyu.employment.interview.app.quiz.repository; import com.mangkyu.employment.interview.JpaTestConfig; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; -import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition; import com.mangkyu.employment.interview.app.quiz.entity.Quiz; +import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition; import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.testutils.EntityCreationUtils; @@ -99,8 +99,8 @@ class QuizRepositoryTest { final QuizSearchCondition searchCondition = QuizSearchCondition.builder() .query(null) - .categories(Collections.emptySet()) - .levels(new HashSet<>(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR))) + .categories(Set.of()) + .levels(new HashSet<>(List.of(QuizLevel.NEW, QuizLevel.JUNIOR))) .build(); boolean hasNext = true; @@ -129,8 +129,8 @@ class QuizRepositoryTest { final QuizSearchCondition searchCondition = QuizSearchCondition.builder() .query(null) - .categories(new HashSet<>(Arrays.asList(QuizCategory.ALGORITHM, QuizCategory.DATABASE))) - .levels(Collections.emptySet()) + .categories(new HashSet<>(List.of(QuizCategory.ALGORITHM, QuizCategory.DATABASE))) + .levels(Set.of()) .build(); boolean hasNext = true; @@ -159,8 +159,8 @@ class QuizRepositoryTest { final QuizSearchCondition searchCondition = QuizSearchCondition.builder() .query(null) - .categories(Collections.emptySet()) - .levels(Collections.emptySet()) + .categories(Set.of()) + .levels(Set.of()) .build(); boolean hasNext = true; @@ -221,10 +221,10 @@ class QuizRepositoryTest { @Test public void selectQuizCountByCategory() { // given - final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.DATABASE, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.DATABASE, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)); quizRepository.save(quiz1); quizRepository.save(quiz2); @@ -256,23 +256,23 @@ class QuizRepositoryTest { @Test public void selectQuizNotInAndLevelAndQuizCategory() { // given - final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.DATABASE, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.DATABASE, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)); final Quiz savedQuiz1 = quizRepository.save(quiz1); final Quiz savedQuiz2 = quizRepository.save(quiz2); final Quiz savedQuiz3 = quizRepository.save(quiz3); final Quiz savedQuiz4 = quizRepository.save(quiz4); - final Set idSet = new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId())); + final Set idSet = new HashSet<>(List.of(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId())); // when - final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW); - final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW); - final List unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW); - final List unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(idSet, new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW); + final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW); + final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW); + final List unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW); + final List unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(idSet, new HashSet<>(List.of(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW); // then assertThat(unsolvedQuizList1.size()).isEqualTo(2); @@ -284,10 +284,10 @@ class QuizRepositoryTest { @Test public void selectQuizNotInAndLevel() { // given - final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)); final Quiz savedQuiz1 = quizRepository.save(quiz1); final Quiz savedQuiz2 = quizRepository.save(quiz2); @@ -295,8 +295,8 @@ class QuizRepositoryTest { final Quiz savedQuiz4 = quizRepository.save(quiz4); // when - final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW); - final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), QuizLevel.NEW); + final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(new HashSet<>(List.of(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW); + final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(Set.of(), QuizLevel.NEW); // then assertThat(unsolvedQuizList1.size()).isEqualTo(1); @@ -306,10 +306,10 @@ class QuizRepositoryTest { @Test public void selectQuizLevel() { // given - final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); - final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)); + final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)); quizRepository.save(quiz1); quizRepository.save(quiz2); @@ -324,14 +324,14 @@ class QuizRepositoryTest { } private void initForPaging(final QuizCategory quizCategory) { - final Quiz savedQuiz1 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz2 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz3 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz4 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz5 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz6 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))); - final Quiz savedQuiz7 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, Collections.singletonList(QuizLevel.SENIOR))); - final Quiz savedQuiz8 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, Collections.singletonList(QuizLevel.SENIOR))); + final Quiz savedQuiz1 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz2 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz3 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz4 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz5 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz6 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))); + final Quiz savedQuiz7 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, List.of(QuizLevel.SENIOR))); + final Quiz savedQuiz8 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, List.of(QuizLevel.SENIOR))); savedQuiz1.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz1))); savedQuiz2.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz2))); diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/AddQuizServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/AddQuizServiceTest.java index 0310696..3adba8d 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/AddQuizServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/AddQuizServiceTest.java @@ -15,6 +15,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.modelmapper.ModelMapper; import java.util.Arrays; +import java.util.List; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.times; @@ -37,7 +38,7 @@ class AddQuizServiceTest { final AddQuizRequest request = AddQuizRequest.builder() .title("quiz") .quizCategory(QuizCategory.JAVA) - .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); // when diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java index 0dab779..9b7e93e 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/GetQuizServiceTest.java @@ -1,15 +1,15 @@ package com.mangkyu.employment.interview.app.quiz.service; -import com.mangkyu.employment.interview.app.quiz.controller.*; +import com.mangkyu.employment.interview.app.quiz.controller.GetQuizRequest; +import com.mangkyu.employment.interview.app.quiz.controller.SearchQuizListRequest; import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes; +import com.mangkyu.employment.interview.app.quiz.entity.Quiz; +import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition; 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; import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository; import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig; -import com.mangkyu.employment.interview.enums.common.EnumMapperKey; -import com.mangkyu.employment.interview.enums.common.EnumMapperValue; -import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory; import com.mangkyu.employment.interview.enums.value.QuizCategory; import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; @@ -33,7 +33,7 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doReturn; @ExtendWith(MockitoExtension.class) class GetQuizServiceTest { @@ -45,8 +45,6 @@ class GetQuizServiceTest { private QuizRepository quizRepository; @Mock private SolvedQuizRepository solvedQuizRepository; - @Mock - private EnumMapperFactory enumMapperFactory; @Spy private ModelMapper modelMapper = new ModelMapperConfig().modelMapper(); @@ -59,31 +57,31 @@ class GetQuizServiceTest { 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))) - .levels(new HashSet<>(Arrays.asList(QuizLevel.NEW, QuizLevel.SENIOR))) + .categories(new HashSet<>(List.of(QuizCategory.CULTURE, QuizCategory.JAVA))) + .levels(new HashSet<>(List.of(QuizLevel.NEW, QuizLevel.SENIOR))) .page(0) .size(20) .build(); - final PageImpl quizPage = new PageImpl<>(quizList(), PageRequest.of(page, size), quizList.size()); + 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); + final PagingQuizzes result = quizService.searchQuizList(request); // then - assertThat(result.getQuizList().size()).isEqualTo(quizList.size()); + assertThat(result.getQuizzes().getQuizList().size()).isEqualTo(quizList.size()); } @Test public void findQuizEntityFail_NotExists() { // given - final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L); + final Quiz quiz = quiz(-1L); doReturn(Optional.empty()) .when(quizRepository) @@ -101,14 +99,14 @@ class GetQuizServiceTest { @Test public void findQuizEntitySuccess() { // given - final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L); + final Quiz quiz = quiz(-1L); doReturn(Optional.of(quiz)) .when(quizRepository) .findByResourceId(quiz.getResourceId()); // when - final com.mangkyu.employment.interview.app.quiz.entity.Quiz result = quizService.getQuiz(quiz.getResourceId()); + final Quiz result = quizService.getQuiz(quiz.getResourceId()); // then assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId()); @@ -127,10 +125,10 @@ class GetQuizServiceTest { .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()); + final PageImpl quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); doReturn(quizPage) .when(quizRepository) .findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class)); @@ -151,7 +149,7 @@ class GetQuizServiceTest { final Set solvedQuizIdList = solvedQuizList.stream() .map(v -> v.getQuiz().getId()) .collect(Collectors.toSet()); - final List unsolvedQuizList = Collections.singletonList(quiz(4L)); + final List unsolvedQuizList = List.of(quiz(4L)); final Set quizCategorySet = new HashSet<>(); quizCategorySet.add(QuizCategory.CULTURE); @@ -176,8 +174,8 @@ class GetQuizServiceTest { @Test public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() { // given - final List solvedQuizList = Collections.emptyList(); - final List unsolvedQuizList = Collections.singletonList(quiz(4L)); + final List solvedQuizList = List.of(); + final List unsolvedQuizList = List.of(quiz(4L)); final Set quizCategorySet = new HashSet<>(); quizCategorySet.add(QuizCategory.CULTURE); @@ -190,7 +188,7 @@ class GetQuizServiceTest { doReturn(unsolvedQuizList) .when(quizRepository) - .customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); + .customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), quizCategorySet, quizLevel); // when final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); @@ -200,8 +198,8 @@ class GetQuizServiceTest { } - private List quizList() { - final List unsolvedQuizList = new ArrayList<>(); + private List quizList() { + final List unsolvedQuizList = new ArrayList<>(); unsolvedQuizList.add(quiz(1L)); unsolvedQuizList.add(quiz(2L)); @@ -212,7 +210,7 @@ class GetQuizServiceTest { } private List solvedQuizList() { - return Arrays.asList( + return List.of( solvedQuiz(1L), solvedQuiz(2L), solvedQuiz(3L) @@ -220,19 +218,19 @@ class GetQuizServiceTest { } private SolvedQuiz solvedQuiz(final long id) { - final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(id); + final Quiz quiz = quiz(id); return SolvedQuiz.builder() .quiz(quiz) .build(); } - 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() + private Quiz quiz(final long id) { + final Quiz quiz = Quiz.builder() .title("quiz") - .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .quizLevel(List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)) .quizCategory(QuizCategory.JAVA) - .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); ReflectionTestUtils.setField(quiz, "id", id);