/**
  * @param array   $mappedClass
  * @param Mapping $mapping
  * @param string  $className
  *
  * @throws MappingException
  */
 protected static function setAliasedProperties(array &$mappedClass, Mapping $mapping, string $className)
 {
     if (false === empty($mappedClass[static::ALIASED_PROPERTIES_KEY])) {
         $mapping->setPropertyNameAliases($mappedClass[static::ALIASED_PROPERTIES_KEY]);
         foreach (\array_keys($mapping->getAliasedProperties()) as $propertyName) {
             if (false === \in_array($propertyName, static::getClassProperties($className), true)) {
                 throw new MappingException(\sprintf('Could not alias property %s in class %s because it does not exist.', $propertyName, $className));
             }
         }
     }
 }
 /**
  * @param \NilPortugues\Api\Mapping\Mapping $mapping
  *
  * @link http://jsonapi.org/format/#document-member-names-allowed-characters
  */
 protected function buildValidPropertyAlias($mapping)
 {
     $aliases = $mapping->getAliasedProperties();
     foreach ($aliases as &$alias) {
         $alias = DataAttributesHelper::transformToValidMemberName($alias);
     }
     $mapping->setPropertyNameAliases($aliases);
 }
 /**
  * @param Mapping $mapping
  *
  * @return array
  */
 protected function getPropertiesFromMapping(Mapping $mapping)
 {
     $properties = array_merge(array_combine($mapping->getProperties(), $mapping->getProperties()), $mapping->getAliasedProperties());
     return $properties;
 }
 public function testAliasedPropertiesRenamedIdProperties()
 {
     $this->mapping->setPropertyNameAliases(['postId' => 'newId']);
     $this->assertEquals(['postId' => 'newId'], $this->mapping->getAliasedProperties());
     $this->assertEquals(['newId'], $this->mapping->getIdProperties());
 }