diff --git a/core/modules/content_moderation/src/EntityOperations.php b/core/modules/content_moderation/src/EntityOperations.php index 8c6d3325089..52d2ca3909f 100644 --- a/core/modules/content_moderation/src/EntityOperations.php +++ b/core/modules/content_moderation/src/EntityOperations.php @@ -235,10 +235,11 @@ class EntityOperations implements ContainerInjectionInterface { * @see hook_entity_revision_delete() */ public function entityRevisionDelete(EntityInterface $entity) { - /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ - if (!$entity->isDefaultRevision()) { - $content_moderation_state = ContentModerationStateEntity::loadFromModeratedEntity($entity); - if ($content_moderation_state) { + if ($content_moderation_state = ContentModerationStateEntity::loadFromModeratedEntity($entity)) { + if ($content_moderation_state->isDefaultRevision()) { + $content_moderation_state->delete(); + } + else { $this->entityTypeManager ->getStorage('content_moderation_state') ->deleteRevision($content_moderation_state->getRevisionId()); diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php index 1a1b6e46e90..373d01ff86c 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php @@ -238,6 +238,30 @@ class ContentModerationStateTest extends KernelTestBase { $this->assertFalse($content_moderation_state); } + /** + * Tests removal of content moderation state entities for preexisting content. + */ + public function testExistingContentModerationStateDataRemoval() { + $storage = $this->entityTypeManager->getStorage('entity_test_mulrevpub'); + + $entity = $storage->create([]); + $entity->save(); + $original_revision_id = $entity->getRevisionId(); + + $workflow = $this->createEditorialWorkflow(); + $workflow->getTypePlugin()->addEntityTypeAndBundle($entity->getEntityTypeId(), $entity->bundle()); + $workflow->save(); + + $entity->moderation_state = 'draft'; + $entity->save(); + + $storage->deleteRevision($entity->getRevisionId()); + + $entity = $this->reloadEntity($entity); + $this->assertEquals('published', $entity->moderation_state->value); + $this->assertEquals($original_revision_id, $storage->getLatestRevisionId($entity->id())); + } + /** * Tests removal of content moderation state translations. *