function EntityTypedDataDefinitionTest::testFields
Same name in other branches
- 9 core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php \Drupal\KernelTests\Core\Entity\EntityTypedDataDefinitionTest::testFields()
- 8.9.x core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php \Drupal\KernelTests\Core\Entity\EntityTypedDataDefinitionTest::testFields()
- 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 54
Class
- EntityTypedDataDefinitionTest
- Tests deriving metadata of entity and field data types.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testFields() : void {
$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.