function FieldDefaultValueCallbackTest::testDefaultValueCallbackForm
Tests the default value callback functionality for fields.
File
- 
              core/
modules/ field/ tests/ src/ Functional/ FieldDefaultValueCallbackTest.php, line 62  
Class
- FieldDefaultValueCallbackTest
 - Tests the default value callback.
 
Namespace
Drupal\Tests\field\FunctionalCode
public function testDefaultValueCallbackForm() : void {
  // Create a field and storage for checking.
  FieldStorageConfig::create([
    'field_name' => $this->fieldName,
    'entity_type' => 'node',
    'type' => 'text',
  ])
    ->save();
  /** @var \Drupal\field\Entity\FieldConfig $field_config */
  $field_config = FieldConfig::create([
    'entity_type' => 'node',
    'field_name' => $this->fieldName,
    'bundle' => 'article',
  ]);
  $field_config->save();
  // Check that the default field form is visible when no callback is set.
  $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test');
  $this->assertSession()
    ->fieldValueEquals('default_value_input[field_test][0][value]', '');
  // Set a different field value, it should be on the field.
  $default_value = $this->randomString();
  $field_config->setDefaultValue([
    [
      'value' => $default_value,
    ],
  ])
    ->save();
  $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test');
  $this->assertSession()
    ->fieldValueEquals('default_value_input[field_test][0][value]', $default_value);
  // Set a different field value to the field directly, instead of an array.
  $default_value = $this->randomString();
  $field_config->setDefaultValue($default_value)
    ->save();
  $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test');
  $this->assertSession()
    ->fieldValueEquals('default_value_input[field_test][0][value]', $default_value);
  // Set a default value callback instead, and the default field form should
  // not be visible.
  $field_config->setDefaultValueCallback('\\Drupal\\field_test\\FieldDefaultValueCallbackProvider::calculateDefaultValue')
    ->save();
  $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test');
  $this->assertSession()
    ->fieldNotExists('default_value_input[field_test][0][value]');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.