package com.icfi.mongo;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
import com.icfi.mongo.data.loaders.EmployeeShortLoader;
import com.icfi.mongo.data.model.Employee;
import com.icfi.mongo.services.EmployeeService;
public class PagingQueryTest {
private static Logger log = LoggerFactory.getLogger(PagingQueryTest.class);
private ApplicationContext ctx;
MongoOperations mongoOps;
List<Employee> employees;
EmployeeService employeeService;
@Before
public void setup() {
ctx = new GenericXmlApplicationContext("context/main.xml");
mongoOps = (MongoOperations) ctx.getBean("mongoTemplate");
employeeService = (EmployeeService) ctx.getBean("employeeService");
EmployeeShortLoader.main(null);
}
@Test
public void testPaging() {
String[] lastNames = new String[] { "Stanfel", "Gustavson", "Lortz",
"Marquardt", "Unno", "Savasere", "Spelt", "Wynblatt",
"Danecki", "Weedman", "Hartvigsen", "Menhoudj", "Heyers",
"Willoner", "Shumilov", "Zuberek", "Boguraev" };
int pageCount = 10;
int pageNumber = 0;
String sortField = "employeeId";
Sort.Direction sortOrder = Sort.Direction.ASC;
Page<Employee> employeesPage = employeeService.findAllWithPages(
pageNumber, pageCount, sortOrder, sortField);
while (employeesPage.hasNextPage()) {
assertEquals("List size is incorrect.", pageCount,
employeesPage.getSize());
log.info("Page Number = " + pageNumber);
if (employeesPage.hasContent()) {
log.info(employeesPage.getContent()
.get(employeesPage.getSize() - 1).getLastName());
assertEquals(
"Last name was incorrect.",
lastNames[pageNumber],
employeesPage.getContent()
.get(employeesPage.getSize() - 1).getLastName());
}
pageNumber++;
employeesPage = employeeService.findAllWithPages(pageNumber,
pageCount, sortOrder, sortField);
}
log.info("Page Number = " + pageNumber);
employeesPage = employeeService.findAllWithPages(pageNumber, pageCount,
sortOrder, sortField);
log.info(employeesPage.getContent()
.get(employeesPage.getContent().size() - 1).getLastName());
assertEquals(
"Last name was incorrect.",
lastNames[pageNumber],
employeesPage.getContent()
.get(employeesPage.getContent().size() - 1)
.getLastName());
}
@After
public void tearDown() {
this.mongoOps.getCollection("employees").drop();
}
}