From 1d058a367cc40003f93d18f32956163419c94174 Mon Sep 17 00:00:00 2001 From: Art Date: Sat, 11 Sep 2021 00:43:56 +0300 Subject: [PATCH] 89.2. Test list - pagination. return page (#10) --- .../backend/controller/UserResource.java | 4 ++-- .../backend/service/UserService.java | 4 ++-- .../backend/service/UserServiceImpl.java | 6 +++--- .../controller/UserResourceUnSecureTest.java | 19 ++++++++++++++++--- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java index 84fa250..9e68e45 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java @@ -8,6 +8,7 @@ import net.shyshkin.study.fullstack.supportportal.backend.domain.User; import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; import net.shyshkin.study.fullstack.supportportal.backend.service.UserService; import net.shyshkin.study.fullstack.supportportal.backend.utility.JwtTokenProvider; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -20,7 +21,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; import java.io.IOException; -import java.util.List; import static org.springframework.http.HttpStatus.OK; @@ -80,7 +80,7 @@ public class UserResource { } @GetMapping - public List getAllUsers(Pageable pageable) { + public Page getAllUsers(Pageable pageable) { return userService.findAll(pageable); } diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java index 8ee6f91..756ae0a 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java @@ -2,18 +2,18 @@ package net.shyshkin.study.fullstack.supportportal.backend.service; import net.shyshkin.study.fullstack.supportportal.backend.domain.User; import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.List; public interface UserService extends UserDetailsService { User register(String firstName, String lastName, String username, String email); - List findAll(Pageable pageable); + Page findAll(Pageable pageable); User findByUsername(String username); diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java index 9e5b5ea..532e002 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java @@ -15,6 +15,7 @@ import net.shyshkin.study.fullstack.supportportal.backend.repository.UserReposit import org.apache.commons.lang3.RandomStringUtils; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.MediaType; import org.springframework.http.RequestEntity; @@ -33,7 +34,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; -import java.util.List; import java.util.Objects; import java.util.UUID; @@ -127,8 +127,8 @@ public class UserServiceImpl implements UserService { } @Override - public List findAll(Pageable pageable) { - return userRepository.findAll(pageable).getContent(); + public Page findAll(Pageable pageable) { + return userRepository.findAll(pageable); } @Override diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java index 059bea0..2f64786 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java @@ -1,5 +1,6 @@ package net.shyshkin.study.fullstack.supportportal.backend.controller; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import net.shyshkin.study.fullstack.supportportal.backend.common.BaseUserTest; import net.shyshkin.study.fullstack.supportportal.backend.constant.FileConstant; @@ -490,18 +491,30 @@ class UserResourceUnSecureTest extends BaseUserTest { void getAllUsers() { //when - var responseEntity = restTemplate.exchange("/user", HttpMethod.GET, null, new ParameterizedTypeReference>() { - }); + var responseEntity = restTemplate.exchange("/user", HttpMethod.GET, null, UserPage.class); //then log.debug("Response Entity: {}", responseEntity); assertThat(responseEntity.getStatusCode()).isEqualTo(OK); assertThat(responseEntity.getBody()) - .isNotNull() + .isNotNull(); + assertThat(responseEntity.getBody().getContent()) .hasSizeGreaterThan(2); } } + @Data + static class UserPage { + private List content; + private boolean last; + private boolean first; + private int totalElements; + private int size; + private int numberOfElements; + private int number; + private boolean empty; + } + @Nested class ResetPasswordTests {