function ContentEntityBaseUnitTest::testTypedData

Same name and namespace in other branches
  1. 10 core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php \Drupal\Tests\Core\Entity\ContentEntityBaseUnitTest::testTypedData()
  2. 11.x core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php \Drupal\Tests\Core\Entity\ContentEntityBaseUnitTest::testTypedData()

Tests each condition in EntityBase::getTypedData().

@covers ::getTypedData @dataProvider providerTestTypedData

File

core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php, line 382

Class

ContentEntityBaseUnitTest
@coversDefaultClass <a href="/api/drupal/core%21lib%21Drupal%21Core%21Entity%21ContentEntityBase.php/class/ContentEntityBase/9" title="Implements Entity Field API specific enhancements to the Entity class." class="local">\Drupal\Core\Entity\ContentEntityBase</a> @group Entity @group Access

Namespace

Drupal\Tests\Core\Entity

Code

public function testTypedData(bool $bundle_typed_data_definition, bool $entity_type_typed_data_definition) : void {
    $expected = EntityAdapter::class;
    $typedDataManager = $this->createMock(TypedDataManagerInterface::class);
    $typedDataManager->expects($this->once())
        ->method('getDefinition')
        ->willReturnMap([
        [
            "entity:{$this->entityTypeId}:{$this->bundle}",
            FALSE,
            $bundle_typed_data_definition ? [
                'class' => $expected,
            ] : NULL,
        ],
        [
            "entity:{$this->entityTypeId}",
            FALSE,
            $entity_type_typed_data_definition ? [
                'class' => $expected,
            ] : NULL,
        ],
        [
            'entity',
            TRUE,
            [
                'class' => $expected,
            ],
        ],
    ]);
    // Temporarily replace the appropriate services in the container.
    $container = \Drupal::getContainer();
    $container->set('typed_data_manager', $typedDataManager);
    \Drupal::setContainer($container);
    // Create a mock entity used to retrieve typed data.
    $entity = $this->getMockForAbstractClass(ContentEntityBase::class, [
        [],
        $this->entityTypeId,
        $this->bundle,
    ], '', TRUE, TRUE, TRUE, [
        'isNew',
    ]);
    // Assert that the returned data type is an instance of EntityAdapter.
    $this->assertInstanceOf($expected, $entity->getTypedData());
}

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