public function ConfigImportRenameValidationTest::testRenameValidation in Drupal 9
Same name and namespace in other branches
- 8 core/tests/Drupal/KernelTests/Core/Config/ConfigImportRenameValidationTest.php \Drupal\KernelTests\Core\Config\ConfigImportRenameValidationTest::testRenameValidation()
Tests configuration renaming validation.
File
- core/
tests/ Drupal/ KernelTests/ Core/ Config/ ConfigImportRenameValidationTest.php, line 73
Class
- ConfigImportRenameValidationTest
- Tests validating renamed configuration in a configuration import.
Namespace
Drupal\KernelTests\Core\ConfigCode
public function testRenameValidation() {
// Create a test entity.
$test_entity_id = $this
->randomMachineName();
$test_entity = \Drupal::entityTypeManager()
->getStorage('config_test')
->create([
'id' => $test_entity_id,
'label' => $this
->randomMachineName(),
]);
$test_entity
->save();
$uuid = $test_entity
->uuid();
// Stage the test entity and then delete it from the active storage.
$active = $this->container
->get('config.storage');
$sync = $this->container
->get('config.storage.sync');
$this
->copyConfig($active, $sync);
$test_entity
->delete();
// Create a content type with a matching UUID in the active storage.
$content_type = NodeType::create([
'type' => mb_strtolower($this
->randomMachineName(16)),
'name' => $this
->randomMachineName(),
'uuid' => $uuid,
]);
$content_type
->save();
// Confirm that the staged configuration is detected as a rename since the
// UUIDs match.
$this->configImporter
->reset();
$expected = [
'node.type.' . $content_type
->id() . '::config_test.dynamic.' . $test_entity_id,
];
$renames = $this->configImporter
->getUnprocessedConfiguration('rename');
$this
->assertSame($expected, $renames);
// Try to import the configuration. We expect an exception to be thrown
// because the staged entity is of a different type.
try {
$this->configImporter
->import();
$this
->fail('Expected ConfigImporterException thrown when a renamed configuration entity does not match the existing entity type.');
} catch (ConfigImporterException $e) {
$expected = [
new FormattableMarkup('Entity type mismatch on rename. @old_type not equal to @new_type for existing configuration @old_name and staged configuration @new_name.', [
'@old_type' => 'node_type',
'@new_type' => 'config_test',
'@old_name' => 'node.type.' . $content_type
->id(),
'@new_name' => 'config_test.dynamic.' . $test_entity_id,
]),
];
$this
->assertEquals($expected, $this->configImporter
->getErrors());
}
}