You are here

public function EntityTypedDataDefinitionTest::testFields in Zircon Profile 8

Same name and namespace in other branches
  1. 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\Entity

Code

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));
}