Issue #2327935 by Arla, Anushka-mp: Allow empty entity IDs in EntityResolvers

8.0.x
Alex Pott 2015-01-08 19:44:25 +00:00
parent c791cc2d5a
commit adb97dad3a
3 changed files with 21 additions and 2 deletions

View File

@ -103,7 +103,8 @@ class EntityReferenceItemNormalizer extends FieldItemNormalizer implements UuidR
$field_item = $context['target_instance']; $field_item = $context['target_instance'];
$field_definition = $field_item->getFieldDefinition(); $field_definition = $field_item->getFieldDefinition();
$target_type = $field_definition->getSetting('target_type'); $target_type = $field_definition->getSetting('target_type');
if ($id = $this->entityResolver->resolve($this, $data, $target_type)) { $id = $this->entityResolver->resolve($this, $data, $target_type);
if (isset($id)) {
return array('target_id' => $id); return array('target_id' => $id);
} }
return NULL; return NULL;

View File

@ -43,7 +43,8 @@ class ChainEntityResolver implements ChainEntityResolverInterface {
*/ */
public function resolve(NormalizerInterface $normalizer, $data, $entity_type) { public function resolve(NormalizerInterface $normalizer, $data, $entity_type) {
foreach ($this->resolvers as $resolver) { foreach ($this->resolvers as $resolver) {
if ($resolved = $resolver->resolve($normalizer, $data, $entity_type)) { $resolved = $resolver->resolve($normalizer, $data, $entity_type);
if (isset($resolved)) {
return $resolved; return $resolved;
} }
} }

View File

@ -110,6 +110,23 @@ class ChainEntityResolverTest extends UnitTestCase {
$this->assertSame(10, $resolver->resolve($this->testNormalizer, $this->testData, $this->testEntityType)); $this->assertSame(10, $resolver->resolve($this->testNormalizer, $this->testData, $this->testEntityType));
} }
/**
* Test the resolve method where one resolver returns 0.
*
* @covers ::__construct
* @covers ::resolve
*/
public function testResolverWithResolvedToZero() {
$resolvers = array(
$this->createEntityResolverMock(0),
$this->createEntityResolverMock(NULL, FALSE),
);
$resolver = new ChainEntityResolver($resolvers);
$this->assertSame(0, $resolver->resolve($this->testNormalizer, $this->testData, $this->testEntityType));
}
/** /**
* Creates a mock entity resolver. * Creates a mock entity resolver.
* *