function EntityResolverTest::testUuidEntityResolver

Same name in other branches
  1. 8.9.x core/modules/serialization/tests/src/Kernel/EntityResolverTest.php \Drupal\Tests\serialization\Kernel\EntityResolverTest::testUuidEntityResolver()

Tests that fields referencing UUIDs can be denormalized.

File

core/modules/hal/tests/src/Kernel/EntityResolverTest.php, line 60

Class

EntityResolverTest
Tests that entities references can be resolved.

Namespace

Drupal\Tests\hal\Kernel

Code

public function testUuidEntityResolver() {
    // Create an entity to get the UUID from.
    $entity = EntityTestMulRev::create([
        'type' => 'entity_test_mulrev',
    ]);
    $entity->set('name', 'foobar');
    $entity->set('field_test_entity_reference', [
        [
            'target_id' => 1,
        ],
    ]);
    $entity->save();
    $field_uri = Url::fromUri('base:rest/relation/entity_test_mulrev/entity_test_mulrev/field_test_entity_reference', [
        'absolute' => TRUE,
    ])->toString();
    $data = [
        '_links' => [
            'type' => [
                'href' => Url::fromUri('base:rest/type/entity_test_mulrev/entity_test_mulrev', [
                    'absolute' => TRUE,
                ])->toString(),
            ],
            $field_uri => [
                [
                    'href' => $entity->toUrl()
                        ->toString(),
                ],
            ],
        ],
        '_embedded' => [
            $field_uri => [
                [
                    '_links' => [
                        'self' => $entity->toUrl()
                            ->toString(),
                    ],
                    'uuid' => [
                        [
                            'value' => $entity->uuid(),
                        ],
                    ],
                ],
            ],
        ],
    ];
    $denormalized = $this->container
        ->get('serializer')
        ->denormalize($data, 'Drupal\\entity_test\\Entity\\EntityTestMulRev', $this->format);
    $field_value = $denormalized->get('field_test_entity_reference')
        ->getValue();
    $this->assertEquals(1, $field_value[0]['target_id'], 'Entity reference resolved using UUID.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.