public function EntityRevisionsTest::testIsLatestAffectedRevisionTranslation in Drupal 8
Same name and namespace in other branches
- 9 core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionsTest.php \Drupal\KernelTests\Core\Entity\EntityRevisionsTest::testIsLatestAffectedRevisionTranslation()
- 10 core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionsTest.php \Drupal\KernelTests\Core\Entity\EntityRevisionsTest::testIsLatestAffectedRevisionTranslation()
Tests that latest affected revisions are working as expected.
The latest revision affecting a particular translation behaves as the latest revision for monolingual entities.
@covers ::isLatestTranslationAffectedRevision @covers \Drupal\Core\Entity\ContentEntityStorageBase::getLatestRevisionId @covers \Drupal\Core\Entity\ContentEntityStorageBase::getLatestTranslationAffectedRevisionId
File
- core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityRevisionsTest.php, line 209
Class
- EntityRevisionsTest
- Tests the loaded Revision of an entity.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testIsLatestAffectedRevisionTranslation() {
ConfigurableLanguage::createFromLangcode('it')
->save();
// Create a basic EntityTestMulRev entity and save it.
$entity = EntityTestMulRev::create();
$entity
->setName($this
->randomString());
$entity
->save();
$this
->assertTrue($entity
->isLatestTranslationAffectedRevision());
// Load the created entity and create a new pending revision.
$pending_revision = EntityTestMulRev::load($entity
->id());
$pending_revision
->setName($this
->randomString());
$pending_revision
->setNewRevision(TRUE);
$pending_revision
->isDefaultRevision(FALSE);
// Check that no revision affecting Italian is available, given that no
// Italian translation has been created yet.
/** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
$storage = $this->entityTypeManager
->getStorage($entity
->getEntityTypeId());
$this
->assertNull($storage
->getLatestTranslationAffectedRevisionId($entity
->id(), 'it'));
$this
->assertEquals($pending_revision
->getLoadedRevisionId(), $storage
->getLatestRevisionId($entity
->id()));
// The pending revision should still be marked as the latest affected one
// before it is saved.
$this
->assertTrue($pending_revision
->isLatestTranslationAffectedRevision());
$pending_revision
->save();
$this
->assertTrue($pending_revision
->isLatestTranslationAffectedRevision());
// Load the default revision and check that it is not marked as the latest
// (translation-affected) revision.
$default_revision = EntityTestMulRev::load($entity
->id());
$this
->assertFalse($default_revision
->isLatestRevision());
$this
->assertFalse($default_revision
->isLatestTranslationAffectedRevision());
// Add a translation in a new pending revision and verify that both the
// English and Italian revision translations are the latest affected
// revisions for their respective languages, while the English revision is
// not the latest revision.
/** @var \Drupal\entity_test\Entity\EntityTestMulRev $en_revision */
$en_revision = clone $pending_revision;
/** @var \Drupal\entity_test\Entity\EntityTestMulRev $it_revision */
$it_revision = $pending_revision
->addTranslation('it');
$it_revision
->setName($this
->randomString());
$it_revision
->setNewRevision(TRUE);
$it_revision
->isDefaultRevision(FALSE);
// @todo Remove this once the "original" property works with revisions. See
// https://www.drupal.org/project/drupal/issues/2859042.
$it_revision->original = $storage
->loadRevision($it_revision
->getLoadedRevisionId());
$it_revision
->save();
$this
->assertTrue($it_revision
->isLatestRevision());
$this
->assertTrue($it_revision
->isLatestTranslationAffectedRevision());
$this
->assertFalse($en_revision
->isLatestRevision());
$this
->assertTrue($en_revision
->isLatestTranslationAffectedRevision());
}