Chris@0: fieldName = 'field_test'; Chris@0: Chris@0: // Create Article node types. Chris@0: if ($this->profile != 'standard') { Chris@0: $this->drupalCreateContentType([ Chris@0: 'type' => 'article', Chris@0: 'name' => 'Article', Chris@0: ]); Chris@0: } Chris@0: Chris@0: } Chris@0: Chris@0: public function testDefaultValueCallbackForm() { Chris@0: // Create a field and storage for checking. Chris@0: /** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */ Chris@0: FieldStorageConfig::create([ Chris@0: 'field_name' => $this->fieldName, Chris@0: 'entity_type' => 'node', Chris@0: 'type' => 'text', Chris@0: ])->save(); Chris@0: /** @var \Drupal\field\Entity\FieldConfig $field_config */ Chris@0: $field_config = FieldConfig::create([ Chris@0: 'entity_type' => 'node', Chris@0: 'field_name' => $this->fieldName, Chris@0: 'bundle' => 'article', Chris@0: ]); Chris@0: $field_config->save(); Chris@0: Chris@0: $this->drupalLogin($this->rootUser); Chris@0: Chris@0: // Check that the default field form is visible when no callback is set. Chris@0: $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test'); Chris@0: $this->assertFieldByName('default_value_input[field_test][0][value]', NULL, 'The default field form is visible.'); Chris@0: Chris@0: // Set a different field value, it should be on the field. Chris@0: $default_value = $this->randomString(); Chris@0: $field_config->setDefaultValue([['value' => $default_value]])->save(); Chris@0: $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test'); Chris@0: $this->assertFieldByName('default_value_input[field_test][0][value]', $default_value, 'The default field form is visible.'); Chris@0: Chris@0: // Set a different field value to the field directly, instead of an array. Chris@0: $default_value = $this->randomString(); Chris@0: $field_config->setDefaultValue($default_value)->save(); Chris@0: $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test'); Chris@0: $this->assertFieldByName('default_value_input[field_test][0][value]', $default_value, 'The default field form is visible.'); Chris@0: Chris@0: // Set a default value callback instead, and the default field form should Chris@0: // not be visible. Chris@0: $field_config->setDefaultValueCallback('\Drupal\field\Tests\FieldDefaultValueCallbackProvider::calculateDefaultValue')->save(); Chris@0: $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test'); Chris@0: $this->assertNoFieldByName('default_value_input[field_test][0][value]', 'Calculated default value', 'The default field form is not visible when a callback is defined.'); Chris@0: } Chris@0: Chris@0: }