‪TYPO3CMS  11.5
QueryResultTest.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 
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
29 class ‪QueryResultTest extends UnitTestCase
30 {
34  protected ‪$queryResult;
35 
39  protected ‪$mockQuery;
40 
45 
49  protected ‪$mockDataMapper;
50 
51  protected array ‪$sampleResult = [];
52 
56  protected function ‪setUp(): void
57  {
58  parent::setUp();
59  $this->mockPersistenceManager = $this->createMock(PersistenceManagerInterface::class);
60  $this->mockPersistenceManager->method('getObjectDataByQuery')->willReturn(['one', 'two']);
61  $this->mockPersistenceManager->method('getObjectCountByQuery')->willReturn(2);
62  $this->mockDataMapper = $this->createMock(DataMapper::class);
63  $this->mockQuery = $this->createMock(QueryInterface::class);
64  $this->queryResult = $this->getAccessibleMock(QueryResult::class, ['dummy'], [], '', false);
65  $this->queryResult->_set('persistenceManager', $this->mockPersistenceManager);
66  $this->queryResult->_set('dataMapper', $this->mockDataMapper);
67  $this->sampleResult = [['foo' => 'Foo1', 'bar' => 'Bar1'], ['foo' => 'Foo2', 'bar' => 'Bar2']];
68  $this->mockDataMapper->method('map')->willReturn($this->sampleResult);
69  }
70 
74  public function ‪getQueryReturnsQueryObject(): void
75  {
76  $this->queryResult->setQuery($this->mockQuery);
77  self::assertInstanceOf(QueryInterface::class, $this->queryResult->getQuery());
78  }
79 
83  public function ‪getQueryReturnsAClone(): void
84  {
85  $this->queryResult->setQuery($this->mockQuery);
86  self::assertNotSame($this->mockQuery, $this->queryResult->getQuery());
87  }
88 
92  public function ‪offsetExistsWorksAsExpected(): void
93  {
94  $this->queryResult->setQuery($this->mockQuery);
95  self::assertTrue($this->queryResult->offsetExists(0));
96  self::assertFalse($this->queryResult->offsetExists(2));
97  self::assertFalse($this->queryResult->offsetExists('foo'));
98  }
99 
103  public function ‪offsetGetWorksAsExpected(): void
104  {
105  $this->queryResult->setQuery($this->mockQuery);
106  self::assertEquals(['foo' => 'Foo1', 'bar' => 'Bar1'], $this->queryResult->offsetGet(0));
107  self::assertNull($this->queryResult->offsetGet(2));
108  self::assertNull($this->queryResult->offsetGet('foo'));
109  }
110 
114  public function ‪offsetSetWorksAsExpected(): void
115  {
116  $this->queryResult->setQuery($this->mockQuery);
117  $this->queryResult->offsetSet(0, ['foo' => 'FooOverridden', 'bar' => 'BarOverridden']);
118  self::assertEquals(['foo' => 'FooOverridden', 'bar' => 'BarOverridden'], $this->queryResult->offsetGet(0));
119  }
120 
124  public function ‪offsetUnsetWorksAsExpected(): void
125  {
126  $this->queryResult->setQuery($this->mockQuery);
127  $this->queryResult->offsetUnset(0);
128  self::assertFalse($this->queryResult->offsetExists(0));
129  }
130 
134  public function ‪countDoesNotInitializeProxy(): void
135  {
136  ‪$queryResult = $this->getAccessibleMock(QueryResult::class, ['initialize'], [], '', false);
137  ‪$queryResult->_set('persistenceManager', $this->mockPersistenceManager);
138  ‪$queryResult->_set('dataMapper', $this->mockDataMapper);
139  ‪$queryResult->‪setQuery($this->mockQuery);
140  ‪$queryResult->expects(self::never())->method('initialize');
142  }
143 
148  {
149  ‪$queryResult = $this->getAccessibleMock(QueryResult::class, ['initialize'], [], '', false);
150  ‪$queryResult->_set('persistenceManager', $this->mockPersistenceManager);
151  ‪$queryResult->_set('dataMapper', $this->mockDataMapper);
152  ‪$queryResult->‪setQuery($this->mockQuery);
153  self::assertEquals(2, ‪$queryResult->‪count());
154  }
155 
160  {
161  $this->queryResult->setQuery($this->mockQuery);
162  $this->mockPersistenceManager->expects(self::never())->method('getObjectCountByQuery');
163  $this->queryResult->toArray();
164  self::assertEquals(2, $this->queryResult->count());
165  }
166 
171  {
172  $this->queryResult->setQuery($this->mockQuery);
173  $this->mockPersistenceManager->expects(self::once())->method('getObjectCountByQuery')->willReturn(2);
174  $this->queryResult->count();
175  self::assertEquals(2, $this->queryResult->count());
176  }
177 
182  {
183  $this->queryResult->setQuery($this->mockQuery);
184  $this->mockPersistenceManager->expects(self::once())->method('getObjectCountByQuery')->willReturn(2);
185  $firstCount = $this->queryResult->count();
186  $this->queryResult->offsetSet(3, new \stdClass());
187  $this->queryResult->offsetSet(4, new \stdClass());
188  $secondCount = $this->queryResult->count();
189  $this->queryResult->offsetUnset(1);
190  $thirdCount = $this->queryResult->count();
191 
192  self::assertSame(2, $firstCount);
193  self::assertSame(4, $secondCount);
194  self::assertSame(3, $thirdCount);
195  }
196 
200  public function ‪iteratorMethodsAreCorrectlyImplemented(): void
201  {
202  $this->queryResult->setQuery($this->mockQuery);
203  $array1 = ['foo' => 'Foo1', 'bar' => 'Bar1'];
204  $array2 = ['foo' => 'Foo2', 'bar' => 'Bar2'];
205  self::assertEquals($array1, $this->queryResult->current());
206  self::assertTrue($this->queryResult->valid());
207  $this->queryResult->next();
208  self::assertEquals($array2, $this->queryResult->current());
209  self::assertTrue($this->queryResult->valid());
210  self::assertEquals(1, $this->queryResult->key());
211  $this->queryResult->next();
212  self::assertFalse($this->queryResult->current());
213  self::assertFalse($this->queryResult->valid());
214  self::assertNull($this->queryResult->key());
215  $this->queryResult->rewind();
216  self::assertEquals(0, $this->queryResult->key());
217  self::assertEquals($array1, $this->queryResult->current());
218  }
219 
223  public function ‪initializeExecutesQueryWithArrayFetchMode(): void
224  {
225  ‪$queryResult = $this->getAccessibleMock(QueryResult::class, ['dummy'], [], '', false);
226  ‪$queryResult->_set('persistenceManager', $this->mockPersistenceManager);
227  ‪$queryResult->_set('dataMapper', $this->mockDataMapper);
228  ‪$queryResult->‪setQuery($this->mockQuery);
229  $this->mockPersistenceManager->expects(self::once())->method('getObjectDataByQuery')->with($this->mockQuery)->willReturn(['FAKERESULT']);
230  ‪$queryResult->_call('initialize');
231  }
232 }
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\getQueryReturnsQueryObject
‪getQueryReturnsQueryObject()
Definition: QueryResultTest.php:70
‪TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
Definition: PersistenceManagerInterface.php:22
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\initializeExecutesQueryWithArrayFetchMode
‪initializeExecutesQueryWithArrayFetchMode()
Definition: QueryResultTest.php:219
‪TYPO3\CMS\Extbase\Persistence\QueryInterface
Definition: QueryInterface.php:29
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper
Definition: DataMapper.php:51
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\$queryResult
‪QueryResult $queryResult
Definition: QueryResultTest.php:33
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\countCallsGetObjectCountByQueryOnPersistenceManager
‪countCallsGetObjectCountByQueryOnPersistenceManager()
Definition: QueryResultTest.php:143
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\offsetGetWorksAsExpected
‪offsetGetWorksAsExpected()
Definition: QueryResultTest.php:99
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\count
‪int count()
Definition: QueryResult.php:109
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\$mockPersistenceManager
‪PersistenceManagerInterface $mockPersistenceManager
Definition: QueryResultTest.php:41
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\offsetUnsetWorksAsExpected
‪offsetUnsetWorksAsExpected()
Definition: QueryResultTest.php:120
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\getQueryReturnsAClone
‪getQueryReturnsAClone()
Definition: QueryResultTest.php:79
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\offsetExistsWorksAsExpected
‪offsetExistsWorksAsExpected()
Definition: QueryResultTest.php:88
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\countCallsGetObjectCountByQueryIfOffsetChanges
‪countCallsGetObjectCountByQueryIfOffsetChanges()
Definition: QueryResultTest.php:177
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\offsetSetWorksAsExpected
‪offsetSetWorksAsExpected()
Definition: QueryResultTest.php:110
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\setQuery
‪setQuery(QueryInterface $query)
Definition: QueryResult.php:54
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic
Definition: BackendTest.php:18
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult
Definition: QueryResult.php:32
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\$mockDataMapper
‪DataMapper $mockDataMapper
Definition: QueryResultTest.php:45
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest
Definition: QueryResultTest.php:30
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\countDoesNotInitializeProxy
‪countDoesNotInitializeProxy()
Definition: QueryResultTest.php:130
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\setUp
‪setUp()
Definition: QueryResultTest.php:52
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\countCountsQueryResultDirectlyIfAlreadyInitialized
‪countCountsQueryResultDirectlyIfAlreadyInitialized()
Definition: QueryResultTest.php:155
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\iteratorMethodsAreCorrectlyImplemented
‪iteratorMethodsAreCorrectlyImplemented()
Definition: QueryResultTest.php:196
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\$mockQuery
‪QueryInterface $mockQuery
Definition: QueryResultTest.php:37
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\countOnlyCallsGetObjectCountByQueryOnPersistenceManagerOnce
‪countOnlyCallsGetObjectCountByQueryOnPersistenceManagerOnce()
Definition: QueryResultTest.php:166
‪TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\QueryResultTest\$sampleResult
‪array $sampleResult
Definition: QueryResultTest.php:47