Unverified Commit d78aa972 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3003238 by Sam152, Berdir, amateescu, catch, jibran:...

Issue #3003238 by Sam152, Berdir, amateescu, catch, jibran: EntityStorageException: Default revision can not be deleted in content_moderation_entity_revision_delete()

(cherry picked from commit c7beade9)
parent 304a5565
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -235,10 +235,11 @@ public function entityDelete(EntityInterface $entity) {
   * @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());
+25 −0
Original line number Diff line number Diff line
@@ -240,6 +240,31 @@ public function testContentModerationStatePendingRevisionDataRemoval($entity_typ
    $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 = $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.
   *