public function testSortFieldDefinitions()
 {
     $fieldDef1 = new FieldDefinitionData(['fieldDefinition' => $this->getMockForAbstractClass('\\eZ\\Publish\\API\\Repository\\Values\\ContentType\\FieldDefinition', [['id' => 1, 'identifier' => 'snarf', 'position' => 3]])]);
     $fieldDef2 = new FieldDefinitionData(['fieldDefinition' => $this->getMockForAbstractClass('\\eZ\\Publish\\API\\Repository\\Values\\ContentType\\FieldDefinition', [['id' => 2, 'identifier' => 'gnubel', 'position' => 2]])]);
     $fieldDef3 = new FieldDefinitionData(['fieldDefinition' => $this->getMockForAbstractClass('\\eZ\\Publish\\API\\Repository\\Values\\ContentType\\FieldDefinition', [['id' => 3, 'identifier' => 'heffa', 'position' => 2]])]);
     $fieldDef4 = new FieldDefinitionData(['fieldDefinition' => $this->getMockForAbstractClass('\\eZ\\Publish\\API\\Repository\\Values\\ContentType\\FieldDefinition', [['id' => 4, 'identifier' => 'lump', 'position' => 1]])]);
     $fieldDefs = [$fieldDef1, $fieldDef2, $fieldDef3, $fieldDef4];
     $data = new ContentTypeData(['fieldDefinitionsData' => $fieldDefs]);
     self::assertSame($fieldDefs, $data->fieldDefinitionsData);
     $data->sortFieldDefinitions();
     self::assertSame([$fieldDef4, $fieldDef2, $fieldDef3, $fieldDef1], $data->fieldDefinitionsData);
 }
 /**
  * Maps a ValueObject from eZ content repository to a data usable as underlying form data (e.g. create/update struct).
  *
  * @param ValueObject|\eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft
  * @param array $params
  *
  * @return ContentTypeData
  */
 public function mapToFormData(ValueObject $contentTypeDraft, array $params = [])
 {
     $contentTypeData = new ContentTypeData(['contentTypeDraft' => $contentTypeDraft]);
     if (!$contentTypeData->isNew()) {
         $contentTypeData->identifier = $contentTypeDraft->identifier;
     }
     $contentTypeData->remoteId = $contentTypeDraft->remoteId;
     $contentTypeData->urlAliasSchema = $contentTypeDraft->urlAliasSchema;
     $contentTypeData->nameSchema = $contentTypeDraft->nameSchema;
     $contentTypeData->isContainer = $contentTypeDraft->isContainer;
     $contentTypeData->mainLanguageCode = $contentTypeDraft->mainLanguageCode;
     $contentTypeData->defaultSortField = $contentTypeDraft->defaultSortField;
     $contentTypeData->defaultSortOrder = $contentTypeDraft->defaultSortOrder;
     $contentTypeData->defaultAlwaysAvailable = $contentTypeDraft->defaultAlwaysAvailable;
     $contentTypeData->names = $contentTypeDraft->getNames();
     $contentTypeData->descriptions = $contentTypeDraft->getDescriptions();
     foreach ($contentTypeDraft->fieldDefinitions as $fieldDef) {
         $contentTypeData->addFieldDefinitionData(new FieldDefinitionData(['fieldDefinition' => $fieldDef, 'contentTypeData' => $contentTypeData, 'identifier' => $fieldDef->identifier, 'names' => $fieldDef->getNames(), 'descriptions' => $fieldDef->getDescriptions(), 'fieldGroup' => $fieldDef->fieldGroup, 'position' => $fieldDef->position, 'isTranslatable' => $fieldDef->isTranslatable, 'isRequired' => $fieldDef->isRequired, 'isInfoCollector' => $fieldDef->isInfoCollector, 'validatorConfiguration' => $fieldDef->getValidatorConfiguration(), 'fieldSettings' => $fieldDef->getFieldSettings(), 'defaultValue' => $fieldDef->defaultValue, 'isSearchable' => $fieldDef->isSearchable]));
     }
     $contentTypeData->sortFieldDefinitions();
     return $contentTypeData;
 }