Add Quizzes and refactoring
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
*
|
||||
* Quizzies.java 2023-02-18
|
||||
*
|
||||
* Copyright 2023 WorksMobile Corp. All rights Reserved.
|
||||
* WorksMobile PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.mangkyu.employment.interview.app.quiz.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Quizzes {
|
||||
|
||||
private List<Quiz> quizList;
|
||||
|
||||
public boolean isLastMail(final Integer quizSize) {
|
||||
return quizList.size() <= quizSize;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ 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.entity.Quiz;
|
||||
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;
|
||||
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
||||
@@ -63,13 +64,13 @@ public class QuizService {
|
||||
.build();
|
||||
}
|
||||
|
||||
public List<Quiz> getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel, final Set<QuizCategory> quizCategorySet) {
|
||||
public Quizzes getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel, final Set<QuizCategory> quizCategorySet) {
|
||||
final Set<Long> solvedQuizIdList = solvedQuizRepository.findAllByMember_Id(userId)
|
||||
.stream()
|
||||
.map(v -> v.getQuiz().getId())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
return quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel);
|
||||
return new Quizzes(quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel));
|
||||
}
|
||||
|
||||
public List<Quiz> getRandomQuizListUnderLimit(final List<Quiz> quizList, final Integer quizSize) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mangkyu.employment.interview.cron;
|
||||
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||
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.QuizService;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||
import com.mangkyu.employment.interview.app.member.service.GetMemberService;
|
||||
@@ -45,10 +46,10 @@ public class SendQuizCronJob {
|
||||
}
|
||||
|
||||
private void sendUnsolvedQuizForUser(final Member member) {
|
||||
final List<Quiz> unsolvedQuizList = quizService.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
final boolean isLastMail = isLastMail(unsolvedQuizList, member.getQuizSize());
|
||||
final Quizzes unsolvedQuizList = quizService.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
final boolean isLastMail = unsolvedQuizList.isLastMail(member.getQuizSize());
|
||||
|
||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList.getQuizList(), member.getQuizSize());
|
||||
if (isLastMail) {
|
||||
member.disableUser();
|
||||
}
|
||||
@@ -57,8 +58,4 @@ public class SendQuizCronJob {
|
||||
solvedQuizService.addSolvedQuizList(member, randomQuizList);
|
||||
}
|
||||
|
||||
private boolean isLastMail(final List<Quiz> quizList, final Integer quizSize) {
|
||||
return quizList.size() <= quizSize;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.mangkyu.employment.interview.app.quiz.entity;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class QuizzesTest {
|
||||
|
||||
@Test
|
||||
void 마지막메일_True(){
|
||||
// given
|
||||
Quizzes quizzes = quizzes();
|
||||
|
||||
// when
|
||||
boolean result = quizzes.isLastMail(3);
|
||||
|
||||
// then
|
||||
assertThat(result).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void 마지막메일_False(){
|
||||
// given
|
||||
Quizzes quizzes = quizzes();
|
||||
|
||||
// when
|
||||
boolean result = quizzes.isLastMail(1);
|
||||
|
||||
// then
|
||||
assertThat(result).isFalse();
|
||||
}
|
||||
|
||||
private Quizzes quizzes() {
|
||||
return new Quizzes(List.of(new Quiz(), new Quiz()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.mangkyu.employment.interview.app.quiz.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.controller.*;
|
||||
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.repository.QuizRepository;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
||||
@@ -188,10 +189,10 @@ class QuizServiceTest {
|
||||
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel);
|
||||
|
||||
// when
|
||||
final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
||||
final Quizzes quizzes = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizList.size());
|
||||
assertThat(quizzes.getQuizList().size()).isEqualTo(unsolvedQuizList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -209,10 +210,10 @@ class QuizServiceTest {
|
||||
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel);
|
||||
|
||||
// when
|
||||
final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
||||
final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
||||
|
||||
// then
|
||||
assertThat(result.size()).isEqualTo(unsolvedQuizList.size());
|
||||
assertThat(result.getQuizList().size()).isEqualTo(unsolvedQuizList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mangkyu.employment.interview.cron;
|
||||
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||
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.QuizService;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||
import com.mangkyu.employment.interview.app.member.service.GetMemberService;
|
||||
@@ -81,7 +82,7 @@ class SendQuizCronJobTest {
|
||||
doReturn(memberList)
|
||||
.when(memberService)
|
||||
.getEnabledUserList(quizDay);
|
||||
doReturn(unsolvedQuizList)
|
||||
doReturn(new Quizzes(unsolvedQuizList))
|
||||
.when(quizService)
|
||||
.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
doReturn(randomQuizList)
|
||||
@@ -109,7 +110,7 @@ class SendQuizCronJobTest {
|
||||
doReturn(memberList)
|
||||
.when(memberService)
|
||||
.getEnabledUserList(quizDay);
|
||||
doReturn(unsolvedQuizList)
|
||||
doReturn(new Quizzes(unsolvedQuizList))
|
||||
.when(quizService)
|
||||
.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
doReturn(randomQuizList)
|
||||
|
||||
Reference in New Issue
Block a user