You are here

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

TestBase

Namespace

Drupal\Tests\wbm2cm\Functional

Code

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);
    }
  }
}