function EntityFormDisplayTest::testBaseFieldComponent

Same name and namespace in other branches
  1. 9 core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityFormDisplayTest::testBaseFieldComponent()
  2. 8.9.x core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityFormDisplayTest::testBaseFieldComponent()
  3. 11.x core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php \Drupal\Tests\field_ui\Kernel\EntityFormDisplayTest::testBaseFieldComponent()

Tests the behavior of a field component for a base field.

File

core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php, line 135

Class

EntityFormDisplayTest
Tests the entity display configuration entities.

Namespace

Drupal\Tests\field_ui\Kernel

Code

public function testBaseFieldComponent() : void {
  $display = EntityFormDisplay::create([
    'targetEntityType' => 'entity_test_base_field_display',
    'bundle' => 'entity_test_base_field_display',
    'mode' => 'default',
  ]);
  // Check that default options are correctly filled in.
  $formatter_settings = \Drupal::service('plugin.manager.field.widget')->getDefaultSettings('text_textfield');
  $expected = [
    'test_no_display' => NULL,
    'test_display_configurable' => [
      'type' => 'text_textfield',
      'settings' => $formatter_settings,
      'third_party_settings' => [],
      'weight' => 10,
      'region' => 'content',
    ],
    'test_display_non_configurable' => [
      'type' => 'text_textfield',
      'settings' => $formatter_settings,
      'third_party_settings' => [],
      'weight' => 11,
      'region' => 'content',
    ],
  ];
  foreach ($expected as $field_name => $options) {
    $this->assertEquals($options, $display->getComponent($field_name));
  }
  // Check that saving the display only writes data for fields whose display
  // is configurable.
  $display->save();
  $config = $this->config('core.entity_form_display.' . $display->id());
  $data = $config->get();
  $this->assertFalse(isset($data['content']['test_no_display']));
  $this->assertFalse(isset($data['hidden']['test_no_display']));
  $this->assertEquals($expected['test_display_configurable'], $data['content']['test_display_configurable']);
  $this->assertFalse(isset($data['content']['test_display_non_configurable']));
  $this->assertFalse(isset($data['hidden']['test_display_non_configurable']));
  // Check that defaults are correctly filled when loading the display.
  $display = EntityFormDisplay::load($display->id());
  foreach ($expected as $field_name => $options) {
    $this->assertEquals($options, $display->getComponent($field_name));
  }
  // Check that data manually written for fields whose display is not
  // configurable is discarded when loading the display.
  $data['content']['test_display_non_configurable'] = $expected['test_display_non_configurable'];
  $data['content']['test_display_non_configurable']['weight']++;
  $config->setData($data)
    ->save();
  $display = EntityFormDisplay::load($display->id());
  foreach ($expected as $field_name => $options) {
    $this->assertEquals($options, $display->getComponent($field_name));
  }
}

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