Refactor getQuizList
This commit is contained in:
@@ -9,7 +9,7 @@ import lombok.Getter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class GetQuizResponseHolder extends ResponseMetaData {
|
public class GetPagingQuizResponse extends ResponseMetaData {
|
||||||
|
|
||||||
private final List<GetQuizResponse> quizList;
|
private final List<GetQuizResponse> quizList;
|
||||||
|
|
||||||
@@ -17,7 +17,14 @@ public class GetQuizResponseHolder extends ResponseMetaData {
|
|||||||
private final EnumMapperValue category;
|
private final EnumMapperValue category;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public GetQuizResponseHolder(final List<GetQuizResponse> quizList, final EnumMapperValue category, final boolean hasNext, final int page, final int size, final int totalPages) {
|
public GetPagingQuizResponse(
|
||||||
|
final List<GetQuizResponse> quizList,
|
||||||
|
final EnumMapperValue category,
|
||||||
|
final boolean hasNext,
|
||||||
|
final int page,
|
||||||
|
final int size,
|
||||||
|
final int totalPages) {
|
||||||
|
|
||||||
super(hasNext, page, size, totalPages);
|
super(hasNext, page, size, totalPages);
|
||||||
this.category = category;
|
this.category = category;
|
||||||
this.quizList = quizList;
|
this.quizList = quizList;
|
||||||
@@ -5,8 +5,8 @@ import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes;
|
|||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
|
import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
||||||
|
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
||||||
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
@@ -34,16 +34,26 @@ class GetQuizController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/quizzes")
|
@GetMapping("/quizzes")
|
||||||
public ResponseEntity<GetQuizResponseHolder> getQuizList(@Valid final GetQuizRequest getQuizRequest) {
|
public ResponseEntity<GetPagingQuizResponse> getQuizList(@Valid final GetQuizRequest getQuizRequest) {
|
||||||
PagingQuizzes quizzes = quizService.getQuizList(getQuizRequest);
|
final PagingQuizzes quizzes = quizService.getQuizList(getQuizRequest);
|
||||||
final GetQuizResponseHolder response = toResponse(quizzes, getQuizRequest.getCategory());
|
return ResponseEntity.ok(
|
||||||
return ResponseEntity.ok(response);
|
toPageQuizResponse(
|
||||||
|
quizzes,
|
||||||
|
enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, getQuizRequest.getCategory())
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private GetQuizResponseHolder toResponse(PagingQuizzes quizzes, QuizCategory category) {
|
@GetMapping("/quizzes/search")
|
||||||
return GetQuizResponseHolder.builder()
|
public ResponseEntity<GetPagingQuizResponse> searchQuizList(@Valid final SearchQuizListRequest request) {
|
||||||
|
final PagingQuizzes quizzes = quizService.searchQuizList(request);
|
||||||
|
return ResponseEntity.ok(toPageQuizResponse(quizzes, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
private GetPagingQuizResponse toPageQuizResponse(final PagingQuizzes quizzes, final EnumMapperValue category) {
|
||||||
|
return GetPagingQuizResponse.builder()
|
||||||
.quizList(quizzes.getQuizzes().getQuizList().stream().map(QuizDtoConverter::convert).collect(Collectors.toList()))
|
.quizList(quizzes.getQuizzes().getQuizList().stream().map(QuizDtoConverter::convert).collect(Collectors.toList()))
|
||||||
.category(enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, category))
|
.category(category)
|
||||||
.hasNext(quizzes.isHasNext())
|
.hasNext(quizzes.isHasNext())
|
||||||
.page(quizzes.getPageNumber())
|
.page(quizzes.getPageNumber())
|
||||||
.size(quizzes.getPageSize())
|
.size(quizzes.getPageSize())
|
||||||
@@ -51,10 +61,4 @@ class GetQuizController {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/quizzes/search")
|
|
||||||
public ResponseEntity<GetQuizResponseHolder> searchQuizList(@Valid final SearchQuizListRequest request) {
|
|
||||||
final GetQuizResponseHolder response = quizService.searchQuizList(request);
|
|
||||||
return ResponseEntity.ok(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class WebQuizController {
|
class WebQuizController {
|
||||||
|
|
||||||
private final GetQuizService quizService;
|
private final GetQuizService quizService;
|
||||||
private final EnumMapperFactory enumMapperFactory;
|
private final EnumMapperFactory enumMapperFactory;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mangkyu.employment.interview.app.quiz.service;
|
package com.mangkyu.employment.interview.app.quiz.entity;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mangkyu.employment.interview.app.quiz.repository;
|
package com.mangkyu.employment.interview.app.quiz.repository;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition;
|
import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mangkyu.employment.interview.app.quiz.repository;
|
package com.mangkyu.employment.interview.app.quiz.repository;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition;
|
import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.QQuiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.QQuiz;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package com.mangkyu.employment.interview.app.quiz.service;
|
package com.mangkyu.employment.interview.app.quiz.service;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.controller.*;
|
import com.mangkyu.employment.interview.app.quiz.controller.GetQuizRequest;
|
||||||
import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter;
|
import com.mangkyu.employment.interview.app.quiz.controller.SearchQuizListRequest;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes;
|
import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
|
||||||
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
||||||
@@ -18,7 +19,6 @@ import org.springframework.data.domain.PageRequest;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -47,9 +47,9 @@ public class GetQuizService {
|
|||||||
|
|
||||||
// TODO: do not use GetQuizResponseHolder in service layer
|
// TODO: do not use GetQuizResponseHolder in service layer
|
||||||
|
|
||||||
public PagingQuizzes getQuizList(final GetQuizRequest getQuizRequest) {
|
public PagingQuizzes getQuizList(final GetQuizRequest request) {
|
||||||
final PageRequest pageRequest = PageRequest.of(getQuizRequest.getPage(), getQuizRequest.getSize());
|
final PageRequest pageRequest = PageRequest.of(request.getPage(), request.getSize());
|
||||||
final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(getQuizRequest.getCategory(), pageRequest);
|
final Page<Quiz> quizPage = quizRepository.findByQuizCategoryIsAndIsEnableTrue(request.getCategory(), pageRequest);
|
||||||
|
|
||||||
return PagingQuizzes.builder()
|
return PagingQuizzes.builder()
|
||||||
.quizzes(new Quizzes(quizPage.getContent()))
|
.quizzes(new Quizzes(quizPage.getContent()))
|
||||||
@@ -60,21 +60,17 @@ public class GetQuizService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetQuizResponseHolder searchQuizList(final SearchQuizListRequest searchRequest) {
|
public PagingQuizzes searchQuizList(final SearchQuizListRequest request) {
|
||||||
final QuizSearchCondition condition = modelMapper.map(searchRequest, QuizSearchCondition.class);
|
final QuizSearchCondition condition = modelMapper.map(request, QuizSearchCondition.class);
|
||||||
final PageRequest pageRequest = PageRequest.of(searchRequest.getPage(), searchRequest.getSize());
|
final PageRequest pageRequest = PageRequest.of(request.getPage(), request.getSize());
|
||||||
|
|
||||||
final Page<Quiz> quizPage = quizRepository.search(condition, pageRequest);
|
final Page<Quiz> quizPage = quizRepository.search(condition, pageRequest);
|
||||||
|
|
||||||
final List<GetQuizResponse> quizResponseList = quizPage.getContent().stream()
|
return PagingQuizzes.builder()
|
||||||
.map(QuizDtoConverter::convert)
|
.quizzes(new Quizzes(quizPage.getContent()))
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
return GetQuizResponseHolder.builder()
|
|
||||||
.quizList(quizResponseList)
|
|
||||||
.hasNext(quizPage.hasNext())
|
.hasNext(quizPage.hasNext())
|
||||||
.page(quizPage.nextOrLastPageable().getPageNumber())
|
.pageNumber(quizPage.nextOrLastPageable().getPageNumber())
|
||||||
.size(quizPage.nextOrLastPageable().getPageSize())
|
.pageSize(quizPage.nextOrLastPageable().getPageSize())
|
||||||
.totalPages(quizPage.getTotalPages())
|
.totalPages(quizPage.getTotalPages())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.springframework.test.web.servlet.MockMvc;
|
|||||||
import org.springframework.test.web.servlet.ResultActions;
|
import org.springframework.test.web.servlet.ResultActions;
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ class AddQuizControllerTest {
|
|||||||
final AddQuizRequest request = AddQuizRequest.builder()
|
final AddQuizRequest request = AddQuizRequest.builder()
|
||||||
.quizCategory(QuizCategory.JAVA)
|
.quizCategory(QuizCategory.JAVA)
|
||||||
.title("Title")
|
.title("Title")
|
||||||
.quizLevel(Collections.singletonList(QuizLevel.NEW))
|
.quizLevel(List.of(QuizLevel.NEW))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|||||||
@@ -5,11 +5,9 @@ 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.entity.Quizzes;
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
|
import com.mangkyu.employment.interview.app.quiz.service.GetQuizService;
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperType;
|
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
||||||
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
|
||||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
@@ -24,8 +22,6 @@ import org.springframework.test.web.servlet.MockMvc;
|
|||||||
import org.springframework.test.web.servlet.ResultActions;
|
import org.springframework.test.web.servlet.ResultActions;
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@@ -73,7 +69,7 @@ class GetQuizControllerTest {
|
|||||||
.expose(true)
|
.expose(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
doReturn(Collections.singletonList(enumMapperValue))
|
doReturn(List.of(enumMapperValue))
|
||||||
.when(enumMapperFactory)
|
.when(enumMapperFactory)
|
||||||
.get(EnumMapperKey.QUIZ_CATEGORY);
|
.get(EnumMapperKey.QUIZ_CATEGORY);
|
||||||
|
|
||||||
@@ -112,7 +108,7 @@ class GetQuizControllerTest {
|
|||||||
final Quiz quiz = EntityCreationUtils.quiz();
|
final Quiz quiz = EntityCreationUtils.quiz();
|
||||||
|
|
||||||
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
|
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
|
||||||
final PageImpl<Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
|
final PageImpl<Quiz> quizPage = new PageImpl<>(List.of(), pageable, 0);
|
||||||
|
|
||||||
final PagingQuizzes quizzes = PagingQuizzes.builder()
|
final PagingQuizzes quizzes = PagingQuizzes.builder()
|
||||||
.quizzes(new Quizzes(List.of(quiz)))
|
.quizzes(new Quizzes(List.of(quiz)))
|
||||||
@@ -160,24 +156,20 @@ class GetQuizControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
void searchQuizSuccess() throws Exception {
|
void searchQuizSuccess() throws Exception {
|
||||||
// given
|
// given
|
||||||
final GetQuizResponse quizResponse = GetQuizResponse.builder()
|
final Quiz quiz = EntityCreationUtils.quiz();
|
||||||
.title("quiz")
|
|
||||||
.quizLevelList(Arrays.asList(QuizLevel.JUNIOR.name(), QuizLevel.SENIOR.name()))
|
|
||||||
.category(enumMapperValue(QuizCategory.JAVA).getTitle())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
|
final Pageable pageable = PageRequest.of(MIN_PAGE_NUMBER, MIN_PAGE_SIZE);
|
||||||
final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
|
final PageImpl<Quiz> quizPage = new PageImpl<>(List.of(), pageable, 0);
|
||||||
|
|
||||||
final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder()
|
final PagingQuizzes quizzes = PagingQuizzes.builder()
|
||||||
.quizList(Collections.singletonList(quizResponse))
|
.quizzes(new Quizzes(List.of(quiz)))
|
||||||
.hasNext(quizPage.hasNext())
|
.hasNext(quizPage.hasNext())
|
||||||
.page(quizPage.nextOrLastPageable().getPageNumber())
|
.pageNumber(quizPage.nextOrLastPageable().getPageNumber())
|
||||||
.size(quizPage.nextOrLastPageable().getPageSize())
|
.pageSize(quizPage.nextOrLastPageable().getPageSize())
|
||||||
.totalPages(quizPage.getTotalPages())
|
.totalPages(quizPage.getTotalPages())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
doReturn(getQuizResponseHolder)
|
doReturn(quizzes)
|
||||||
.when(quizService)
|
.when(quizService)
|
||||||
.searchQuizList(any(SearchQuizListRequest.class));
|
.searchQuizList(any(SearchQuizListRequest.class));
|
||||||
|
|
||||||
@@ -192,12 +184,4 @@ class GetQuizControllerTest {
|
|||||||
result.andExpect(status().isOk());
|
result.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnumMapperValue enumMapperValue(final EnumMapperType enumMapperType) {
|
|
||||||
return EnumMapperValue.builder()
|
|
||||||
.code(enumMapperType.name())
|
|
||||||
.title(enumMapperType.getTitle())
|
|
||||||
.desc(enumMapperType.getDesc())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,15 +3,15 @@ package com.mangkyu.employment.interview.app.quiz.entity;
|
|||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
class QuizzesTest {
|
class QuizzesTest {
|
||||||
|
|
||||||
@@ -68,9 +68,9 @@ class QuizzesTest {
|
|||||||
private Quiz quiz(final long id) {
|
private Quiz quiz(final long id) {
|
||||||
final Quiz quiz = Quiz.builder()
|
final Quiz quiz = Quiz.builder()
|
||||||
.title("quiz")
|
.title("quiz")
|
||||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
.quizLevel(List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||||
.quizCategory(QuizCategory.JAVA)
|
.quizCategory(QuizCategory.JAVA)
|
||||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
.quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
ReflectionTestUtils.setField(quiz, "id", id);
|
ReflectionTestUtils.setField(quiz, "id", id);
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ 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.repository.AnswerRepository;
|
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.QuizSearchCondition;
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||||
@@ -99,8 +99,8 @@ class QuizRepositoryTest {
|
|||||||
|
|
||||||
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
||||||
.query(null)
|
.query(null)
|
||||||
.categories(Collections.emptySet())
|
.categories(Set.of())
|
||||||
.levels(new HashSet<>(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR)))
|
.levels(new HashSet<>(List.of(QuizLevel.NEW, QuizLevel.JUNIOR)))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
boolean hasNext = true;
|
boolean hasNext = true;
|
||||||
@@ -129,8 +129,8 @@ class QuizRepositoryTest {
|
|||||||
|
|
||||||
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
||||||
.query(null)
|
.query(null)
|
||||||
.categories(new HashSet<>(Arrays.asList(QuizCategory.ALGORITHM, QuizCategory.DATABASE)))
|
.categories(new HashSet<>(List.of(QuizCategory.ALGORITHM, QuizCategory.DATABASE)))
|
||||||
.levels(Collections.emptySet())
|
.levels(Set.of())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
boolean hasNext = true;
|
boolean hasNext = true;
|
||||||
@@ -159,8 +159,8 @@ class QuizRepositoryTest {
|
|||||||
|
|
||||||
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
final QuizSearchCondition searchCondition = QuizSearchCondition.builder()
|
||||||
.query(null)
|
.query(null)
|
||||||
.categories(Collections.emptySet())
|
.categories(Set.of())
|
||||||
.levels(Collections.emptySet())
|
.levels(Set.of())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
boolean hasNext = true;
|
boolean hasNext = true;
|
||||||
@@ -221,10 +221,10 @@ class QuizRepositoryTest {
|
|||||||
@Test
|
@Test
|
||||||
public void selectQuizCountByCategory() {
|
public void selectQuizCountByCategory() {
|
||||||
// given
|
// given
|
||||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.DATABASE, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.DATABASE, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
|
|
||||||
quizRepository.save(quiz1);
|
quizRepository.save(quiz1);
|
||||||
quizRepository.save(quiz2);
|
quizRepository.save(quiz2);
|
||||||
@@ -256,23 +256,23 @@ class QuizRepositoryTest {
|
|||||||
@Test
|
@Test
|
||||||
public void selectQuizNotInAndLevelAndQuizCategory() {
|
public void selectQuizNotInAndLevelAndQuizCategory() {
|
||||||
// given
|
// given
|
||||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.DATABASE, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.DATABASE, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
|
|
||||||
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
||||||
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
||||||
final Quiz savedQuiz3 = quizRepository.save(quiz3);
|
final Quiz savedQuiz3 = quizRepository.save(quiz3);
|
||||||
final Quiz savedQuiz4 = quizRepository.save(quiz4);
|
final Quiz savedQuiz4 = quizRepository.save(quiz4);
|
||||||
|
|
||||||
final Set<Long> idSet = new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId()));
|
final Set<Long> idSet = new HashSet<>(List.of(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.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(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.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(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.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), new HashSet<>(List.of(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.customFindByIdNotInAndQuizCategoryInAndQuizLevel(idSet, new HashSet<>(List.of(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(unsolvedQuizList1.size()).isEqualTo(2);
|
assertThat(unsolvedQuizList1.size()).isEqualTo(2);
|
||||||
@@ -284,10 +284,10 @@ class QuizRepositoryTest {
|
|||||||
@Test
|
@Test
|
||||||
public void selectQuizNotInAndLevel() {
|
public void selectQuizNotInAndLevel() {
|
||||||
// given
|
// given
|
||||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
|
|
||||||
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
||||||
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
||||||
@@ -295,8 +295,8 @@ class QuizRepositoryTest {
|
|||||||
final Quiz savedQuiz4 = quizRepository.save(quiz4);
|
final Quiz savedQuiz4 = quizRepository.save(quiz4);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW);
|
final List<Quiz> unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(new HashSet<>(List.of(savedQuiz1.getId(), savedQuiz2.getId())), QuizLevel.NEW);
|
||||||
final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), QuizLevel.NEW);
|
final List<Quiz> unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizLevelAndIsEnableTrue(Set.of(), QuizLevel.NEW);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(unsolvedQuizList1.size()).isEqualTo(1);
|
assertThat(unsolvedQuizList1.size()).isEqualTo(1);
|
||||||
@@ -306,10 +306,10 @@ class QuizRepositoryTest {
|
|||||||
@Test
|
@Test
|
||||||
public void selectQuizLevel() {
|
public void selectQuizLevel() {
|
||||||
// given
|
// given
|
||||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||||
|
|
||||||
quizRepository.save(quiz1);
|
quizRepository.save(quiz1);
|
||||||
quizRepository.save(quiz2);
|
quizRepository.save(quiz2);
|
||||||
@@ -324,14 +324,14 @@ class QuizRepositoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initForPaging(final QuizCategory quizCategory) {
|
private void initForPaging(final QuizCategory quizCategory) {
|
||||||
final Quiz savedQuiz1 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz1 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz2 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz2 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz3 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz3 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz4 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz4 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz5 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz5 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz6 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
final Quiz savedQuiz6 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz7 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, Collections.singletonList(QuizLevel.SENIOR)));
|
final Quiz savedQuiz7 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, List.of(QuizLevel.SENIOR)));
|
||||||
final Quiz savedQuiz8 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, Collections.singletonList(QuizLevel.SENIOR)));
|
final Quiz savedQuiz8 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, List.of(QuizLevel.SENIOR)));
|
||||||
|
|
||||||
savedQuiz1.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz1)));
|
savedQuiz1.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz1)));
|
||||||
savedQuiz2.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz2)));
|
savedQuiz2.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz2)));
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
|||||||
import org.modelmapper.ModelMapper;
|
import org.modelmapper.ModelMapper;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
@@ -37,7 +38,7 @@ class AddQuizServiceTest {
|
|||||||
final AddQuizRequest request = AddQuizRequest.builder()
|
final AddQuizRequest request = AddQuizRequest.builder()
|
||||||
.title("quiz")
|
.title("quiz")
|
||||||
.quizCategory(QuizCategory.JAVA)
|
.quizCategory(QuizCategory.JAVA)
|
||||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
.quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
package com.mangkyu.employment.interview.app.quiz.service;
|
package com.mangkyu.employment.interview.app.quiz.service;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.controller.*;
|
import com.mangkyu.employment.interview.app.quiz.controller.GetQuizRequest;
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.controller.SearchQuizListRequest;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes;
|
import com.mangkyu.employment.interview.app.quiz.entity.PagingQuizzes;
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.entity.QuizSearchCondition;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quizzes;
|
||||||
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
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.entity.SolvedQuiz;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
||||||
import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig;
|
import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig;
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperKey;
|
|
||||||
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
|
||||||
import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
||||||
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
|
|||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
class GetQuizServiceTest {
|
class GetQuizServiceTest {
|
||||||
@@ -45,8 +45,6 @@ class GetQuizServiceTest {
|
|||||||
private QuizRepository quizRepository;
|
private QuizRepository quizRepository;
|
||||||
@Mock
|
@Mock
|
||||||
private SolvedQuizRepository solvedQuizRepository;
|
private SolvedQuizRepository solvedQuizRepository;
|
||||||
@Mock
|
|
||||||
private EnumMapperFactory enumMapperFactory;
|
|
||||||
@Spy
|
@Spy
|
||||||
private ModelMapper modelMapper = new ModelMapperConfig().modelMapper();
|
private ModelMapper modelMapper = new ModelMapperConfig().modelMapper();
|
||||||
|
|
||||||
@@ -59,31 +57,31 @@ class GetQuizServiceTest {
|
|||||||
final int page = 0;
|
final int page = 0;
|
||||||
final int size = 20;
|
final int size = 20;
|
||||||
|
|
||||||
final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList = quizList();
|
final List<Quiz> quizList = quizList();
|
||||||
final SearchQuizListRequest request = SearchQuizListRequest.builder()
|
final SearchQuizListRequest request = SearchQuizListRequest.builder()
|
||||||
.query("query")
|
.query("query")
|
||||||
.categories(new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.JAVA)))
|
.categories(new HashSet<>(List.of(QuizCategory.CULTURE, QuizCategory.JAVA)))
|
||||||
.levels(new HashSet<>(Arrays.asList(QuizLevel.NEW, QuizLevel.SENIOR)))
|
.levels(new HashSet<>(List.of(QuizLevel.NEW, QuizLevel.SENIOR)))
|
||||||
.page(0)
|
.page(0)
|
||||||
.size(20)
|
.size(20)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(quizList(), PageRequest.of(page, size), quizList.size());
|
final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), PageRequest.of(page, size), quizList.size());
|
||||||
doReturn(quizPage)
|
doReturn(quizPage)
|
||||||
.when(quizRepository)
|
.when(quizRepository)
|
||||||
.search(any(QuizSearchCondition.class), any(PageRequest.class));
|
.search(any(QuizSearchCondition.class), any(PageRequest.class));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final GetQuizResponseHolder result = quizService.searchQuizList(request);
|
final PagingQuizzes result = quizService.searchQuizList(request);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.getQuizList().size()).isEqualTo(quizList.size());
|
assertThat(result.getQuizzes().getQuizList().size()).isEqualTo(quizList.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void findQuizEntityFail_NotExists() {
|
public void findQuizEntityFail_NotExists() {
|
||||||
// given
|
// given
|
||||||
final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L);
|
final Quiz quiz = quiz(-1L);
|
||||||
|
|
||||||
doReturn(Optional.empty())
|
doReturn(Optional.empty())
|
||||||
.when(quizRepository)
|
.when(quizRepository)
|
||||||
@@ -101,14 +99,14 @@ class GetQuizServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void findQuizEntitySuccess() {
|
public void findQuizEntitySuccess() {
|
||||||
// given
|
// given
|
||||||
final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(-1L);
|
final Quiz quiz = quiz(-1L);
|
||||||
|
|
||||||
doReturn(Optional.of(quiz))
|
doReturn(Optional.of(quiz))
|
||||||
.when(quizRepository)
|
.when(quizRepository)
|
||||||
.findByResourceId(quiz.getResourceId());
|
.findByResourceId(quiz.getResourceId());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final com.mangkyu.employment.interview.app.quiz.entity.Quiz result = quizService.getQuiz(quiz.getResourceId());
|
final Quiz result = quizService.getQuiz(quiz.getResourceId());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
|
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
|
||||||
@@ -127,10 +125,10 @@ class GetQuizServiceTest {
|
|||||||
.page(page)
|
.page(page)
|
||||||
.size(size)
|
.size(size)
|
||||||
.build();
|
.build();
|
||||||
final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList = quizList();
|
final List<Quiz> quizList = quizList();
|
||||||
final Pageable pageable = PageRequest.of(page, size);
|
final Pageable pageable = PageRequest.of(page, size);
|
||||||
|
|
||||||
final PageImpl<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size());
|
final PageImpl<Quiz> quizPage = new PageImpl<>(quizList(), pageable, quizList.size());
|
||||||
doReturn(quizPage)
|
doReturn(quizPage)
|
||||||
.when(quizRepository)
|
.when(quizRepository)
|
||||||
.findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class));
|
.findByQuizCategoryIsAndIsEnableTrue(any(QuizCategory.class), any(PageRequest.class));
|
||||||
@@ -151,7 +149,7 @@ class GetQuizServiceTest {
|
|||||||
final Set<Long> solvedQuizIdList = solvedQuizList.stream()
|
final Set<Long> solvedQuizIdList = solvedQuizList.stream()
|
||||||
.map(v -> v.getQuiz().getId())
|
.map(v -> v.getQuiz().getId())
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L));
|
final List<Quiz> unsolvedQuizList = List.of(quiz(4L));
|
||||||
|
|
||||||
final Set<QuizCategory> quizCategorySet = new HashSet<>();
|
final Set<QuizCategory> quizCategorySet = new HashSet<>();
|
||||||
quizCategorySet.add(QuizCategory.CULTURE);
|
quizCategorySet.add(QuizCategory.CULTURE);
|
||||||
@@ -176,8 +174,8 @@ class GetQuizServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() {
|
public void getUnsolvedQuizSuccess_SolvedQuizNotEmpty() {
|
||||||
// given
|
// given
|
||||||
final List<SolvedQuiz> solvedQuizList = Collections.emptyList();
|
final List<SolvedQuiz> solvedQuizList = List.of();
|
||||||
final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = Collections.singletonList(quiz(4L));
|
final List<Quiz> unsolvedQuizList = List.of(quiz(4L));
|
||||||
|
|
||||||
final Set<QuizCategory> quizCategorySet = new HashSet<>();
|
final Set<QuizCategory> quizCategorySet = new HashSet<>();
|
||||||
quizCategorySet.add(QuizCategory.CULTURE);
|
quizCategorySet.add(QuizCategory.CULTURE);
|
||||||
@@ -190,7 +188,7 @@ class GetQuizServiceTest {
|
|||||||
|
|
||||||
doReturn(unsolvedQuizList)
|
doReturn(unsolvedQuizList)
|
||||||
.when(quizRepository)
|
.when(quizRepository)
|
||||||
.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel);
|
.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Set.of(), quizCategorySet, quizLevel);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
final Quizzes result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);
|
||||||
@@ -200,8 +198,8 @@ class GetQuizServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> quizList() {
|
private List<Quiz> quizList() {
|
||||||
final List<com.mangkyu.employment.interview.app.quiz.entity.Quiz> unsolvedQuizList = new ArrayList<>();
|
final List<Quiz> unsolvedQuizList = new ArrayList<>();
|
||||||
|
|
||||||
unsolvedQuizList.add(quiz(1L));
|
unsolvedQuizList.add(quiz(1L));
|
||||||
unsolvedQuizList.add(quiz(2L));
|
unsolvedQuizList.add(quiz(2L));
|
||||||
@@ -212,7 +210,7 @@ class GetQuizServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<SolvedQuiz> solvedQuizList() {
|
private List<SolvedQuiz> solvedQuizList() {
|
||||||
return Arrays.asList(
|
return List.of(
|
||||||
solvedQuiz(1L),
|
solvedQuiz(1L),
|
||||||
solvedQuiz(2L),
|
solvedQuiz(2L),
|
||||||
solvedQuiz(3L)
|
solvedQuiz(3L)
|
||||||
@@ -220,19 +218,19 @@ class GetQuizServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SolvedQuiz solvedQuiz(final long id) {
|
private SolvedQuiz solvedQuiz(final long id) {
|
||||||
final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = quiz(id);
|
final Quiz quiz = quiz(id);
|
||||||
|
|
||||||
return SolvedQuiz.builder()
|
return SolvedQuiz.builder()
|
||||||
.quiz(quiz)
|
.quiz(quiz)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz(final long id) {
|
private Quiz quiz(final long id) {
|
||||||
final com.mangkyu.employment.interview.app.quiz.entity.Quiz quiz = com.mangkyu.employment.interview.app.quiz.entity.Quiz.builder()
|
final Quiz quiz = Quiz.builder()
|
||||||
.title("quiz")
|
.title("quiz")
|
||||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
.quizLevel(List.of(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||||
.quizCategory(QuizCategory.JAVA)
|
.quizCategory(QuizCategory.JAVA)
|
||||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
.quizLevel(List.of(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
ReflectionTestUtils.setField(quiz, "id", id);
|
ReflectionTestUtils.setField(quiz, "id", id);
|
||||||
|
|||||||
Reference in New Issue
Block a user