You are here

public function EntityFieldManagerTest::testGetBaseFieldDefinitionsTranslatableEntityTypeLangcode in Drupal 8

Same name and namespace in other branches
  1. 9 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 315
Contains \Drupal\Tests\Core\Entity\EntityFieldManagerTest.

Class

EntityFieldManagerTest
@coversDefaultClass \Drupal\Core\Entity\EntityFieldManager @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');
}