You are here

public function TestBase::testMultipleTranslatedRevisions in Workbench Moderation to Content Moderation 8.2

Migrates an entity with several revisions, all of which are translated.

File

tests/src/Functional/TestBase.php, line 209

Class

TestBase

Namespace

Drupal\Tests\wbm2cm\Functional

Code

public function testMultipleTranslatedRevisions() {
  $entity = $this
    ->createEntity();
  $default_vid = NULL;
  $revisions = [];
  while (count($revisions) < 5) {
    $entity
      ->setNewRevision();

    // The fourth revision will arbitrarily be the default revision.
    if (count($revisions) === 3) {
      $entity
        ->isDefaultRevision(TRUE);
    }
    $moderation_states = [];
    foreach ([
      'en',
      'fr',
      'hu',
    ] as $language) {
      $moderation_states[$language] = $this
        ->randomEntity('moderation_state');
      $this
        ->translate($entity, $language)
        ->set('moderation_state', $moderation_states[$language]);
    }
    $this->storage
      ->save($entity);
    $vid = (int) $entity
      ->getRevisionId();
    if ($entity
      ->isDefaultRevision()) {
      $default_vid = $vid;
    }
    $revisions[$vid] = $moderation_states;
  }

  // Ensure we set a default revision.
  $this
    ->assertInternalType('integer', $default_vid);
  $this
    ->doMigration();
  foreach ($revisions as $vid => $moderation_states) {

    /** @var ContentEntityInterface $revision */
    $revision = $this->storage
      ->loadRevision($vid);
    if ($vid === $default_vid) {
      $this
        ->assertTrue($revision
        ->isDefaultRevision());
    }
    foreach ($moderation_states as $language => $moderation_state) {
      $this
        ->assertSame($moderation_state, $revision
        ->getTranslation($language)->moderation_state->value);
    }
  }
}