Merge branch 'master' into master-web

This commit is contained in:
MangKyu
2022-02-01 03:40:50 +09:00
4 changed files with 30 additions and 31 deletions

View File

@@ -15,28 +15,28 @@ public interface QuizRepository extends JpaRepository<Quiz, Long>, QuizRepositor
Optional<Quiz> findByResourceId(final String resourceId); Optional<Quiz> findByResourceId(final String resourceId);
Page<Quiz> findByQuizCategoryIs(final QuizCategory quizCategory, final Pageable pageable); Page<Quiz> findByQuizCategoryIsAndIsEnableTrue(final QuizCategory quizCategory, final Pageable pageable);
Long countByQuizCategory(final QuizCategory category); Long countByQuizCategoryAndIsEnableTrue(final QuizCategory category);
default List<Quiz> customFindByIdNotInAndQuizLevel(final Set<Long> quizIdSet, final QuizLevel quizLevel) { default List<Quiz> customFindByIdNotInAndQuizLevelAndIsEnableTrue(final Set<Long> quizIdSet, final QuizLevel quizLevel) {
return quizIdSet.isEmpty() return quizIdSet.isEmpty()
? findByQuizLevel(quizLevel) ? findByQuizLevelAndIsEnableTrue(quizLevel)
: findByIdNotInAndQuizLevel(quizIdSet, quizLevel); : findByIdNotInAndQuizLevelAndIsEnableTrue(quizIdSet, quizLevel);
} }
List<Quiz> findByQuizLevel(final QuizLevel quizLevel); List<Quiz> findByQuizLevelAndIsEnableTrue(final QuizLevel quizLevel);
List<Quiz> findByIdNotInAndQuizLevel(final Set<Long> quizIdSet, final QuizLevel quizLevel); List<Quiz> findByIdNotInAndQuizLevelAndIsEnableTrue(final Set<Long> quizIdSet, final QuizLevel quizLevel);
default List<Quiz> customFindByIdNotInAndQuizCategoryInAndQuizLevel(final Set<Long> quizIdSet, final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel) { default List<Quiz> customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set<Long> quizIdSet, final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel) {
return quizIdSet.isEmpty() return quizIdSet.isEmpty()
? findByQuizCategoryInAndQuizLevel(quizCategorySet, quizLevel) ? findByQuizCategoryInAndQuizLevelAndIsEnableTrue(quizCategorySet, quizLevel)
: findByIdNotInAndQuizCategoryInAndQuizLevel(quizIdSet, quizCategorySet, quizLevel); : findByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(quizIdSet, quizCategorySet, quizLevel);
} }
List<Quiz> findByQuizCategoryInAndQuizLevel(final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel); List<Quiz> findByQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel);
List<Quiz> findByIdNotInAndQuizCategoryInAndQuizLevel(final Set<Long> quizIdSet, final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel); List<Quiz> findByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set<Long> quizIdSet, final Set<QuizCategory> quizCategorySet, final QuizLevel quizLevel);
} }

View File

@@ -53,7 +53,7 @@ public class QuizService {
public GetQuizResponseHolder getQuizList(final GetQuizRequest getQuizRequest) { public GetQuizResponseHolder getQuizList(final GetQuizRequest getQuizRequest) {
final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize()); final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize());
final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIs(getQuizRequest.getCategory(), pageRequest); final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest);
final List<GetQuizResponse> quizResponseList = quizPage.getContent().stream() final List<GetQuizResponse> quizResponseList = quizPage.getContent().stream()
.map(QuizDtoConverter::convert) .map(QuizDtoConverter::convert)
@@ -75,7 +75,7 @@ public class QuizService {
.map(v -> v.getQuiz().getId()) .map(v -> v.getQuiz().getId())
.collect(Collectors.toSet()); .collect(Collectors.toSet());
return quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); return quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(solvedQuizIdList, quizCategorySet, quizLevel);
} }
public List<Quiz> getRandomQuizListUnderLimit(final List<Quiz> quizList, final Integer quizSize) { public List<Quiz> getRandomQuizListUnderLimit(final List<Quiz> quizList, final Integer quizSize) {
@@ -107,7 +107,7 @@ public class QuizService {
private QuizCategoryResponse convertToQuizCategoryResponse(final EnumMapperValue enumMapperValue) { private QuizCategoryResponse convertToQuizCategoryResponse(final EnumMapperValue enumMapperValue) {
return QuizCategoryResponse.builder() return QuizCategoryResponse.builder()
.count(quizRepository.countByQuizCategory(QuizCategory.valueOf(enumMapperValue.name()))) .count(quizRepository.countByQuizCategoryAndIsEnableTrue(QuizCategory.valueOf(enumMapperValue.name())))
.code(enumMapperValue.getCode()) .code(enumMapperValue.getCode())
.title(enumMapperValue.getTitle()) .title(enumMapperValue.getTitle())
.desc(enumMapperValue.getDesc()) .desc(enumMapperValue.getDesc())

View File

@@ -1,7 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.repository; package com.mangkyu.employment.interview.app.quiz.repository;
import com.mangkyu.employment.interview.JpaTestConfig; import com.mangkyu.employment.interview.JpaTestConfig;
import com.mangkyu.employment.interview.app.answer.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
import com.mangkyu.employment.interview.app.quiz.dto.QuizSearchCondition; import com.mangkyu.employment.interview.app.quiz.dto.QuizSearchCondition;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
@@ -209,14 +208,14 @@ class QuizRepositoryTest {
long result = 0; long result = 0;
while (hasNext) { while (hasNext) {
final PageRequest pageRequest = PageRequest.of(page++, size); final PageRequest pageRequest = PageRequest.of(page++, size);
final Page<Quiz> pageQuiz = quizRepository.findByQuizCategoryIs(quizCategory, pageRequest); final Page<Quiz> pageQuiz = quizRepository.findByQuizCategoryIsAndIsEnableTrue(quizCategory, pageRequest);
result += pageQuiz.getContent().size(); result += pageQuiz.getContent().size();
hasNext = pageQuiz.hasNext(); hasNext = pageQuiz.hasNext();
} }
// then // then
assertThat(result).isEqualTo(quizRepository.countByQuizCategory(quizCategory)); assertThat(result).isEqualTo(quizRepository.countByQuizCategoryAndIsEnableTrue(quizCategory));
} }
@Test @Test
@@ -233,8 +232,8 @@ class QuizRepositoryTest {
quizRepository.save(quiz4); quizRepository.save(quiz4);
// when // when
final Long result1 = quizRepository.countByQuizCategory(QuizCategory.JAVA); final Long result1 = quizRepository.countByQuizCategoryAndIsEnableTrue(QuizCategory.JAVA);
final Long result2 = quizRepository.countByQuizCategory(QuizCategory.DATABASE); final Long result2 = quizRepository.countByQuizCategoryAndIsEnableTrue(QuizCategory.DATABASE);
// then // then
assertThat(result1).isEqualTo(3); assertThat(result1).isEqualTo(3);
@@ -270,10 +269,10 @@ class QuizRepositoryTest {
final Set<Long> idSet = new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId())); final Set<Long> idSet = new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId()));
// when // when
final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW); final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW);
final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW); final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW);
final List<Quiz> unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW); final List<Quiz> unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW);
final List<Quiz> unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(idSet, new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW); final List<Quiz> unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(idSet, new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW);
// then // then
assertThat(unsolvedQuizList1.size()).isEqualTo(2); assertThat(unsolvedQuizList1.size()).isEqualTo(2);
@@ -296,8 +295,8 @@ class QuizRepositoryTest {
final Quiz savedQuiz4 = quizRepository.save(quiz4); final Quiz savedQuiz4 = quizRepository.save(quiz4);
// when // when
final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevel(new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW); final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW);
final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevel(Collections.emptySet(), QuizLevel.NEW); final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), QuizLevel.NEW);
// then // then
assertThat(unsolvedQuizList1.size()).isEqualTo(1); assertThat(unsolvedQuizList1.size()).isEqualTo(1);
@@ -318,7 +317,7 @@ class QuizRepositoryTest {
quizRepository.save(quiz4); quizRepository.save(quiz4);
// when // when
final List<Quiz> unsolvedQuizList = quizRepository.findByQuizLevel(QuizLevel.NEW); final List<Quiz> unsolvedQuizList = quizRepository.findByQuizLevelAndIsEnableTrue(QuizLevel.NEW);
// then // then
assertThat(unsolvedQuizList.size()).isEqualTo(3); assertThat(unsolvedQuizList.size()).isEqualTo(3);

View File

@@ -159,7 +159,7 @@ class QuizServiceTest {
final Pageable pageable = PageRequest.of(page, size); final Pageable pageable = PageRequest.of(page, size);
final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size()); final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size());
doReturn(quizPage).when(quizRepository).findByQuizCategoryIs(any(QuizCategory.class), any(PageRequest.class)); doReturn(quizPage).when(quizRepository).findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class));
// when // when
final GetQuizResponseHolder result = quizService.getQuizList(request); final GetQuizResponseHolder result = quizService.getQuizList(request);
@@ -203,7 +203,7 @@ class QuizServiceTest {
quizCategorySet.add(QuizCategory.EXPERIENCE); quizCategorySet.add(QuizCategory.EXPERIENCE);
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId); doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId);
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(solvedQuizIdList, quizCategorySet, quizLevel);
// when // when
final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
@@ -224,7 +224,7 @@ class QuizServiceTest {
quizCategorySet.add(QuizCategory.EXPERIENCE); quizCategorySet.add(QuizCategory.EXPERIENCE);
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId); doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId);
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), quizCategorySet, quizLevel);
// when // when
final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); final List<Quiz> result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
@@ -270,7 +270,7 @@ class QuizServiceTest {
.build(); .build();
doReturn(Collections.singletonList(enumMapperValue)).when(enumMapperFactory).get(EnumMapperKey.QUIZ_CATEGORY); doReturn(Collections.singletonList(enumMapperValue)).when(enumMapperFactory).get(EnumMapperKey.QUIZ_CATEGORY);
doReturn(count).when(quizRepository).countByQuizCategory(quizCategory); doReturn(count).when(quizRepository).countByQuizCategoryAndIsEnableTrue(quizCategory);
// when // when
final List<QuizCategoryResponse> result = quizService.getQuizCategoryList(); final List<QuizCategoryResponse> result = quizService.getQuizCategoryList();