modify selectQuizList With Level
This commit is contained in:
@@ -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 <QuizEntity, Long> {
|
||||
|
||||
List<QuizEntity> findByIdNotIn(Set<Long> quizIdList);
|
||||
List<QuizEntity> findByIdNotInAndQuizLevel(final Set<Long> quizIdList, final QuizLevel quizLevel);
|
||||
|
||||
List<QuizEntity> findByQuizLevel(final QuizLevel quizLevel);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<QuizEntity> getUnsolvedQuizList(final Long userId) {
|
||||
public List<QuizEntity> getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel) {
|
||||
final Set<Long> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<QuizEntity> 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<QuizEntity> unsolvedQuizList = quizRepository.findByIdNotIn(new HashSet<>(Arrays.asList(1L, 2L)));
|
||||
final List<QuizEntity> unsolvedQuizList = quizRepository.findByQuizLevel(QuizLevel.NEW);
|
||||
|
||||
// then
|
||||
assertThat(unsolvedQuizList.size()).isEqualTo(2);
|
||||
assertThat(unsolvedQuizList.size()).isEqualTo(3);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<QuizEntity> 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<QuizEntity> result = quizService.getUnsolvedQuizList(userId);
|
||||
final List<QuizEntity> result = quizService.getUnsolvedQuizList(userId, quizLevel);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size());
|
||||
@@ -94,10 +95,10 @@ class QuizServiceTest {
|
||||
final List<QuizEntity> 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<QuizEntity> result = quizService.getUnsolvedQuizList(userId);
|
||||
final List<QuizEntity> result = quizService.getUnsolvedQuizList(userId, quizLevel);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size());
|
||||
|
||||
Reference in New Issue
Block a user