function EntityFieldManagerTest::testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php \Drupal\Tests\Core\Entity\EntityFieldManagerTest::testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode()
  2. 8.9.x core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php \Drupal\Tests\Core\Entity\EntityFieldManagerTest::testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode()
  3. 11.x core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php \Drupal\Tests\Core\Entity\EntityFieldManagerTest::testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode()

Tests the getBaseFieldDefinitions() method with a translatable entity type.

@covers ::getBaseFieldDefinitions @covers ::buildBaseFieldDefinitions

@dataProvider providerTestGetBaseFieldDefinitionsTranslatableEntityTypeLangcode

File

core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php, line 379

Class

EntityFieldManagerTest
@coversDefaultClass <a href="/api/drupal/core%21lib%21Drupal%21Core%21Entity%21EntityFieldManager.php/class/EntityFieldManager/10" title="Manages the discovery of entity fields." class="local">\Drupal\Core\Entity\EntityFieldManager</a> @group Entity

Namespace

Drupal\Tests\Core\Entity

Code

public function testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode($provide_key, $provide_field, $translatable) {
    $keys = $provide_key ? [
        'langcode' => 'langcode',
    ] : [];
    $this->setUpEntityWithFieldDefinition(FALSE, 'id', $keys);
    if ($provide_field) {
        $field_definition = $this->prophesize()
            ->willImplement(FieldDefinitionInterface::class)
            ->willImplement(FieldStorageDefinitionInterface::class);
        $field_definition->isTranslatable()
            ->willReturn($translatable);
        if (!$translatable) {
            $field_definition->setTranslatable(!$translatable)
                ->shouldBeCalled();
        }
        $entity_class = EntityTypeManagerTestEntity::class;
        $entity_class::$baseFieldDefinitions += [
            'langcode' => $field_definition->reveal(),
        ];
    }
    $this->entityType
        ->isTranslatable()
        ->willReturn(TRUE);
    $this->entityType
        ->getLabel()
        ->willReturn('Test');
    $this->expectException(\LogicException::class);
    $this->expectExceptionMessage('The Test entity type cannot be translatable as it does not define a translatable "langcode" field.');
    $this->entityFieldManager
        ->getBaseFieldDefinitions('test_entity_type');
}

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