function EntityDisplayTest::testFieldComponent
Same name in other branches
- 9 core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityDisplayTest::testFieldComponent()
- 8.9.x core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityDisplayTest::testFieldComponent()
- 11.x core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityDisplayTest::testFieldComponent()
Tests the behavior of a field component within an entity display object.
File
-
core/
modules/ field_ui/ tests/ src/ Kernel/ EntityDisplayTest.php, line 228
Class
- EntityDisplayTest
- Tests the entity display configuration entities.
Namespace
Drupal\Tests\field_ui\KernelCode
public function testFieldComponent() : void {
$field_name = 'test_field';
// Create a field storage and a field.
$field_storage = FieldStorageConfig::create([
'field_name' => $field_name,
'entity_type' => 'entity_test',
'type' => 'test_field',
]);
$field_storage->save();
$field = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => 'entity_test',
]);
$field->save();
$display = EntityViewDisplay::create([
'targetEntityType' => 'entity_test',
'bundle' => 'entity_test',
'mode' => 'default',
]);
// Check that providing no options results in default values being used.
$display->setComponent($field_name);
$field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_storage->getType());
$default_formatter = $field_type_info['default_formatter'];
$formatter_settings = \Drupal::service('plugin.manager.field.formatter')->getDefaultSettings($default_formatter);
$expected = [
'weight' => -4,
'label' => 'above',
'type' => $default_formatter,
'settings' => $formatter_settings,
'third_party_settings' => [],
];
$this->assertEquals($expected, $display->getComponent($field_name));
// Check that the getFormatter() method returns the correct formatter plugin.
$formatter = $display->getRenderer($field_name);
$this->assertEquals($default_formatter, $formatter->getPluginId());
$this->assertEquals($formatter_settings, $formatter->getSettings());
// Check that the formatter is statically persisted.
$this->assertSame($formatter, $display->getRenderer($field_name));
// Check that changing the definition creates a new formatter.
$display->setComponent($field_name, [
'type' => 'field_test_multiple',
]);
$renderer = $display->getRenderer($field_name);
$this->assertEquals('field_test_multiple', $renderer->getPluginId());
$this->assertNotSame($formatter, $renderer);
// Check that the display has dependencies on the field and the module that
// provides the formatter.
$dependencies = $display->calculateDependencies()
->getDependencies();
$this->assertEquals([
'config' => [
'field.field.entity_test.entity_test.test_field',
],
'module' => [
'entity_test',
'field_test',
],
], $dependencies);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.