public function ManageFieldsFunctionalTest::testHiddenFields in Drupal 9
Same name and namespace in other branches
- 8 core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php \Drupal\Tests\field_ui\Functional\ManageFieldsFunctionalTest::testHiddenFields()
Tests that Field UI respects the 'no_ui' flag in the field type definition.
File
- core/
modules/ field_ui/ tests/ src/ Functional/ ManageFieldsFunctionalTest.php, line 673
Class
- ManageFieldsFunctionalTest
- Tests the Field UI "Manage fields" screen.
Namespace
Drupal\Tests\field_ui\FunctionalCode
public function testHiddenFields() {
// Check that the field type is not available in the 'add new field' row.
$this
->drupalGet('admin/structure/types/manage/' . $this->contentType . '/fields/add-field');
$this
->assertSession()
->optionNotExists('edit-new-storage-type', 'hidden_test_field');
$this
->assertSession()
->optionExists('edit-new-storage-type', 'shape');
// Create a field storage and a field programmatically.
$field_name = 'hidden_test_field';
FieldStorageConfig::create([
'field_name' => $field_name,
'entity_type' => 'node',
'type' => $field_name,
])
->save();
$field = [
'field_name' => $field_name,
'bundle' => $this->contentType,
'entity_type' => 'node',
'label' => t('Hidden field'),
];
FieldConfig::create($field)
->save();
\Drupal::service('entity_display.repository')
->getFormDisplay('node', $this->contentType)
->setComponent($field_name)
->save();
$this
->assertInstanceOf(FieldConfig::class, FieldConfig::load('node.' . $this->contentType . '.' . $field_name));
// Check that the newly added field appears on the 'Manage Fields'
// screen.
$this
->drupalGet('admin/structure/types/manage/' . $this->contentType . '/fields');
$this
->assertSession()
->elementTextContains('xpath', '//table[@id="field-overview"]//tr[@id="hidden-test-field"]//td[1]', $field['label']);
// Check that the field does not appear in the 're-use existing field' row
// on other bundles.
$this
->drupalGet('admin/structure/types/manage/page/fields/add-field');
$this
->assertSession()
->optionNotExists('edit-existing-storage-name', $field_name);
$this
->assertSession()
->optionExists('edit-existing-storage-name', 'field_tags');
// Check that non-configurable fields are not available.
$field_types = \Drupal::service('plugin.manager.field.field_type')
->getDefinitions();
foreach ($field_types as $field_type => $definition) {
if (empty($definition['no_ui'])) {
$this
->assertSession()
->optionExists('edit-new-storage-type', $field_type);
}
else {
$this
->assertSession()
->optionNotExists('edit-new-storage-type', $field_type);
}
}
}