summaryrefslogtreecommitdiffstats
path: root/core/modules/content_moderation
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/content_moderation')
-rw-r--r--core/modules/content_moderation/src/EntityOperations.php9
-rw-r--r--core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php25
2 files changed, 30 insertions, 4 deletions
diff --git a/core/modules/content_moderation/src/EntityOperations.php b/core/modules/content_moderation/src/EntityOperations.php
index 8c6d332..52d2ca3 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 5311d88..86c4389 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php
@@ -241,6 +241,31 @@ class ContentModerationStateTest extends KernelTestBase {
}
/**
+ * 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 = $this->reloadEntity($entity);
+ $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.
*
* @dataProvider basicModerationTestCases