X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fcontent_moderation%2Ftests%2Fsrc%2FKernel%2FContentModerationStateTest.php;fp=web%2Fcore%2Fmodules%2Fcontent_moderation%2Ftests%2Fsrc%2FKernel%2FContentModerationStateTest.php;h=ef63472146a2ca337370081803a6029522b58f21;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=00e364419a1a66e375ebf995d7078296ab3af03f;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/web/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php b/web/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php index 00e364419..ef6347214 100644 --- a/web/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php +++ b/web/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php @@ -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. *