Add getRandomQuizList
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.constants;
|
||||
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class QuizConstants {
|
||||
|
||||
public static int MAXIMUM_QUIZ_SIZE = 3;
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.constants.QuizConstants;
|
||||
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;
|
||||
@@ -10,7 +11,9 @@ import org.modelmapper.ModelMapper;
|
||||
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;
|
||||
|
||||
@@ -40,4 +43,25 @@ public class QuizService {
|
||||
: quizRepository.findByIdNotInAndQuizLevel(solvedQuizIdList, quizLevel);
|
||||
}
|
||||
|
||||
public List<QuizEntity> getRandomQuizListUnderLimit(final List<QuizEntity> quizEntityList) {
|
||||
return quizEntityList.size() < QuizConstants.MAXIMUM_QUIZ_SIZE
|
||||
? quizEntityList
|
||||
: createRandomQuizListUnderLimit(quizEntityList);
|
||||
}
|
||||
|
||||
private List<QuizEntity> createRandomQuizListUnderLimit(final List<QuizEntity> quizEntityList) {
|
||||
final Random rand = new Random();
|
||||
final List<QuizEntity> randomQuizEntityList = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < QuizConstants.MAXIMUM_QUIZ_SIZE; i++) {
|
||||
final int randomIndex = rand.nextInt(quizEntityList.size());
|
||||
final QuizEntity quizEntity = quizEntityList.get(randomIndex);
|
||||
|
||||
quizEntityList.remove(randomIndex);
|
||||
randomQuizEntityList.add(quizEntity);
|
||||
}
|
||||
|
||||
return randomQuizEntityList;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.constants.QuizConstants;
|
||||
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.QuizCategory;
|
||||
@@ -18,10 +19,7 @@ import org.modelmapper.ModelMapper;
|
||||
import org.modelmapper.config.Configuration;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -104,6 +102,34 @@ class QuizServiceTest {
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRandomQuizListUnderLimitSuccess_Under3() {
|
||||
// given
|
||||
final List<QuizEntity> unsolvedQuizEntityList = Collections.singletonList(quizEntity(4L));
|
||||
|
||||
// when
|
||||
final List<QuizEntity> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizEntityList);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizEntityList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRandomQuizListUnderLimitSuccess_Over3() {
|
||||
// given
|
||||
final List<QuizEntity> unsolvedQuizEntityList = new ArrayList<>();
|
||||
unsolvedQuizEntityList.add(quizEntity(1L));
|
||||
unsolvedQuizEntityList.add(quizEntity(2L));
|
||||
unsolvedQuizEntityList.add(quizEntity(3L));
|
||||
unsolvedQuizEntityList.add(quizEntity(4L));
|
||||
|
||||
// when
|
||||
final List<QuizEntity> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizEntityList);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(QuizConstants.MAXIMUM_QUIZ_SIZE);
|
||||
}
|
||||
|
||||
private List<SolvedQuizEntity> solvedQuizEntityList() {
|
||||
return Arrays.asList(
|
||||
solvedQuizEntity(1L),
|
||||
|
||||
Reference in New Issue
Block a user