/** * {@inheritdoc} */ public function normalize($object, $format = null, array $context = array()) { $result = parent::normalize($object, $format, $context); foreach (static::$socialFields as $socialType => $fieldName) { if (!empty($result[$fieldName])) { $result[$fieldName] = $this->socialUrlFormatter->getSocialUrl($socialType, $result[$fieldName]); } } return $result; }
/** * @dataProvider normalizeDataProvider * @param object $object * @param array $context * @param array $fields * @param array $fieldsImportConfig * @param array $result */ public function testNormalize($object, $context, $fields, $fieldsImportConfig, $result) { $format = null; $entityName = get_class($object); $fieldsValueMap = [$entityName => $fields, 'DateTime' => []]; $this->fieldHelper->expects($this->atLeastOnce())->method('getFields')->will($this->returnCallback(function ($className) use($fieldsValueMap) { if (empty($fieldsValueMap[$className])) { return []; } return $fieldsValueMap[$className]; })); $this->fieldHelper->expects($this->any())->method('getObjectValue')->will($this->returnCallback(function ($object, $field) { $propertyAccessor = PropertyAccess::createPropertyAccessor(); return $propertyAccessor->getValue($object, $field); })); $configValueMap = []; $normalizedMap = []; $hasConfigMap = []; foreach ($fields as $field) { $fieldName = $field['name']; if (isset($field['normalizedValue'])) { $fieldValue = $object->{$fieldName}; $fieldContext = $context; if (isset($field['fieldContext'])) { $fieldContext = $field['fieldContext']; } $normalizedMap[] = [$fieldValue, null, $fieldContext, $field['normalizedValue']]; } if (isset($field['related_entity_type'])) { $hasConfigMap[] = [$field['related_entity_type'], true]; } foreach ($fieldsImportConfig[$fieldName] as $configKey => $configValue) { $configValueMap[] = [$entityName, $fieldName, $configKey, null, $configValue]; } } $this->fieldHelper->expects($this->any())->method('getConfigValue')->will($this->returnValueMap($configValueMap)); if ($hasConfigMap) { $this->fieldHelper->expects($this->any())->method('hasConfig')->will($this->returnValue($hasConfigMap)); } $serializer = $this->getMockBuilder('Oro\\Bundle\\ImportExportBundle\\Serializer\\Serializer')->disableOriginalConstructor()->getMock(); if ($normalizedMap) { $serializer->expects($this->atLeastOnce())->method('normalize')->will($this->returnValueMap($normalizedMap)); } $this->normalizer->setSerializer($serializer); $this->assertEquals($result, $this->normalizer->normalize($object, $format, $context)); }