public function TestBase::testMultipleRevisionsWithNewTranslation in Workbench Moderation to Content Moderation 8.2
Migrates an entity with several revisions, one of which adds a translation.
File
- tests/
src/ Functional/ TestBase.php, line 309
Class
Namespace
Drupal\Tests\wbm2cm\FunctionalCode
public function testMultipleRevisionsWithNewTranslation() {
$entity = $this
->createEntity();
$revisions = [];
// The revision has translations in English and French, but not Hungarian.
$entity
->setNewRevision();
$entity
->set('moderation_state', $this
->randomEntity('moderation_state'));
$this
->translate($entity, 'fr')
->set('moderation_state', $this
->randomEntity('moderation_state'));
$this->storage
->save($entity);
$initial_revision = $vid = $entity
->getRevisionId();
$revisions[$vid]['en'] = $entity->moderation_state->target_id;
$revisions[$vid]['fr'] = $entity
->getTranslation('fr')->moderation_state->target_id;
// The next revision adds a Hungarian translation without a moderation state
// and assigns new moderation states to the English and French translations.
$entity
->setNewRevision();
$entity
->set('moderation_state', $this
->randomEntity('moderation_state'));
$entity
->getTranslation('fr')
->set('moderation_state', $this
->randomEntity('moderation_state'));
$this
->translate($entity, 'hu');
$this->storage
->save($entity);
$vid = $entity
->getRevisionId();
$revisions[$vid]['en'] = $entity->moderation_state->target_id;
$revisions[$vid]['fr'] = $entity
->getTranslation('fr')->moderation_state->target_id;
$revisions[$vid]['hu'] = $entity
->getTranslation('hu')->moderation_state->target_id;
// The next revision assigns new moderation states to all translations.
$entity
->setNewRevision();
$entity
->set('moderation_state', $this
->randomEntity('moderation_state'));
$entity
->getTranslation('fr')
->set('moderation_state', $this
->randomEntity('moderation_state'));
$entity
->getTranslation('hu')
->set('moderation_state', $this
->randomEntity('moderation_state'));
$this->storage
->save($entity);
$vid = $entity
->getRevisionId();
$revisions[$vid]['en'] = $entity->moderation_state->target_id;
$revisions[$vid]['fr'] = $entity
->getTranslation('fr')->moderation_state->target_id;
$revisions[$vid]['hu'] = $entity
->getTranslation('hu')->moderation_state->target_id;
$this
->doMigration();
foreach ($revisions as $vid => $moderation_states) {
/** @var ContentEntityInterface $revision */
$revision = $this->storage
->loadRevision($vid);
if ($vid === $initial_revision) {
$this
->assertFalse($revision
->hasTranslation('hu'));
}
foreach ($moderation_states as $language => $moderation_state) {
$this
->assertSame($moderation_state, $revision
->getTranslation($language)->moderation_state->value);
}
}
}