Merge branch 'master' into master-web

This commit is contained in:
MangKyu
2021-12-30 00:51:58 +09:00
4 changed files with 19 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import org.springframework.data.domain.Page;
@Getter
@Builder
@@ -14,13 +15,17 @@ public class CursorPageable<T> {
private final T response;
private final ResponseMetaData responseMetaData;
private CursorPageable(final T response, final boolean hasNext, final int page, final int size) {
private CursorPageable(final T response, final Page<?> page) {
this.response = response;
this.responseMetaData = new ResponseMetaData(hasNext, page, size);
this.responseMetaData = new ResponseMetaData(
page.hasNext(),
page.nextOrLastPageable().getPageNumber(),
page.nextOrLastPageable().getPageSize(),
page.getTotalElements());
}
public static <T> CursorPageable<T> of(final T response, final boolean hasNext, final int page, final int size) {
return new CursorPageable<>(response, hasNext, page, size);
public static <T> CursorPageable<T> of(final T response, final Page<?> page) {
return new CursorPageable<>(response, page);
}
}

View File

@@ -12,5 +12,5 @@ public class ResponseMetaData {
private final boolean hasNext;
private final int page;
private final int size;
private final long totalElements;
}

View File

@@ -56,7 +56,7 @@ public class QuizService {
final GetQuizResponseHolder responseHolder = new GetQuizResponseHolder(quizResponseList);
return CursorPageable.of(responseHolder, quizPage.hasNext(), quizPage.nextOrLastPageable().getPageNumber(), quizPage.nextOrLastPageable().getPageSize());
return CursorPageable.of(responseHolder, quizPage);
}
public List<Quiz> getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel, final Set<QuizCategory> quizCategorySet) {

View File

@@ -4,6 +4,7 @@ import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.common.pagination.CursorPageable;
import com.mangkyu.employment.interview.app.quiz.constants.QuizConstants;
import com.mangkyu.employment.interview.app.quiz.dto.*;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
import com.mangkyu.employment.interview.enums.value.QuizCategory;
import com.mangkyu.employment.interview.enums.value.QuizLevel;
@@ -16,6 +17,9 @@ import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
@@ -93,7 +97,6 @@ class QuizControllerTest {
final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder()
.quizList(Collections.singletonList(quizResponse))
.build();
final CursorPageable<GetQuizResponseHolder> cursorPageable = CursorPageable.of(getQuizResponseHolder, false, page, size);
// when
final ResultActions result = mockMvc.perform(
@@ -122,7 +125,10 @@ class QuizControllerTest {
final GetQuizResponseHolder getQuizResponseHolder = GetQuizResponseHolder.builder()
.quizList(Collections.singletonList(quizResponse))
.build();
final CursorPageable<GetQuizResponseHolder> cursorPageable = CursorPageable.of(getQuizResponseHolder, false, page, size);
final Pageable pageable = PageRequest.of(page, size);
final PageImpl<Quiz> quizPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
final CursorPageable<GetQuizResponseHolder> cursorPageable = CursorPageable.of(getQuizResponseHolder, quizPage);
doReturn(cursorPageable).when(quizService).getQuizList(any(GetQuizRequest.class));