Skip to content

Commit 3685755

Browse files
authored
Merge pull request #4188 from kenjis/feat-PagerRenderer-property-accessor-v2
2 parents 9ba38f4 + 691a23d commit 3685755

File tree

2 files changed

+151
-2
lines changed

2 files changed

+151
-2
lines changed

system/Pager/PagerRenderer.php

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ class PagerRenderer
4242
protected $current;
4343

4444
/**
45-
* Total number of pages? unused?
45+
* Total number of items.
4646
*
4747
* @var integer
4848
*/
4949
protected $total;
5050

5151
/**
52-
* Page count?
52+
* Total number of pages.
5353
*
5454
* @var integer
5555
*/
@@ -401,4 +401,54 @@ public function getNextPage()
401401

402402
return (string) $uri;
403403
}
404+
405+
/**
406+
* Returns the page number of the first page.
407+
*
408+
* @return integer
409+
*/
410+
public function getFirstPageNumber(): int
411+
{
412+
return $this->first;
413+
}
414+
415+
/**
416+
* Returns the page number of the current page.
417+
*
418+
* @return integer
419+
*/
420+
public function getCurrentPageNumber(): int
421+
{
422+
return $this->current;
423+
}
424+
425+
/**
426+
* Returns the page number of the last page.
427+
*
428+
* @return integer
429+
*/
430+
public function getLastPageNumber(): int
431+
{
432+
return $this->last;
433+
}
434+
435+
/**
436+
* Returns the previous page number.
437+
*
438+
* @return integer|null
439+
*/
440+
public function getPreviousPageNumber(): ?int
441+
{
442+
return ($this->current === 1) ? null : $this->current - 1;
443+
}
444+
445+
/**
446+
* Returns the next page number.
447+
*
448+
* @return integer|null
449+
*/
450+
public function getNextPageNumber(): ?int
451+
{
452+
return ($this->current === $this->pageCount) ? null : $this->current + 1;
453+
}
404454
}

tests/system/Pager/PagerRendererTest.php

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,4 +560,103 @@ public function testGetNextPageWithSegmentHigherThanZero()
560560
$pager = new PagerRenderer($details);
561561
$this->assertEquals('http://example.com/foo/4', $pager->getNextPage());
562562
}
563+
564+
public function testGetPageNumber()
565+
{
566+
$uri = $this->uri;
567+
$details = [
568+
'uri' => $uri,
569+
'pageCount' => 10,
570+
'currentPage' => 3,
571+
'total' => 100,
572+
'segment' => 2,
573+
];
574+
$pager = new PagerRenderer($details);
575+
576+
$this->assertEquals(1, $pager->getFirstPageNumber());
577+
$this->assertEquals(3, $pager->getCurrentPageNumber());
578+
$this->assertEquals(10, $pager->getLastPageNumber());
579+
}
580+
581+
public function testGetPageNumberSetSurroundCount()
582+
{
583+
$uri = $this->uri;
584+
$details = [
585+
'uri' => $uri,
586+
'pageCount' => 10,
587+
'currentPage' => 5,
588+
'total' => 100,
589+
'segment' => 2,
590+
];
591+
$pager = new PagerRenderer($details);
592+
$pager->setSurroundCount(2);
593+
594+
$this->assertEquals(3, $pager->getFirstPageNumber());
595+
$this->assertEquals(5, $pager->getCurrentPageNumber());
596+
$this->assertEquals(7, $pager->getLastPageNumber());
597+
}
598+
599+
public function testGetPreviousPageNumber()
600+
{
601+
$uri = $this->uri;
602+
$details = [
603+
'uri' => $uri,
604+
'pageCount' => 10,
605+
'currentPage' => 5,
606+
'total' => 100,
607+
'segment' => 2,
608+
];
609+
$pager = new PagerRenderer($details);
610+
$pager->setSurroundCount(2);
611+
612+
$this->assertEquals(4, $pager->getPreviousPageNumber());
613+
}
614+
615+
public function testGetPreviousPageNumberNull()
616+
{
617+
$uri = $this->uri;
618+
$details = [
619+
'uri' => $uri,
620+
'pageCount' => 10,
621+
'currentPage' => 1,
622+
'total' => 100,
623+
'segment' => 2,
624+
];
625+
$pager = new PagerRenderer($details);
626+
$pager->setSurroundCount(2);
627+
628+
$this->assertNull($pager->getPreviousPageNumber());
629+
}
630+
631+
public function testGetNextPageNumber()
632+
{
633+
$uri = $this->uri;
634+
$details = [
635+
'uri' => $uri,
636+
'pageCount' => 10,
637+
'currentPage' => 5,
638+
'total' => 100,
639+
'segment' => 2,
640+
];
641+
$pager = new PagerRenderer($details);
642+
$pager->setSurroundCount(2);
643+
644+
$this->assertEquals(6, $pager->getNextPageNumber());
645+
}
646+
647+
public function testGetNextPageNumberNull()
648+
{
649+
$uri = $this->uri;
650+
$details = [
651+
'uri' => $uri,
652+
'pageCount' => 10,
653+
'currentPage' => 10,
654+
'total' => 100,
655+
'segment' => 2,
656+
];
657+
$pager = new PagerRenderer($details);
658+
$pager->setSurroundCount(2);
659+
660+
$this->assertNull($pager->getNextPageNumber());
661+
}
563662
}

0 commit comments

Comments
 (0)