Example #1
0
 public function testGetIdentityValues()
 {
     $this->config['stdClass'] = array('excludedField' => array('excluded' => true), 'identityField' => array('identity' => true), 'regularField' => array());
     $fields = array(array('name' => 'excludedField'), array('name' => 'identityField'), array('name' => 'regularField'));
     $entity = new \stdClass();
     $entity->excludedField = 'excludedValue';
     $entity->identityField = 'identityValue';
     $entity->regularField = 'regularValue';
     $this->fieldProvider->expects($this->once())->method('getFields')->with(get_class($entity), true)->will($this->returnValue($fields));
     $this->assertEquals(array('identityField' => 'identityValue'), $this->helper->getIdentityValues($entity, $fields));
 }
Example #2
0
 public function testGetIdentityValues()
 {
     $this->config['stdClass'] = ['excludedField' => ['excluded' => true], 'identityField' => ['identity' => true], 'regularField' => []];
     $fields = [['name' => 'excludedField'], ['name' => 'identityField'], ['name' => 'regularField']];
     $entity = new \stdClass();
     $entity->excludedField = 'excludedValue';
     $entity->identityField = 'identityValue';
     $entity->regularField = 'regularValue';
     $this->fieldProvider->expects($this->once())->method('getFields')->with(get_class($entity), true)->will($this->returnValue($fields));
     $value = $this->helper->getIdentityValues($entity);
     $this->assertEquals(['identityField' => 'identityValue'], $value);
     $this->assertSame($value, $this->helper->getIdentityValues($entity));
 }
 /**
  * @param object $entity
  * @param array $searchContext
  *
  * @return object|null
  */
 protected function findExistingEntityByIdentityFields($entity, array $searchContext = [])
 {
     $entityName = ClassUtils::getClass($entity);
     $identityValues = $searchContext;
     $identityValues += $this->fieldHelper->getIdentityValues($entity);
     foreach ($identityValues as $fieldName => $value) {
         if ($value !== null || $this->fieldHelper->isRequiredIdentityField($entityName, $fieldName)) {
             continue;
         }
         unset($identityValues[$fieldName]);
     }
     return $this->findEntityByIdentityValues($entityName, $identityValues);
 }
 /**
  * @param object $entity
  * @param array $searchContext
  * @return null|object
  */
 protected function findExistingEntity($entity, array $searchContext = array())
 {
     $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)))) {
         $identityValues = $searchContext;
         $identityValues += $this->fieldHelper->getIdentityValues($entity);
         $existingEntity = $this->findEntityByIdentityValues($entityName, $identityValues);
     }
     return $existingEntity;
 }