package ch.alv.components.data.repository; import org.junit.Test; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; /** * Unit tests for the {@link ch.alv.components.data.repository.RepositoryHelper} class * * @since 1.0.0 */ public class RepositoryHelperTest { @Test public void testApplyPageableToList() { List<Integer> list = new ArrayList<>(); assertEquals(list, RepositoryHelper.applyPageable(null, list)); for (int i = 0; i < 99; i++) { list.add(i); } // all items should be included (case "limit - 1") assertEquals(99, RepositoryHelper.applyPageable(new PageRequest(0, 100), list).size()); // second page should be empty. assertEquals(0, RepositoryHelper.applyPageable(new PageRequest(1, 100), list).size()); // all items should be included (case "limit") list.add(99); assertEquals(100, RepositoryHelper.applyPageable(new PageRequest(0, 100), list).size()); // only 100 items should be contained (case "limit + 1") list.add(100); assertEquals(100, RepositoryHelper.applyPageable(new PageRequest(0, 100), list).size()); // but a second page should be provided. assertEquals(1, RepositoryHelper.applyPageable(new PageRequest(1, 100), list).size()); // one single page for all if pageable is null assertEquals(101, RepositoryHelper.applyPageable(null, list).size()); } @Test public void testApplyPageableToPage() { List<Integer> list = new ArrayList<>(); assertEquals(list, RepositoryHelper.applyPageable(null, list)); for (int i = 0; i < 99; i++) { list.add(i); } // all items should be included (case "limit - 1") assertEquals(99, RepositoryHelper.applyPageable(new PageRequest(0, 100), new PageImpl<>(list)).getNumberOfElements()); // second page should be empty. assertEquals(0, RepositoryHelper.applyPageable(new PageRequest(1, 100), new PageImpl<>(list)).getNumberOfElements()); // all items should be included (case "limit") list.add(99); assertEquals(100, RepositoryHelper.applyPageable(new PageRequest(0, 100), new PageImpl<>(list)).getNumberOfElements()); // only 100 items should be contained (case "limit + 1") list.add(100); assertEquals(100, RepositoryHelper.applyPageable(new PageRequest(0, 100), new PageImpl<>(list)).getNumberOfElements()); // but a second page should be provided. assertEquals(1, RepositoryHelper.applyPageable(new PageRequest(1, 100), new PageImpl<>(list)).getNumberOfElements()); // one single page for all if pageable is null assertEquals(101, RepositoryHelper.applyPageable(null, new PageImpl<>(list)).getNumberOfElements()); } @Test public void testCreatePage() { List<Integer> list = new ArrayList<>(); assertEquals(list, RepositoryHelper.applyPageable(null, list)); for (int i = 0; i < 99; i++) { list.add(i); } // all items should be included (case "limit - 1") assertEquals(99, RepositoryHelper.createPage(new PageRequest(0, 100), list).getNumberOfElements()); // second page should be empty. assertEquals(0, RepositoryHelper.createPage(new PageRequest(1, 100), list).getNumberOfElements()); // all items should be included (case "limit") list.add(99); assertEquals(100, RepositoryHelper.createPage(new PageRequest(0, 100), list).getNumberOfElements()); // only 100 items should be contained (case "limit + 1") list.add(100); assertEquals(100, RepositoryHelper.createPage(new PageRequest(0, 100), list).getNumberOfElements()); // but a second page should be provided. assertEquals(1, RepositoryHelper.createPage(new PageRequest(1, 100), list).getNumberOfElements()); assertEquals(101, RepositoryHelper.createPage(null, list).getNumberOfElements()); assertEquals(0, RepositoryHelper.createPage(null, null).getNumberOfElements()); } @Test public void testConstructor() { new RepositoryHelper(); } }