Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / content_moderation / tests / src / Kernel / ContentModerationStateTest.php
index 00e364419a1a66e375ebf995d7078296ab3af03f..ef63472146a2ca337370081803a6029522b58f21 100644 (file)
@@ -174,12 +174,11 @@ class ContentModerationStateTest extends KernelTestBase {
   }
 
   /**
-   * Tests removal of content moderation state entity field data.
+   * Tests removal of content moderation state entity.
    *
    * @dataProvider basicModerationTestCases
    */
   public function testContentModerationStateDataRemoval($entity_type_id) {
-    // Test content moderation state deletion.
     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
     $entity = $this->createEntity($entity_type_id);
     $entity->save();
@@ -187,44 +186,80 @@ class ContentModerationStateTest extends KernelTestBase {
     $entity->delete();
     $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
     $this->assertFalse($content_moderation_state);
+  }
 
-    // Test content moderation state revision deletion.
-    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity2 */
-    $entity2 = $this->createEntity($entity_type_id);
-    $entity2->save();
-    $revision = clone $entity2;
+  /**
+   * Tests removal of content moderation state entity revisions.
+   *
+   * @dataProvider basicModerationTestCases
+   */
+  public function testContentModerationStateRevisionDataRemoval($entity_type_id) {
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
+    $entity = $this->createEntity($entity_type_id);
+    $entity->save();
+    $revision = clone $entity;
     $revision->isDefaultRevision(FALSE);
     $content_moderation_state = ContentModerationState::loadFromModeratedEntity($revision);
     $this->assertTrue($content_moderation_state);
-    $entity2 = $this->reloadEntity($entity2);
-    $entity2->setNewRevision(TRUE);
-    $entity2->save();
+    $entity = $this->reloadEntity($entity);
+    $entity->setNewRevision(TRUE);
+    $entity->save();
     $entity_storage = $this->entityTypeManager->getStorage($entity_type_id);
     $entity_storage->deleteRevision($revision->getRevisionId());
     $content_moderation_state = ContentModerationState::loadFromModeratedEntity($revision);
     $this->assertFalse($content_moderation_state);
-    $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity2);
+    $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
     $this->assertTrue($content_moderation_state);
+  }
 
+  /**
+   * Tests removal of content moderation state pending entity revisions.
+   *
+   * @dataProvider basicModerationTestCases
+   */
+  public function testContentModerationStatePendingRevisionDataRemoval($entity_type_id) {
+    $entity = $this->createEntity($entity_type_id);
+    $entity->moderation_state = 'published';
+    $entity->save();
+    $entity->setNewRevision(TRUE);
+    $entity->moderation_state = 'draft';
+    $entity->save();
+
+    $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
+    $this->assertTrue($content_moderation_state);
+
+    $entity_storage = $this->entityTypeManager->getStorage($entity_type_id);
+    $entity_storage->deleteRevision($entity->getRevisionId());
+
+    $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
+    $this->assertFalse($content_moderation_state);
+  }
+
+  /**
+   * Tests removal of content moderation state translations.
+   *
+   * @dataProvider basicModerationTestCases
+   */
+  public function testContentModerationStateTranslationDataRemoval($entity_type_id) {
     // Test content moderation state translation deletion.
     if ($this->entityTypeManager->getDefinition($entity_type_id)->isTranslatable()) {
-      /** @var \Drupal\Core\Entity\ContentEntityInterface $entity3 */
-      $entity3 = $this->createEntity($entity_type_id);
+      /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
+      $entity = $this->createEntity($entity_type_id);
       $langcode = 'it';
       ConfigurableLanguage::createFromLangcode($langcode)
         ->save();
-      $entity3->save();
-      $translation = $entity3->addTranslation($langcode, ['title' => 'Titolo test']);
+      $entity->save();
+      $translation = $entity->addTranslation($langcode, ['title' => 'Titolo test']);
       // Make sure we add values for all of the required fields.
       if ($entity_type_id == 'block_content') {
         $translation->info = $this->randomString();
       }
       $translation->save();
-      $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity3);
+      $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
       $this->assertTrue($content_moderation_state->hasTranslation($langcode));
-      $entity3->removeTranslation($langcode);
-      $entity3->save();
-      $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity3);
+      $entity->removeTranslation($langcode);
+      $entity->save();
+      $content_moderation_state = ContentModerationState::loadFromModeratedEntity($entity);
       $this->assertFalse($content_moderation_state->hasTranslation($langcode));
     }
   }
@@ -536,6 +571,48 @@ class ContentModerationStateTest extends KernelTestBase {
     ], $workflow->getDependencies());
   }
 
+  /**
+   * Test the revision default state of the moderation state entity revisions.
+   *
+   * @param string $entity_type_id
+   *   The ID of entity type to be tested.
+   *
+   * @dataProvider basicModerationTestCases
+   */
+  public function testRevisionDefaultState($entity_type_id) {
+    // Check that the revision default state of the moderated entity and the
+    // content moderation state entity always match.
+    /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
+    $storage = $this->entityTypeManager->getStorage($entity_type_id);
+    /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $cms_storage */
+    $cms_storage = $this->entityTypeManager->getStorage('content_moderation_state');
+
+    $entity = $this->createEntity($entity_type_id);
+    $entity->get('moderation_state')->value = 'published';
+    $storage->save($entity);
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $cms_entity */
+    $cms_entity = $cms_storage->loadUnchanged(1);
+    $this->assertEquals($entity->getLoadedRevisionId(), $cms_entity->get('content_entity_revision_id')->value);
+
+    $entity->get('moderation_state')->value = 'published';
+    $storage->save($entity);
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $cms_entity */
+    $cms_entity = $cms_storage->loadUnchanged(1);
+    $this->assertEquals($entity->getLoadedRevisionId(), $cms_entity->get('content_entity_revision_id')->value);
+
+    $entity->get('moderation_state')->value = 'draft';
+    $storage->save($entity);
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $cms_entity */
+    $cms_entity = $cms_storage->loadUnchanged(1);
+    $this->assertEquals($entity->getLoadedRevisionId() - 1, $cms_entity->get('content_entity_revision_id')->value);
+
+    $entity->get('moderation_state')->value = 'published';
+    $storage->save($entity);
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $cms_entity */
+    $cms_entity = $cms_storage->loadUnchanged(1);
+    $this->assertEquals($entity->getLoadedRevisionId(), $cms_entity->get('content_entity_revision_id')->value);
+  }
+
   /**
    * Creates an entity.
    *