From 33b04d12343b4c954edf03042f232d1180cf3c68 Mon Sep 17 00:00:00 2001 From: MangKyu Date: Wed, 8 Dec 2021 23:13:01 +0900 Subject: [PATCH] modify selectQuizList With Level --- .../app/quiz/repository/QuizRepository.java | 5 +- .../app/quiz/service/QuizService.java | 7 +-- .../quiz/repository/QuizRepositoryTest.java | 53 ++++++++++++++++--- .../app/quiz/service/QuizServiceTest.java | 9 ++-- 4 files changed, 60 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java index 33aed8c..3bb44bd 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java @@ -1,6 +1,7 @@ package com.mangkyu.employment.interview.app.quiz.repository; import com.mangkyu.employment.interview.app.quiz.entity.QuizEntity; +import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -8,6 +9,8 @@ import java.util.Set; public interface QuizRepository extends JpaRepository { - List findByIdNotIn(Set quizIdList); + List findByIdNotInAndQuizLevel(final Set quizIdList, final QuizLevel quizLevel); + + List findByQuizLevel(final QuizLevel quizLevel); } 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/QuizService.java index a550a3a..2d30b61 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/QuizService.java @@ -2,6 +2,7 @@ package com.mangkyu.employment.interview.app.quiz.service; import com.mangkyu.employment.interview.app.quiz.dto.AddQuizRequest; import com.mangkyu.employment.interview.app.quiz.entity.QuizEntity; +import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel; import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository; import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository; import lombok.RequiredArgsConstructor; @@ -25,15 +26,15 @@ public class QuizService { quizRepository.save(quizEntity); } - public List getUnsolvedQuizList(final Long userId) { + public List getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel) { final Set solvedQuizIdList = solvedQuizRepository.findAllByUser_Id(userId) .stream() .map(v -> v.getQuiz().getId()) .collect(Collectors.toSet()); return solvedQuizIdList.isEmpty() - ? quizRepository.findAll() - : quizRepository.findByIdNotIn(solvedQuizIdList); + ? quizRepository.findByQuizLevel(quizLevel) + : quizRepository.findByIdNotInAndQuizLevel(solvedQuizIdList, quizLevel); } } 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 39cb93e..2f36803 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 @@ -37,28 +37,69 @@ class QuizRepositoryTest { } @Test - public void selectQuizNotIn() { + public void selectQuizNotInAndLevel() { // given final QuizEntity quiz1 = QuizEntity.builder() - .title("quiz") + .title("quiz1") .quizCategory(QuizCategory.JAVA) .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); final QuizEntity quiz2 = QuizEntity.builder() - .title("quiz") + .title("quiz2") .quizCategory(QuizCategory.JAVA) .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); final QuizEntity quiz3 = QuizEntity.builder() - .title("quiz") + .title("quiz3") .quizCategory(QuizCategory.JAVA) .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); final QuizEntity quiz4 = QuizEntity.builder() .title("quiz4") .quizCategory(QuizCategory.JAVA) + .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .build(); + + final QuizEntity savedQuiz1 = quizRepository.save(quiz1); + final QuizEntity savedQuiz2 = quizRepository.save(quiz2); + final QuizEntity savedQuiz3 = quizRepository.save(quiz3); + final QuizEntity savedQuiz4 = quizRepository.save(quiz4); + + System.out.println(savedQuiz1.getId()); + System.out.println(savedQuiz2.getId()); + System.out.println(savedQuiz3.getId()); + System.out.println(savedQuiz4.getId()); + + // when + final List unsolvedQuizList = quizRepository.findByIdNotInAndQuizLevel(new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW); + + // then + assertThat(unsolvedQuizList.size()).isEqualTo(1); + } + + @Test + public void selectQuizLevel() { + // given + final QuizEntity quiz1 = QuizEntity.builder() + .title("quiz1") + .quizCategory(QuizCategory.JAVA) .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) .build(); + final QuizEntity quiz2 = QuizEntity.builder() + .title("quiz2") + .quizCategory(QuizCategory.JAVA) + .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .build(); + final QuizEntity quiz3 = QuizEntity.builder() + .title("quiz3") + .quizCategory(QuizCategory.JAVA) + .quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .build(); + final QuizEntity quiz4 = QuizEntity.builder() + .title("quiz4") + .quizCategory(QuizCategory.JAVA) + .quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)) + .build(); quizRepository.save(quiz1); quizRepository.save(quiz2); @@ -66,10 +107,10 @@ class QuizRepositoryTest { quizRepository.save(quiz4); // when - final List unsolvedQuizList = quizRepository.findByIdNotIn(new HashSet<>(Arrays.asList(1L, 2L))); + final List unsolvedQuizList = quizRepository.findByQuizLevel(QuizLevel.NEW); // then - assertThat(unsolvedQuizList.size()).isEqualTo(2); + assertThat(unsolvedQuizList.size()).isEqualTo(3); } } \ No newline at end of file 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/QuizServiceTest.java index 0358a53..bbad098 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/QuizServiceTest.java @@ -42,6 +42,7 @@ class QuizServiceTest { private ModelMapper modelMapper; private final Long userId = -1L; + private final QuizLevel quizLevel = QuizLevel.NEW; @BeforeEach public void init() { @@ -78,10 +79,10 @@ class QuizServiceTest { final List unsolvedQuizEntityList = Collections.singletonList(quizEntity(4L)); doReturn(solvedQuizEntityList).when(solvedQuizRepository).findAllByUser_Id(userId); - doReturn(unsolvedQuizEntityList).when(quizRepository).findByIdNotIn(solvedQuizIdList); + doReturn(unsolvedQuizEntityList).when(quizRepository).findByIdNotInAndQuizLevel(solvedQuizIdList, quizLevel); // when - final List result = quizService.getUnsolvedQuizList(userId); + final List result = quizService.getUnsolvedQuizList(userId, quizLevel); // then assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size()); @@ -94,10 +95,10 @@ class QuizServiceTest { final List unsolvedQuizEntityList = Collections.singletonList(quizEntity(4L)); doReturn(solvedQuizEntityList).when(solvedQuizRepository).findAllByUser_Id(userId); - doReturn(unsolvedQuizEntityList).when(quizRepository).findAll(); + doReturn(unsolvedQuizEntityList).when(quizRepository).findByQuizLevel(quizLevel); // when - final List result = quizService.getUnsolvedQuizList(userId); + final List result = quizService.getUnsolvedQuizList(userId, quizLevel); // then assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size());