‪TYPO3CMS  ‪main
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 
20 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
26 
27 final class ‪QueryResultPaginatorTest extends FunctionalTestCase
28 {
29  protected array ‪$testExtensionsToLoad = ['typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example'];
30 
34  protected ‪$postRepository;
35 
36  protected function ‪setUp(): void
37  {
38  parent::setUp();
39  $this->importCSVDataSet(__DIR__ . '/Fixtures/QueryResultPaginatorTestImport.csv');
40  $this->postRepository = $this->get(PostRepository::class);
41  $request = (new ‪ServerRequest())->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
42  ‪$GLOBALS['TYPO3_REQUEST'] = $request;
43  }
44 
48  #[Test]
49  public function ‪integration(): void
50  {
51  $queryResult = $this->postRepository->findAll();
52  self::assertCount(14, $queryResult);
53  }
54 
55  #[Test]
56  public function ‪checkPaginatorWithDefaultConfiguration(): void
57  {
58  $paginator = new ‪QueryResultPaginator($this->postRepository->findAll());
59 
60  self::assertSame(2, $paginator->getNumberOfPages());
61  self::assertSame(0, $paginator->getKeyOfFirstPaginatedItem());
62  self::assertSame(9, $paginator->getKeyOfLastPaginatedItem());
63  self::assertCount(10, $paginator->getPaginatedItems());
64  }
65 
66  #[Test]
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 
81  #[Test]
83  {
84  $paginator = new ‪QueryResultPaginator(
85  $this->postRepository->findAll(),
86  3,
87  3
88  );
89 
90  self::assertSame(5, $paginator->getNumberOfPages());
91  self::assertSame(6, $paginator->getKeyOfFirstPaginatedItem());
92  self::assertSame(8, $paginator->getKeyOfLastPaginatedItem());
93  self::assertCount(3, $paginator->getPaginatedItems());
94  }
95 
96  #[Test]
97  public function ‪paginatorProperlyCalculatesLastPage(): void
98  {
99  $paginator = new ‪QueryResultPaginator(
100  $this->postRepository->findAll(),
101  5,
102  3
103  );
104 
105  self::assertSame(5, $paginator->getNumberOfPages());
106  self::assertSame(12, $paginator->getKeyOfFirstPaginatedItem());
107  self::assertSame(13, $paginator->getKeyOfLastPaginatedItem());
108  self::assertCount(2, $paginator->getPaginatedItems());
109  }
110 
111  #[Test]
113  {
114  $this->expectExceptionCode(1573047338);
115 
116  $paginator = new ‪QueryResultPaginator(
117  $this->postRepository->findAll(),
118  1,
119  3
120  );
121  $paginator->withCurrentPageNumber(0);
122  }
123 
124  #[Test]
126  {
127  $paginator = new ‪QueryResultPaginator(
128  $this->postRepository->findAll(),
129  3,
130  10
131  );
132 
133  self::assertEquals(2, $paginator->getCurrentPageNumber());
134  self::assertEquals(2, $paginator->getNumberOfPages());
135  self::assertCount(4, $paginator->getPaginatedItems());
136  }
137 
138  #[Test]
139  public function ‪paginatorProperlyCalculatesOnlyOnePage(): void
140  {
141  $paginator = new ‪QueryResultPaginator(
142  $this->postRepository->findAll(),
143  1,
144  50
145  );
146 
147  self::assertSame(1, $paginator->getNumberOfPages());
148  self::assertSame(0, $paginator->getKeyOfFirstPaginatedItem());
149  self::assertSame(13, $paginator->getKeyOfLastPaginatedItem());
150  self::assertCount(14, $paginator->getPaginatedItems());
151  }
152 }
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\withCurrentPageNumberThrowsInvalidArgumentExceptionIfCurrentPageIsLowerThanOne
‪withCurrentPageNumberThrowsInvalidArgumentExceptionIfCurrentPageIsLowerThanOne()
Definition: QueryResultPaginatorTest.php:111
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\$postRepository
‪PostRepository $postRepository
Definition: QueryResultPaginatorTest.php:33
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorProperlyCalculatesOnlyOnePage
‪paginatorProperlyCalculatesOnlyOnePage()
Definition: QueryResultPaginatorTest.php:138
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorRespectsItemsPerPageConfigurationAndCurrentPage
‪paginatorRespectsItemsPerPageConfigurationAndCurrentPage()
Definition: QueryResultPaginatorTest.php:81
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest
Definition: QueryResultPaginatorTest.php:28
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Extbase\Pagination\QueryResultPaginator
Definition: QueryResultPaginator.php:24
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\checkPaginatorWithDefaultConfiguration
‪checkPaginatorWithDefaultConfiguration()
Definition: QueryResultPaginatorTest.php:55
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\setUp
‪setUp()
Definition: QueryResultPaginatorTest.php:35
‪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:48
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorSetsCurrentPageToLastPageIfCurrentPageExceedsMaximum
‪paginatorSetsCurrentPageToLastPageIfCurrentPageExceedsMaximum()
Definition: QueryResultPaginatorTest.php:124
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3Tests\BlogExample\Domain\Repository\PostRepository
Definition: PostRepository.php:32
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: QueryResultPaginatorTest.php:29
‪TYPO3\CMS\Extbase\Tests\Functional\Pagination\QueryResultPaginatorTest\paginatorProperlyCalculatesLastPage
‪paginatorProperlyCalculatesLastPage()
Definition: QueryResultPaginatorTest.php:96