/** * This tests calls two indexed Relations and ensure that indexes are restored after fetching from persistence * * @test */ 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')); }