package sagan.support.nav;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class PaginationInfo_PreviousAndNextControlsTests {
List<String> content = new ArrayList<>();
@Test
public void givenOnePage_controlsAreNotVisible() {
PageRequest pageRequest = new PageRequest(0, 10);
int itemCount = 8;
PaginationInfo paginationInfo = new PaginationInfo(new PageImpl<>(content, pageRequest, itemCount));
assertThat(paginationInfo.isVisible(), is(false));
assertThat(paginationInfo.isPreviousVisible(), is(false));
assertThat(paginationInfo.isNextVisible(), is(false));
}
@Test
public void givenOnFirstPageOfThree_nextIsVisible() {
PageRequest pageRequest = new PageRequest(0, 10);
int itemCount = 23;
PaginationInfo paginationInfo = new PaginationInfo(new PageImpl<>(content, pageRequest, itemCount));
assertThat(paginationInfo.isVisible(), is(true));
assertThat(paginationInfo.isPreviousVisible(), is(false));
assertThat(paginationInfo.isNextVisible(), is(true));
}
@Test
public void givenOnSecondPageOfThree_nextAndPreviousAreVisible() {
PageRequest pageRequest = new PageRequest(1, 10);
int itemCount = 23;
PaginationInfo paginationInfo = new PaginationInfo(new PageImpl<>(content, pageRequest, itemCount));
assertThat(paginationInfo.isVisible(), is(true));
assertThat(paginationInfo.isPreviousVisible(), is(true));
assertThat(paginationInfo.isNextVisible(), is(true));
}
@Test
public void givenOnThirdPageOfThree_previousIsVisible() {
PageRequest pageRequest = new PageRequest(2, 10);
int itemCount = 23;
PaginationInfo paginationInfo = new PaginationInfo(new PageImpl<>(content, pageRequest, itemCount));
assertThat(paginationInfo.isVisible(), is(true));
assertThat(paginationInfo.isPreviousVisible(), is(true));
assertThat(paginationInfo.isNextVisible(), is(false));
}
}