‪TYPO3CMS  ‪main
SlidingWindowPaginationTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
24 
25 final class ‪SlidingWindowPaginationTest extends UnitTestCase
26 {
27  protected ‪$paginator = [];
28 
29  #[Test]
31  {
32  $pagination = new ‪SlidingWindowPagination($this->paginator, 5);
33 
34  self::assertSame(1, $pagination->getStartRecordNumber());
35  self::assertSame(10, $pagination->getEndRecordNumber());
36  self::assertSame(1, $pagination->getFirstPageNumber());
37  self::assertSame(2, $pagination->getLastPageNumber());
38  self::assertNull($pagination->getPreviousPageNumber());
39  self::assertSame(2, $pagination->getNextPageNumber());
40  self::assertSame([1, 2], $pagination->getAllPageNumbers());
41  self::assertSame(1, $pagination->getDisplayRangeStart());
42  self::assertSame(2, $pagination->getDisplayRangeEnd());
43  self::assertFalse($pagination->getHasLessPages());
44  self::assertFalse($pagination->getHasMorePages());
45  self::assertSame(5, $pagination->getMaximumNumberOfLinks());
46  }
47 
48  #[Test]
50  {
51  ‪$paginator = $this->paginator->withCurrentPageNumber(2);
52  $pagination = new ‪SlidingWindowPagination(‪$paginator, 5);
53 
54  self::assertSame(11, $pagination->getStartRecordNumber());
55  self::assertSame(14, $pagination->getEndRecordNumber());
56  self::assertSame(1, $pagination->getFirstPageNumber());
57  self::assertSame(2, $pagination->getLastPageNumber());
58  self::assertSame(1, $pagination->getPreviousPageNumber());
59  self::assertNull($pagination->getNextPageNumber());
60  self::assertSame([1, 2], $pagination->getAllPageNumbers());
61  self::assertSame(1, $pagination->getDisplayRangeStart());
62  self::assertSame(2, $pagination->getDisplayRangeEnd());
63  self::assertFalse($pagination->getHasLessPages());
64  self::assertFalse($pagination->getHasMorePages());
65  self::assertSame(5, $pagination->getMaximumNumberOfLinks());
66  }
67 
68  #[Test]
70  {
71  ‪$paginator = $this->paginator
72  ->withCurrentPageNumber(2)
73  ->withItemsPerPage(3);
74  $pagination = new ‪SlidingWindowPagination(‪$paginator, 5);
75 
76  self::assertSame(4, $pagination->getStartRecordNumber());
77  self::assertSame(6, $pagination->getEndRecordNumber());
78  self::assertSame(1, $pagination->getFirstPageNumber());
79  self::assertSame(5, $pagination->getLastPageNumber());
80  self::assertSame(1, $pagination->getPreviousPageNumber());
81  self::assertSame(3, $pagination->getNextPageNumber());
82  self::assertSame([1, 2, 3, 4, 5], $pagination->getAllPageNumbers());
83  self::assertSame(1, $pagination->getDisplayRangeStart());
84  self::assertSame(5, $pagination->getDisplayRangeEnd());
85  self::assertFalse($pagination->getHasLessPages());
86  self::assertFalse($pagination->getHasMorePages());
87  self::assertSame(5, $pagination->getMaximumNumberOfLinks());
88  }
89 
90  #[Test]
92  {
93  ‪$paginator = $this->paginator->withItemsPerPage(50);
94  $pagination = new ‪SlidingWindowPagination(‪$paginator, 5);
95 
96  self::assertSame(1, $pagination->getStartRecordNumber());
97  self::assertSame(14, $pagination->getEndRecordNumber());
98  self::assertSame(1, $pagination->getFirstPageNumber());
99  self::assertSame(1, $pagination->getLastPageNumber());
100  self::assertNull($pagination->getPreviousPageNumber());
101  self::assertNull($pagination->getNextPageNumber());
102  self::assertSame([1], $pagination->getAllPageNumbers());
103  self::assertSame(1, $pagination->getDisplayRangeStart());
104  self::assertSame(1, $pagination->getDisplayRangeEnd());
105  self::assertFalse($pagination->getHasLessPages());
106  self::assertFalse($pagination->getHasMorePages());
107  self::assertSame(5, $pagination->getMaximumNumberOfLinks());
108  }
109 
110  #[Test]
112  {
113  ‪$paginator = $this->paginator
114  ->withItemsPerPage(5)
115  ->withCurrentPageNumber(100);
116  $pagination = new ‪SlidingWindowPagination(‪$paginator, 5);
117 
118  self::assertSame(11, $pagination->getStartRecordNumber());
119  self::assertSame(14, $pagination->getEndRecordNumber());
120  self::assertSame(3, ‪$paginator->getCurrentPageNumber());
121  self::assertSame(1, $pagination->getFirstPageNumber());
122  self::assertSame(2, $pagination->getPreviousPageNumber());
123  self::assertNull($pagination->getNextPageNumber());
124  self::assertSame(3, $pagination->getLastPageNumber());
125  self::assertSame([1, 2, 3], $pagination->getAllPageNumbers());
126  self::assertSame(1, $pagination->getDisplayRangeStart());
127  self::assertSame(3, $pagination->getDisplayRangeEnd());
128  self::assertFalse($pagination->getHasLessPages());
129  self::assertFalse($pagination->getHasMorePages());
130  self::assertSame(5, $pagination->getMaximumNumberOfLinks());
131  }
132 
133  protected function ‪setUp(): void
134  {
135  parent::setUp();
136 
137  $this->paginator = new ‪ArrayPaginator(range(1, 14));
138  }
139 }
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\checkPaginatorWithOutOfBoundsCurrentPage
‪checkPaginatorWithOutOfBoundsCurrentPage()
Definition: SlidingWindowPaginationTest.php:111
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\setUp
‪setUp()
Definition: SlidingWindowPaginationTest.php:133
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumberAndItemsPerPage
‪checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumberAndItemsPerPage()
Definition: SlidingWindowPaginationTest.php:69
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\checkPaginationWithAPaginatorThatOnlyHasOnePage
‪checkPaginationWithAPaginatorThatOnlyHasOnePage()
Definition: SlidingWindowPaginationTest.php:91
‪TYPO3\CMS\Core\Tests\Unit\Pagination
Definition: ArrayPaginatorTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest
Definition: SlidingWindowPaginationTest.php:26
‪TYPO3\CMS\Core\Pagination\ArrayPaginator
Definition: ArrayPaginator.php:21
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\checkSlidingWindowPaginationWithAPaginatorWithDefaultSettings
‪checkSlidingWindowPaginationWithAPaginatorWithDefaultSettings()
Definition: SlidingWindowPaginationTest.php:30
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumber
‪checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumber()
Definition: SlidingWindowPaginationTest.php:49
‪TYPO3\CMS\Core\Pagination\SlidingWindowPagination
Definition: SlidingWindowPagination.php:21
‪TYPO3\CMS\Core\Tests\Unit\Pagination\SlidingWindowPaginationTest\$paginator
‪$paginator
Definition: SlidingWindowPaginationTest.php:27