package org.springframework.data.simpledb.repository; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Order; import org.springframework.data.simpledb.domain.SimpleDbUser; import org.springframework.data.simpledb.repository.util.SimpleDbUserBuilder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:simpledb-consistent-repository-context.xml") public class PagingAndSortingSimpleDbUserRepositoryTest { @Autowired PagingAndSortingUserRepository repository; static List<SimpleDbUser> simpleDbUsers; //Used for performance reasons to delete after class all simpleDbUsers created static PagingAndSortingUserRepository staticRepository; @Before public void setUp() { //for performance reasons create 3 entities once and use them to test all queries if(simpleDbUsers == null){ simpleDbUsers = SimpleDbUserBuilder.createListOfItems(5); repository.save(simpleDbUsers); } } @After public void setUpStaticRepository(){ staticRepository = repository; } @AfterClass public static void tearDown() { staticRepository.deleteAll(); } @Test public void findAll_with_sort_should_return_desc_items() { //created in setup a list of 5 SimpleDbUser - first Item_0 Iterable<SimpleDbUser> findAll = repository.findAll(new Sort(new Order(Sort.Direction.DESC, "itemName"))); assertEquals(simpleDbUsers.get(simpleDbUsers.size() - 1).getItemName(), findAll.iterator().next().getItemName()); } @Test public void findAll_with_pageable_should_return_paged_result() { //created in setup a list of 5 SimpleDbUser - first Item_0 final int pageNumber = 1; final int pageSize = 2; PageRequest pageable = new PageRequest(pageNumber, pageSize); final Page<SimpleDbUser> page = repository.findAll(pageable); assertNotNull(page); assertEquals(pageNumber, page.getNumber()); List<SimpleDbUser> content = page.getContent(); assertEquals(pageSize, content.size()); /* users 3 & 4 */ assertEquals(simpleDbUsers.get(2), content.get(0)); assertEquals(simpleDbUsers.get(3), content.get(1)); } @Test public void findAll_should_return_page_with_last_element_only() { //created in setup a list of 5 SimpleDbUser - first Item_0 final int pageNumber = 2; final int pageSize = 2; PageRequest pageable = new PageRequest(pageNumber, pageSize); final Page<SimpleDbUser> page = repository.findAll(pageable); assertNotNull(page); assertEquals(pageNumber, page.getNumber()); List<SimpleDbUser> content = page.getContent(); assertEquals(1, content.size()); /* users 5 */ assertEquals(simpleDbUsers.get(4), content.get(0)); } @Test public void findAll_should_return_empty_list_for_non_existing_page() { //created in setup a list of 5 SimpleDbUser - first Item_0 final int pageNumber = 4; final int pageSize = 2; PageRequest pageable = new PageRequest(pageNumber, pageSize); final Page<SimpleDbUser> page = repository.findAll(pageable); assertNotNull(page); assertEquals(5, page.getTotalElements()); List<SimpleDbUser> content = page.getContent(); assertNotNull(content); assertEquals(0, content.size()); } }