public function ConfigImportUITest::testEntityBundleDelete in Drupal 10
Same name and namespace in other branches
- 8 core/modules/config/tests/src/Functional/ConfigImportUITest.php \Drupal\Tests\config\Functional\ConfigImportUITest::testEntityBundleDelete()
- 9 core/modules/config/tests/src/Functional/ConfigImportUITest.php \Drupal\Tests\config\Functional\ConfigImportUITest::testEntityBundleDelete()
Tests the config importer cannot delete bundles with existing entities.
See also
\Drupal\Core\Entity\Event\BundleConfigImportValidate
File
- core/
modules/ config/ tests/ src/ Functional/ ConfigImportUITest.php, line 460
Class
- ConfigImportUITest
- Tests the user interface for importing configuration.
Namespace
Drupal\Tests\config\FunctionalCode
public function testEntityBundleDelete() {
\Drupal::service('module_installer')
->install([
'node',
]);
$this
->copyConfig($this->container
->get('config.storage'), $this->container
->get('config.storage.sync'));
$node_type = $this
->drupalCreateContentType();
$node = $this
->drupalCreateNode([
'type' => $node_type
->id(),
]);
$this
->drupalGet('admin/config/development/configuration');
// The node type, body field and entity displays will be scheduled for
// removal.
$this
->assertSession()
->pageTextContains('node.type.' . $node_type
->id());
$this
->assertSession()
->pageTextContains('field.field.node.' . $node_type
->id() . '.body');
$this
->assertSession()
->pageTextContains('core.entity_view_display.node.' . $node_type
->id() . '.teaser');
$this
->assertSession()
->pageTextContains('core.entity_view_display.node.' . $node_type
->id() . '.default');
$this
->assertSession()
->pageTextContains('core.entity_form_display.node.' . $node_type
->id() . '.default');
// Attempt to import configuration and verify that an error message appears
// and the node type, body field and entity displays are still scheduled for
// removal.
$this
->submitForm([], 'Import all');
$validation_message = "Entities exist of type {$node->getEntityType()->getLabel()} and {$node->getEntityType()->getBundleLabel()} {$node_type->label()}. These entities need to be deleted before importing.";
$this
->assertSession()
->pageTextContains($validation_message);
$this
->assertSession()
->pageTextContains('node.type.' . $node_type
->id());
$this
->assertSession()
->pageTextContains('field.field.node.' . $node_type
->id() . '.body');
$this
->assertSession()
->pageTextContains('core.entity_view_display.node.' . $node_type
->id() . '.teaser');
$this
->assertSession()
->pageTextContains('core.entity_view_display.node.' . $node_type
->id() . '.default');
$this
->assertSession()
->pageTextContains('core.entity_form_display.node.' . $node_type
->id() . '.default');
// Delete the node and try to import again.
$node
->delete();
$this
->submitForm([], 'Import all');
$this
->assertSession()
->pageTextNotContains($validation_message);
$this
->assertSession()
->pageTextContains('The staged configuration is identical to the active configuration.');
$this
->assertSession()
->pageTextNotContains('node.type.' . $node_type
->id());
$this
->assertSession()
->pageTextNotContains('field.field.node.' . $node_type
->id() . '.body');
$this
->assertSession()
->pageTextNotContains('core.entity_view_display.node.' . $node_type
->id() . '.teaser');
$this
->assertSession()
->pageTextNotContains('core.entity_view_display.node.' . $node_type
->id() . '.default');
$this
->assertSession()
->pageTextNotContains('core.entity_form_display.node.' . $node_type
->id() . '.default');
}