Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add methods to get page numbers in PagerRenderer #4188

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 52 additions & 2 deletions system/Pager/PagerRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ class PagerRenderer
protected $current;

/**
* Total number of pages? unused?
* Total number of items.
*
* @var integer
*/
protected $total;

/**
* Page count?
* Total number of pages.
*
* @var integer
*/
Expand Down Expand Up @@ -401,4 +401,54 @@ public function getNextPage()

return (string) $uri;
}

/**
* Returns the page number of the first page.
*
* @return integer
*/
public function getFirstPageNumber(): int
{
return $this->first;
}

/**
* Returns the page number of the current page.
*
* @return integer
*/
public function getCurrentPageNumber(): int
{
return $this->current;
}

/**
* Returns the page number of the last page.
*
* @return integer
*/
public function getLastPageNumber(): int
{
return $this->last;
}

/**
* Returns the previous page number.
*
* @return integer|null
*/
public function getPreviousPageNumber(): ?int
{
return ($this->current === 1) ? null : $this->current - 1;
}

/**
* Returns the next page number.
*
* @return integer|null
*/
public function getNextPageNumber(): ?int
{
return ($this->current === $this->pageCount) ? null : $this->current + 1;
}
}
99 changes: 99 additions & 0 deletions tests/system/Pager/PagerRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -560,4 +560,103 @@ public function testGetNextPageWithSegmentHigherThanZero()
$pager = new PagerRenderer($details);
$this->assertEquals('http://example.com/foo/4', $pager->getNextPage());
}

public function testGetPageNumber()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 3,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);

$this->assertEquals(1, $pager->getFirstPageNumber());
$this->assertEquals(3, $pager->getCurrentPageNumber());
$this->assertEquals(10, $pager->getLastPageNumber());
}

public function testGetPageNumberSetSurroundCount()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 5,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);
$pager->setSurroundCount(2);

$this->assertEquals(3, $pager->getFirstPageNumber());
$this->assertEquals(5, $pager->getCurrentPageNumber());
$this->assertEquals(7, $pager->getLastPageNumber());
}

public function testGetPreviousPageNumber()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 5,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);
$pager->setSurroundCount(2);

$this->assertEquals(4, $pager->getPreviousPageNumber());
}

public function testGetPreviousPageNumberNull()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 1,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);
$pager->setSurroundCount(2);

$this->assertNull($pager->getPreviousPageNumber());
}

public function testGetNextPageNumber()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 5,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);
$pager->setSurroundCount(2);

$this->assertEquals(6, $pager->getNextPageNumber());
}

public function testGetNextPageNumberNull()
{
$uri = $this->uri;
$details = [
'uri' => $uri,
'pageCount' => 10,
'currentPage' => 10,
'total' => 100,
'segment' => 2,
];
$pager = new PagerRenderer($details);
$pager->setSurroundCount(2);

$this->assertNull($pager->getNextPageNumber());
}
}