/** * @param object $entity * @param array $searchContext * @return null|object */ protected function findExistingEntity($entity, array $searchContext = []) { $entityName = ClassUtils::getClass($entity); $identifier = $this->databaseHelper->getIdentifier($entity); $existingEntity = null; // find by identifier if ($identifier) { $existingEntity = $this->databaseHelper->find($entityName, $identifier); } // find by identity fields if (!$existingEntity && (!$searchContext || $this->databaseHelper->getIdentifier(current($searchContext)))) { $existingEntity = $this->findExistingEntityByIdentityFields($entity, $searchContext); } if ($existingEntity && !$identifier) { $identifier = $this->databaseHelper->getIdentifier($existingEntity); $identifierName = $this->databaseHelper->getIdentifierFieldName($entity); $this->fieldHelper->setObjectValue($entity, $identifierName, $identifier); } return $existingEntity; }
public function testGetIdentifierFieldName() { $fieldName = 'id'; $this->doctrineHelper->expects($this->once())->method('getSingleEntityIdentifierFieldName')->with(self::TEST_CLASS)->will($this->returnValue($fieldName)); $this->assertEquals($fieldName, $this->helper->getIdentifierFieldName(self::TEST_CLASS)); }