Neos\Flow\Tests\Functional\Persistence\Doctrine\IndexedCollectionTest::collectionsWithIndexAttributeAreIndexed PHP Метод

collectionsWithIndexAttributeAreIndexed() публичный Метод

This tests calls two indexed Relations and ensure that indexes are restored after fetching from persistence
    public function collectionsWithIndexAttributeAreIndexed()
    {
        $entityWithIndexedRelation = new Fixtures\EntityWithIndexedRelation();
        for ($i = 0; $i < 3; $i++) {
            $annotatedIdentitiesEntity = new Fixtures\AnnotatedIdentitiesEntity();
            $annotatedIdentitiesEntity->setAuthor('Author' . (string) $i);
            $annotatedIdentitiesEntity->setTitle('Author' . (string) $i);
            $entityWithIndexedRelation->getAnnotatedIdentitiesEntities()->add($annotatedIdentitiesEntity);
        }
        $entityWithIndexedRelation->setRelatedIndexEntity('test', new Fixtures\RelatedIndexEntity());
        $this->persistenceManager->add($entityWithIndexedRelation);
        $this->persistenceManager->persistAll();
        $id = $this->persistenceManager->getIdentifierByObject($entityWithIndexedRelation);
        // Reset persistence manager to make sure fresh instances will be created
        $this->persistenceManager->clearState();
        unset($entityWithIndexedRelation);
        $entityWithIndexedRelation = $this->persistenceManager->getObjectByIdentifier($id, Fixtures\EntityWithIndexedRelation::class);
        for ($i = 0; $i < 3; $i++) {
            $this->assertArrayHasKey('Author' . (string) $i, $entityWithIndexedRelation->getAnnotatedIdentitiesEntities());
        }
        $this->assertArrayNotHasKey(0, $entityWithIndexedRelation->getAnnotatedIdentitiesEntities());
        $this->assertArrayHasKey('test', $entityWithIndexedRelation->getRelatedIndexEntities());
        $this->assertArrayNotHasKey(0, $entityWithIndexedRelation->getRelatedIndexEntities());
        $this->assertInstanceOf(Fixtures\RelatedIndexEntity::class, $entityWithIndexedRelation->getRelatedIndexEntities()->get('test'));
    }