‪TYPO3CMS  11.5
QueryResultPaginatorTest.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 
22 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
23 
24 class ‪QueryResultPaginatorTest extends FunctionalTestCase
25 {
26  protected ‪$testExtensionsToLoad = ['typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example'];
27 
31  protected ‪$postRepository;
32 
33  protected function ‪setUp(): void
34  {
35  parent::setUp();
36  $this->importCSVDataSet(__DIR__ . '/../Persistence/Fixtures/posts.csv');
37  $this->postRepository = $this->get(PostRepository::class);
38  }
39 
45  public function ‪integration(): void
46  {
47  $queryResult = $this->postRepository->findAll();
48  self::assertCount(14, $queryResult);
49  }
50 
54  public function ‪checkPaginatorWithDefaultConfiguration(): void
55  {
56  $paginator = new QueryResultPaginator($this->postRepository->findAll());
57 
58  self::assertSame(2, $paginator->getNumberOfPages());
59  self::assertSame(0, $paginator->getKeyOfFirstPaginatedItem());
60  self::assertSame(9, $paginator->getKeyOfLastPaginatedItem());
61  self::assertCount(10, $paginator->getPaginatedItems());
62  }
63 
67  public function ‪paginatorRespectsItemsPerPageConfiguration(): void
68  {
69  $paginator = new QueryResultPaginator(
70  $this->postRepository->findAll(),
71  1,
72  3
73  );
74 
75  self::assertSame(5, $paginator->getNumberOfPages());
76  self::assertSame(0, $paginator->getKeyOfFirstPaginatedItem());
77  self::assertSame(2, $paginator->getKeyOfLastPaginatedItem());
78  self::assertCount(3, $paginator->getPaginatedItems());
79  }
80 
85  {
86  $paginator = new QueryResultPaginator(
87  $this->postRepository->findAll(),
88  3,
89  3
90  );
91 
92  self::assertSame(5, $paginator->getNumberOfPages());
93  self::assertSame(6, $paginator->getKeyOfFirstPaginatedItem());
94  self::assertSame(8, $paginator->getKeyOfLastPaginatedItem());
95  self::assertCount(3, $paginator->getPaginatedItems());
96  }
97 
101  public function ‪paginatorProperlyCalculatesLastPage(): void
102  {
103  $paginator = new QueryResultPaginator(
104  $this->postRepository->findAll(),
105  5,
106  3
107  );
108 
109  self::assertSame(5, $paginator->getNumberOfPages());
110  self::assertSame(12, $paginator->getKeyOfFirstPaginatedItem());
111  self::assertSame(13, $paginator->getKeyOfLastPaginatedItem());
112  self::assertCount(2, $paginator->getPaginatedItems());
113  }
114 
119  {
120  $this->expectExceptionCode(1573047338);
121 
122  $paginator = new QueryResultPaginator(
123  $this->postRepository->findAll(),
124  1,
125  3
126  );
127  $paginator->withCurrentPageNumber(0);
128  }
129 
134  {
135  $paginator = new QueryResultPaginator(
136  $this->postRepository->findAll(),
137  3,
138  10
139  );
140 
141  self::assertEquals(2, $paginator->getCurrentPageNumber());
142  self::assertEquals(2, $paginator->getNumberOfPages());
143  self::assertCount(4, $paginator->getPaginatedItems());
144  }
145 
149  public function ‪paginatorProperlyCalculatesOnlyOnePage(): void
150  {
151  $paginator = new QueryResultPaginator(
152  $this->postRepository->findAll(),
153  1,
154  50
155  );
156 
157  self::assertSame(1, $paginator->getNumberOfPages());
158  self::assertSame(0, $paginator->getKeyOfFirstPaginatedItem());
159  self::assertSame(13, $paginator->getKeyOfLastPaginatedItem());
160  self::assertCount(14, $paginator->getPaginatedItems());
161  }
162 }
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\withCurrentPageNumberThrowsInvalidArgumentExceptionIfCurrentPageIsLowerThanOne
‪withCurrentPageNumberThrowsInvalidArgumentExceptionIfCurrentPageIsLowerThanOne()
Definition: QueryResultPaginatorTest.php:117
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\$postRepository
‪PostRepository $postRepository
Definition: QueryResultPaginatorTest.php:30
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorProperlyCalculatesOnlyOnePage
‪paginatorProperlyCalculatesOnlyOnePage()
Definition: QueryResultPaginatorTest.php:148
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorRespectsItemsPerPageConfigurationAndCurrentPage
‪paginatorRespectsItemsPerPageConfigurationAndCurrentPage()
Definition: QueryResultPaginatorTest.php:83
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest
Definition: QueryResultPaginatorTest.php:25
‪TYPO3\CMS\Extbase\Pagination\QueryResultPaginator
Definition: QueryResultPaginator.php:24
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\checkPaginatorWithDefaultConfiguration
‪checkPaginatorWithDefaultConfiguration()
Definition: QueryResultPaginatorTest.php:53
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\setUp
‪setUp()
Definition: QueryResultPaginatorTest.php:32
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination
Definition: QueryResultPaginatorTest.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorRespectsItemsPerPageConfiguration
‪paginatorRespectsItemsPerPageConfiguration()
Definition: QueryResultPaginatorTest.php:66
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\integration
‪integration()
Definition: QueryResultPaginatorTest.php:44
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorSetsCurrentPageToLastPageIfCurrentPageExceedsMaximum
‪paginatorSetsCurrentPageToLastPageIfCurrentPageExceedsMaximum()
Definition: QueryResultPaginatorTest.php:132
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\$testExtensionsToLoad
‪$testExtensionsToLoad
Definition: QueryResultPaginatorTest.php:26
‪ExtbaseTeam\BlogExample\Domain\Repository\PostRepository
Definition: PostRepository.php:32
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorProperlyCalculatesLastPage
‪paginatorProperlyCalculatesLastPage()
Definition: QueryResultPaginatorTest.php:100