public function EntityTypedDataDefinitionTest::testFields in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Entity/EntityTypedDataDefinitionTest.php \Drupal\system\Tests\Entity\EntityTypedDataDefinitionTest::testFields()
Tests deriving metadata about fields.
File
- core/
modules/ system/ src/ Tests/ Entity/ EntityTypedDataDefinitionTest.php, line 49 - Contains \Drupal\system\Tests\Entity\EntityTypedDataDefinitionTest.
Class
- EntityTypedDataDefinitionTest
- Tests deriving metadata of entity and field data types.
Namespace
Drupal\system\Tests\EntityCode
public function testFields() {
$field_definition = BaseFieldDefinition::create('integer');
// Fields are lists of complex data.
$this
->assertTrue($field_definition instanceof ListDataDefinitionInterface);
$this
->assertFalse($field_definition instanceof ComplexDataDefinitionInterface);
$field_item_definition = $field_definition
->getItemDefinition();
$this
->assertFalse($field_item_definition instanceof ListDataDefinitionInterface);
$this
->assertTrue($field_item_definition instanceof ComplexDataDefinitionInterface);
// Derive metadata about field item properties.
$this
->assertEqual(array_keys($field_item_definition
->getPropertyDefinitions()), array(
'value',
));
$this
->assertEqual($field_item_definition
->getPropertyDefinition('value')
->getDataType(), 'integer');
$this
->assertEqual($field_item_definition
->getMainPropertyName(), 'value');
$this
->assertNull($field_item_definition
->getPropertyDefinition('invalid'));
// Test accessing field item property metadata via the field definition.
$this
->assertTrue($field_definition instanceof FieldDefinitionInterface);
$this
->assertEqual(array_keys($field_definition
->getPropertyDefinitions()), array(
'value',
));
$this
->assertEqual($field_definition
->getPropertyDefinition('value')
->getDataType(), 'integer');
$this
->assertEqual($field_definition
->getMainPropertyName(), 'value');
$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
->assertFalse($field_item instanceof ListDataDefinitionInterface);
$this
->assertTrue($field_item instanceof ComplexDataDefinitionInterface);
// Comparison should ignore the internal static cache, so compare the
// serialized objects instead.
$this
->assertEqual(serialize($field_item_definition), serialize($field_item));
$field_definition2 = $this->typedDataManager
->createListDataDefinition('field_item:integer');
$this
->assertTrue($field_definition2 instanceof ListDataDefinitionInterface);
$this
->assertFalse($field_definition2 instanceof ComplexDataDefinitionInterface);
$this
->assertEqual(serialize($field_definition), serialize($field_definition2));
}