diff --git a/persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/paging/CustomerService.java b/persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/paging/CustomerService.java index 73affeb1a1..2fc29e097b 100644 --- a/persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/paging/CustomerService.java +++ b/persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/paging/CustomerService.java @@ -1,5 +1,6 @@ package com.baeldung.spring.data.jpa.paging; +import java.util.Collections; import java.util.List; import org.springframework.data.domain.Page; @@ -29,6 +30,13 @@ public class CustomerService { return new PageImpl<>(pageContent, pageRequest, allCustomers.size()); } + public List getCustomerListFromPage(int page, int size) { + Pageable pageRequest = createPageRequestUsing(page, size); + Page allCustomers = customerRepository.findAll(pageRequest); + + return allCustomers.hasContent() ? allCustomers.getContent() : Collections.emptyList(); + } + private Pageable createPageRequestUsing(int page, int size) { return PageRequest.of(page, size); } diff --git a/persistence-modules/spring-data-jpa-query-3/src/test/java/com/baeldung/spring/data/jpa/paging/CustomerServiceUnitTest.java b/persistence-modules/spring-data-jpa-query-3/src/test/java/com/baeldung/spring/data/jpa/paging/CustomerServiceUnitTest.java index 1a34822527..cd5cbdcd60 100644 --- a/persistence-modules/spring-data-jpa-query-3/src/test/java/com/baeldung/spring/data/jpa/paging/CustomerServiceUnitTest.java +++ b/persistence-modules/spring-data-jpa-query-3/src/test/java/com/baeldung/spring/data/jpa/paging/CustomerServiceUnitTest.java @@ -1,14 +1,17 @@ package com.baeldung.spring.data.jpa.paging; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -16,6 +19,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; @ExtendWith(MockitoExtension.class) public class CustomerServiceUnitTest { @@ -46,12 +51,7 @@ public class CustomerServiceUnitTest { private static final List PAGE_4_CONTENTS = Arrays.asList("Penny", "Queen", "Rob", "Sue", "Tammy"); - private static final List EMPTY_PAGE = Arrays.asList(); - - @BeforeEach - void setup() { - when(customerRepository.findAll()).thenReturn(ALL_CUSTOMERS); - } + private static final List EMPTY_PAGE = Collections.emptyList(); private static Collection testIO() { return Arrays.asList(new Object[][] { @@ -66,6 +66,7 @@ public class CustomerServiceUnitTest { @ParameterizedTest @MethodSource("testIO") void givenAListOfCustomers_whenGetCustomers_thenReturnsDesiredDataAlongWithPagingInformation(int page, int size, List expectedNames, long expectedTotalElements, long expectedTotalPages) { + when(customerRepository.findAll()).thenReturn(ALL_CUSTOMERS); Page customers = customerService.getCustomers(page, size); List names = customers.getContent() .stream() @@ -77,4 +78,27 @@ public class CustomerServiceUnitTest { assertEquals(expectedTotalElements, customers.getTotalElements()); assertEquals(expectedTotalPages, customers.getTotalPages()); } + + @Test + void givenAPageOfCustomers_whenGetCustomerList_thenReturnsList() { + Page pagedResponse = new PageImpl(ALL_CUSTOMERS.subList(0, 5)); + when(customerRepository.findAll(any(Pageable.class))).thenReturn(pagedResponse); + + List customers = customerService.getCustomerListFromPage(0, 5); + List customerNames = customers.stream() + .map(Customer::getName) + .collect(Collectors.toList()); + + assertEquals(PAGE_1_CONTENTS.size(), customers.size()); + assertEquals(PAGE_1_CONTENTS, customerNames); + } + + @Test + void givenAnEmptyPageOfCustomers_whenGetCustomerList_thenReturnsEmptyList() { + Page emptyPage = Page.empty(); + when(customerRepository.findAll(any(Pageable.class))).thenReturn(emptyPage); + List customers = customerService.getCustomerListFromPage(0, 5); + + assertThat(customers).isEmpty(); + } }