diff --git a/core/modules/comment/tests/src/Functional/CommentUninstallTest.php b/core/modules/comment/tests/src/Functional/CommentUninstallTest.php deleted file mode 100644 index 96d7eeae8daf..000000000000 --- a/core/modules/comment/tests/src/Functional/CommentUninstallTest.php +++ /dev/null @@ -1,83 +0,0 @@ -drupalCreateContentType(['type' => 'article', 'name' => t('Article')]); - // Create comment field on article so that adds 'comment_body' field. - $this->addDefaultCommentField('node', 'article'); - } - - /** - * Tests if comment module uninstallation fails if the field exists. - * - * @throws \Drupal\Core\Extension\ModuleUninstallValidatorException - */ - public function testCommentUninstallWithField() { - // Ensure that the field exists before uninstallation. - $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); - $this->assertNotNull($field_storage, 'The comment_body field exists.'); - - // Uninstall the comment module which should trigger an exception. - try { - $this->container->get('module_installer')->uninstall(['comment']); - $this->fail("Expected an exception when uninstall was attempted."); - } - catch (ModuleUninstallValidatorException $e) { - $this->pass("Caught an exception when uninstall was attempted."); - } - } - - /** - * Tests if uninstallation succeeds if the field has been deleted beforehand. - */ - public function testCommentUninstallWithoutField() { - // Manually delete the comment_body field before module uninstallation. - $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); - $this->assertNotNull($field_storage, 'The comment_body field exists.'); - $field_storage->delete(); - - // Check that the field is now deleted. - $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); - $this->assertNull($field_storage, 'The comment_body field has been deleted.'); - - // Manually delete the comment field on the node before module uninstallation. - $field_storage = FieldStorageConfig::loadByName('node', 'comment'); - $this->assertNotNull($field_storage, 'The comment field exists.'); - $field_storage->delete(); - - // Check that the field is now deleted. - $field_storage = FieldStorageConfig::loadByName('node', 'comment'); - $this->assertNull($field_storage, 'The comment field has been deleted.'); - - field_purge_batch(10); - // Ensure that uninstallation succeeds even if the field has already been - // deleted manually beforehand. - $this->container->get('module_installer')->uninstall(['comment']); - } - -} diff --git a/core/modules/comment/tests/src/Kernel/CommentUninstallTest.php b/core/modules/comment/tests/src/Kernel/CommentUninstallTest.php new file mode 100644 index 000000000000..f1428a2ac911 --- /dev/null +++ b/core/modules/comment/tests/src/Kernel/CommentUninstallTest.php @@ -0,0 +1,94 @@ +installEntitySchema('comment'); + $this->installConfig(['comment']); + $this->installSchema('user', ['users_data']); + + NodeType::create(['type' => 'article'])->save(); + + // Create comment field on article so that it adds 'comment_body' field. + FieldStorageConfig::create([ + 'type' => 'text_long', + 'entity_type' => 'comment', + 'field_name' => 'comment', + ])->save(); + $this->addDefaultCommentField('node', 'article'); + } + + /** + * Tests if comment module uninstall fails if the field exists. + */ + public function testCommentUninstallWithField() { + // Ensure that the field exists before uninstalling. + $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); + $this->assertNotNull($field_storage); + + // Uninstall the comment module which should trigger an exception. + $this->expectException(ModuleUninstallValidatorException::class); + $this->expectExceptionMessage('The following reasons prevent the modules from being uninstalled: The Comments field type is used in the following field: node.comment'); + $this->container->get('module_installer')->uninstall(['comment']); + } + + /** + * Tests if uninstallation succeeds if the field has been deleted beforehand. + */ + public function testCommentUninstallWithoutField() { + // Tests if uninstall succeeds if the field has been deleted beforehand. + // Manually delete the comment_body field before module uninstall. + FieldStorageConfig::loadByName('comment', 'comment_body')->delete(); + + // Check that the field is now deleted. + $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); + $this->assertNull($field_storage); + + // Manually delete the comment field on the node before module uninstall. + $field_storage = FieldStorageConfig::loadByName('node', 'comment'); + $this->assertNotNull($field_storage); + $field_storage->delete(); + + // Check that the field is now deleted. + $field_storage = FieldStorageConfig::loadByName('node', 'comment'); + $this->assertNull($field_storage); + + field_purge_batch(10); + // Ensure that uninstall succeeds even if the field has already been deleted + // manually beforehand. + $this->container->get('module_installer')->uninstall(['comment']); + } + +}