function EntityTypedDataDefinitionTest::testFields

Same name and namespace in other branches
  1. 8.9.x core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php \Drupal\KernelTests\Core\Entity\EntityTypedDataDefinitionTest::testFields()
  2. 10 core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php \Drupal\KernelTests\Core\Entity\EntityTypedDataDefinitionTest::testFields()
  3. 11.x core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php \Drupal\KernelTests\Core\Entity\EntityTypedDataDefinitionTest::testFields()

Tests deriving metadata about fields.

File

core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php, line 52

Class

EntityTypedDataDefinitionTest
Tests deriving metadata of entity and field data types.

Namespace

Drupal\KernelTests\Core\Entity

Code

public function testFields() {
  $field_definition = BaseFieldDefinition::create('integer');
  // Fields are lists of complex data.
  $this->assertInstanceOf(ListDataDefinitionInterface::class, $field_definition);
  $this->assertNotInstanceOf(ComplexDataDefinitionInterface::class, $field_definition);
  $field_item_definition = $field_definition->getItemDefinition();
  $this->assertNotInstanceOf(ListDataDefinitionInterface::class, $field_item_definition);
  $this->assertInstanceOf(ComplexDataDefinitionInterface::class, $field_item_definition);
  // Derive metadata about field item properties.
  $this->assertEquals([
    'value',
  ], array_keys($field_item_definition->getPropertyDefinitions()));
  $this->assertEquals('integer', $field_item_definition->getPropertyDefinition('value')
    ->getDataType());
  $this->assertEquals('value', $field_item_definition->getMainPropertyName());
  $this->assertNull($field_item_definition->getPropertyDefinition('invalid'));
  // Test accessing field item property metadata via the field definition.
  $this->assertInstanceOf(FieldDefinitionInterface::class, $field_definition);
  $this->assertEquals([
    'value',
  ], array_keys($field_definition->getPropertyDefinitions()));
  $this->assertEquals('integer', $field_definition->getPropertyDefinition('value')
    ->getDataType());
  $this->assertEquals('value', $field_definition->getMainPropertyName());
  $this->assertNull($field_definition->getPropertyDefinition('invalid'));
  // Test using the definition factory for field item lists and field items.
  $field_item = $this->typedDataManager
    ->createDataDefinition('field_item:integer');
  $this->assertNotInstanceOf(ListDataDefinitionInterface::class, $field_item);
  $this->assertInstanceOf(ComplexDataDefinitionInterface::class, $field_item);
  // Comparison should ignore the internal static cache, so compare the
  // serialized objects instead.
  $this->assertEquals(serialize($field_item_definition), serialize($field_item));
  $field_definition2 = $this->typedDataManager
    ->createListDataDefinition('field_item:integer');
  $this->assertInstanceOf(ListDataDefinitionInterface::class, $field_definition2);
  $this->assertNotInstanceOf(ComplexDataDefinitionInterface::class, $field_definition2);
  $this->assertEquals(serialize($field_definition), serialize($field_definition2));
}

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