function EntitySchemaTest::testCustomFieldCreateDelete
Same name in other branches
- 8.9.x core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php \Drupal\KernelTests\Core\Entity\EntitySchemaTest::testCustomFieldCreateDelete()
- 10 core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php \Drupal\KernelTests\Core\Entity\EntitySchemaTest::testCustomFieldCreateDelete()
- 11.x core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php \Drupal\KernelTests\Core\Entity\EntitySchemaTest::testCustomFieldCreateDelete()
Tests the custom bundle field creation and deletion.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntitySchemaTest.php, line 60
Class
- EntitySchemaTest
- Tests the default entity storage schema handler.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testCustomFieldCreateDelete() {
// Install the module which adds the field.
$this->installModule('entity_schema_test');
$storage_definitions = \Drupal::service('entity_field.manager')->getFieldStorageDefinitions('entity_test_update');
$this->assertNotNull($storage_definitions['custom_base_field'], 'Base field definition found.');
$this->assertNotNull($storage_definitions['custom_bundle_field'], 'Bundle field definition found.');
// Make sure the field schema can be created.
\Drupal::service('field_storage_definition.listener')->onFieldStorageDefinitionCreate($storage_definitions['custom_base_field']);
\Drupal::service('field_storage_definition.listener')->onFieldStorageDefinitionCreate($storage_definitions['custom_bundle_field']);
/** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */
$table_mapping = $this->entityTypeManager
->getStorage('entity_test_update')
->getTableMapping();
$base_table = current($table_mapping->getTableNames());
$base_column = current($table_mapping->getColumnNames('custom_base_field'));
$this->assertTrue($this->database
->schema()
->fieldExists($base_table, $base_column), 'Table column created');
$table = $table_mapping->getDedicatedDataTableName($storage_definitions['custom_bundle_field']);
$this->assertTrue($this->database
->schema()
->tableExists($table), 'Table created');
// Make sure the field schema can be deleted.
\Drupal::service('field_storage_definition.listener')->onFieldStorageDefinitionDelete($storage_definitions['custom_base_field']);
\Drupal::service('field_storage_definition.listener')->onFieldStorageDefinitionDelete($storage_definitions['custom_bundle_field']);
$this->assertFalse($this->database
->schema()
->fieldExists($base_table, $base_column), 'Table column dropped');
$this->assertFalse($this->database
->schema()
->tableExists($table), 'Table dropped');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.