Apply QuizSize on SendMail
This commit is contained in:
@@ -40,17 +40,17 @@ public class QuizService {
|
||||
: quizRepository.findByIdNotInAndQuizLevel(solvedQuizIdList, quizLevel);
|
||||
}
|
||||
|
||||
public List<Quiz> getRandomQuizListUnderLimit(final List<Quiz> quizList) {
|
||||
return quizList.size() <= QuizConstants.MAXIMUM_QUIZ_SIZE
|
||||
public List<Quiz> getRandomQuizListUnderLimit(final List<Quiz> quizList, final Integer quizSize) {
|
||||
return quizList.size() <= quizSize
|
||||
? quizList
|
||||
: createRandomQuizListUnderLimit(quizList);
|
||||
: createRandomQuizListUnderLimit(quizList, quizSize);
|
||||
}
|
||||
|
||||
private List<Quiz> createRandomQuizListUnderLimit(final List<Quiz> quizList) {
|
||||
private List<Quiz> createRandomQuizListUnderLimit(final List<Quiz> quizList, final Integer quizSize) {
|
||||
final Random rand = new Random();
|
||||
final List<Quiz> randomQuizList = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < QuizConstants.MAXIMUM_QUIZ_SIZE; i++) {
|
||||
for (int i = 0; i < quizSize; i++) {
|
||||
final int randomIndex = rand.nextInt(quizList.size());
|
||||
final Quiz quiz = quizList.get(randomIndex);
|
||||
randomQuizList.add(quiz);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class SendQuizCronJob {
|
||||
final List<Quiz> unsolvedQuizList = quizService.getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
final boolean isLastMail = isLastMail(unsolvedQuizList, user.getQuizSize());
|
||||
|
||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
||||
if (isLastMail) {
|
||||
userService.disableUser(user);
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ class QuizServiceTest {
|
||||
|
||||
private final Long userId = -1L;
|
||||
private final QuizLevel quizLevel = QuizLevel.NEW;
|
||||
private final int quizSize = 3;
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
@@ -103,19 +104,19 @@ class QuizServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRandomQuizListUnderLimitSuccess_Under3() {
|
||||
public void getRandomQuizListUnderLimitSuccess_UnderLimit() {
|
||||
// given
|
||||
final List<Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L));
|
||||
|
||||
// when
|
||||
final List<Quiz> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
final List<Quiz> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, quizSize);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRandomQuizListUnderLimitSuccess_Over3() {
|
||||
public void getRandomQuizListUnderLimitSuccess_OverLimit() {
|
||||
// given
|
||||
final List<Quiz> unsolvedQuizList = new ArrayList<>();
|
||||
unsolvedQuizList.add(quiz(1L));
|
||||
@@ -124,7 +125,7 @@ class QuizServiceTest {
|
||||
unsolvedQuizList.add(quiz(4L));
|
||||
|
||||
// when
|
||||
final List<Quiz> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
final List<Quiz> result = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, quizSize);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(QuizConstants.MAXIMUM_QUIZ_SIZE);
|
||||
|
||||
@@ -63,7 +63,7 @@ class SendQuizCronJobTest {
|
||||
|
||||
// verify
|
||||
verify(quizService, times(0)).getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
verify(quizService, times(0)).getRandomQuizListUnderLimit(anyList());
|
||||
verify(quizService, times(0)).getRandomQuizListUnderLimit(anyList(), user.getQuizSize());
|
||||
verify(userService, times(0)).disableUser(user);
|
||||
verify(mailService, times(0)).sendMail(anyString(), anyList(), anyBoolean());
|
||||
verify(solvedQuizService, times(0)).addSolvedQuizList(any(User.class), anyList());
|
||||
@@ -83,7 +83,7 @@ class SendQuizCronJobTest {
|
||||
.getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
doReturn(randomQuizList)
|
||||
.when(quizService)
|
||||
.getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
||||
|
||||
// when
|
||||
target.sendQuizMailEveryWeek();
|
||||
@@ -92,7 +92,7 @@ class SendQuizCronJobTest {
|
||||
|
||||
// verify
|
||||
verify(quizService, times(1)).getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
||||
verify(userService, times(0)).disableUser(user);
|
||||
verify(mailService, times(1)).sendMail(user.getEmail(), randomQuizList, false);
|
||||
verify(solvedQuizService, times(1)).addSolvedQuizList(user, randomQuizList);
|
||||
@@ -112,7 +112,7 @@ class SendQuizCronJobTest {
|
||||
.getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
doReturn(randomQuizList)
|
||||
.when(quizService)
|
||||
.getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
||||
|
||||
// when
|
||||
target.sendQuizMailEveryWeek();
|
||||
@@ -121,7 +121,7 @@ class SendQuizCronJobTest {
|
||||
|
||||
// verify
|
||||
verify(quizService, times(1)).getUnsolvedQuizList(user.getId(), user.getQuizLevel());
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList);
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
||||
verify(userService, times(1)).disableUser(user);
|
||||
verify(mailService, times(1)).sendMail(user.getEmail(), randomQuizList, true);
|
||||
verify(solvedQuizService, times(1)).addSolvedQuizList(user, randomQuizList);
|
||||
|
||||
Reference in New Issue
Block a user