Verified Commit 7d320cb4 authored by Dave Long's avatar Dave Long
Browse files

Issue #2938920 by quietone, pooja_sharma, gabesullice, berdir: Convert...

Issue #2938920 by quietone, pooja_sharma, gabesullice, berdir: Convert EntityTypeDataTest to use EntityTestWithBundle

(cherry picked from commit 1dde6f5e)
parent 8d9b6739
Loading
Loading
Loading
Loading
Loading
+16 −13
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@
use Drupal\Core\TypedData\DataReferenceDefinition;
use Drupal\Core\TypedData\DataReferenceDefinitionInterface;
use Drupal\Core\TypedData\ListDataDefinitionInterface;
use Drupal\entity_test\Entity\EntityTestBundle;
use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Entity\NodeType;

/**
 * Tests deriving metadata of entity and field data types.
@@ -37,13 +37,14 @@ class EntityTypedDataDefinitionTest extends KernelTestBase {
   *
   * @var array
   */
  protected static $modules = ['system', 'filter', 'text', 'node', 'user'];
  protected static $modules = ['system', 'filter', 'text', 'entity_test', 'user'];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->installEntitySchema('entity_test');

    $this->typedDataManager = $this->container->get('typed_data_manager');
  }
@@ -91,30 +92,32 @@ public function testFields(): void {
   * Tests deriving metadata about entities.
   */
  public function testEntities(): void {
    NodeType::create([
      'type' => 'article',
      'name' => 'Article',
    $this->installEntitySchema('entity_test_with_bundle');
    EntityTestBundle::create([
      'id' => 'article',
      'label' => 'Article',
    ])->save();

    $entity_definition = EntityDataDefinition::create('node');
    $bundle_definition = EntityDataDefinition::create('node', 'article');
    $entity_definition = EntityDataDefinition::create('entity_test_with_bundle');
    $bundle_definition = EntityDataDefinition::create('entity_test_with_bundle', 'article');

    // Entities are complex data.
    $this->assertNotInstanceOf(ListDataDefinitionInterface::class, $entity_definition);
    $this->assertInstanceOf(ComplexDataDefinitionInterface::class, $entity_definition);

    // Entity definitions should inherit their labels from the entity type.
    $this->assertEquals('Content', $entity_definition->getLabel());
    $this->assertEquals('Test entity with bundle', $entity_definition->getLabel());
    $this->assertEquals('Article', $bundle_definition->getLabel());

    $field_definitions = $entity_definition->getPropertyDefinitions();
    // Comparison should ignore the internal static cache, so compare the
    // serialized objects instead.
    $this->assertEquals(serialize(\Drupal::service('entity_field.manager')->getBaseFieldDefinitions('node')), serialize($field_definitions));
    $this->assertEquals('field_item:string', $entity_definition->getPropertyDefinition('title')->getItemDefinition()->getDataType());
    $this->assertEquals(serialize(\Drupal::service('entity_field.manager')->getBaseFieldDefinitions('entity_test_with_bundle')), serialize($field_definitions));
    $this->assertEquals('field_item:string', $entity_definition->getPropertyDefinition('name')->getItemDefinition()->getDataType());
    $this->assertNull($entity_definition->getMainPropertyName());
    $this->assertNull($entity_definition->getPropertyDefinition('invalid'));

    $entity_definition2 = $this->typedDataManager->createDataDefinition('entity:node');
    $entity_definition2 = $this->typedDataManager->createDataDefinition('entity:entity_test_with_bundle');
    $this->assertNotInstanceOf(ListDataDefinitionInterface::class, $entity_definition2);
    $this->assertInstanceOf(ComplexDataDefinitionInterface::class, $entity_definition2);
    $this->assertEquals(serialize($entity_definition), serialize($entity_definition2));
@@ -122,10 +125,10 @@ public function testEntities(): void {
    // Test that the definition factory creates the right definitions for all
    // entity data types variants.
    $this->assertEquals(serialize(EntityDataDefinition::create()), serialize($this->typedDataManager->createDataDefinition('entity')));
    $this->assertEquals(serialize(EntityDataDefinition::create('node')), serialize($this->typedDataManager->createDataDefinition('entity:node')));
    $this->assertEquals(serialize(EntityDataDefinition::create('entity_test_with_bundle')), serialize($this->typedDataManager->createDataDefinition('entity:entity_test_with_bundle')));

    // Config entities don't support typed data.
    $entity_definition = EntityDataDefinition::create('node_type');
    $entity_definition = EntityDataDefinition::create('entity_test_bundle');
    $this->assertEquals([], $entity_definition->getPropertyDefinitions());
  }