diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php b/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php index ab933ad46fbd6269e063c2cbce9031dc90abc89f..4d84610a4663f744c466a21a2fc9dfa9c823d501 100644 --- a/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php +++ b/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php @@ -193,6 +193,7 @@ class QueryResult implements QueryResultInterface public function offsetSet($offset, $value) { $this->initialize(); + $this->numberOfResults = null; $this->queryResult[$offset] = $value; } @@ -205,6 +206,7 @@ class QueryResult implements QueryResultInterface public function offsetUnset($offset) { $this->initialize(); + $this->numberOfResults = null; unset($this->queryResult[$offset]); } diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php index 1432b9614e8ccf94e20dd562435337eb280bf14f..01319cad3c6201f854f489522cc2d9d9a742dcba 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php @@ -159,6 +159,24 @@ class QueryResultTest extends UnitTestCase self::assertEquals(2, $this->queryResult->count()); } + /** + * @test + */ + public function countCallsGetObjectCountByQueryIfOffsetChanges() + { + $this->mockPersistenceManager->expects(self::once())->method('getObjectCountByQuery')->willReturn(2); + $firstCount = $this->queryResult->count(); + $this->queryResult->offsetSet(3, new \stdClass()); + $this->queryResult->offsetSet(4, new \stdClass()); + $secondCount = $this->queryResult->count(); + $this->queryResult->offsetUnset(1); + $thirdCount = $this->queryResult->count(); + + self::assertSame(2, $firstCount); + self::assertSame(4, $secondCount); + self::assertSame(3, $thirdCount); + } + /** * @test */