public function TestBase::testMultipleTranslatedMixedRevisions in Workbench Moderation to Content Moderation 8.2
Migrates an entity with several revisions and translations.
File
- tests/
src/ Functional/ TestBase.php, line 256
Class
Namespace
Drupal\Tests\wbm2cm\FunctionalCode
public function testMultipleTranslatedMixedRevisions() {
$entity = $this
->createEntity();
$revisions = [];
// The revision has translations in English, French, and Hungarian, but
// only English and Hungarian have a moderation state.
$entity
->setNewRevision();
$entity
->set('moderation_state', $this
->randomEntity('moderation_state'));
$this
->translate($entity, 'fr');
$this
->translate($entity, '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;
// The next revision assigns moderation states to French and Hungarian, but
// not English.
$entity
->setNewRevision();
$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;
// The next revision assigns moderation states to English and French, but
// not Hungarian.
$entity
->setNewRevision();
$entity
->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);
foreach ($moderation_states as $language => $moderation_state) {
$this
->assertSame($moderation_state, $revision
->getTranslation($language)->moderation_state->value);
}
}
}