You are here

public function MigrateExternalTranslatedTest::testMigrations in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/migrate/tests/src/Kernel/MigrateExternalTranslatedTest.php \Drupal\Tests\migrate\Kernel\MigrateExternalTranslatedTest::testMigrations()
  2. 10 core/modules/migrate/tests/src/Kernel/MigrateExternalTranslatedTest.php \Drupal\Tests\migrate\Kernel\MigrateExternalTranslatedTest::testMigrations()

Tests importing and rolling back our data.

File

core/modules/migrate/tests/src/Kernel/MigrateExternalTranslatedTest.php, line 56

Class

MigrateExternalTranslatedTest
Tests migrating non-Drupal translated content.

Namespace

Drupal\Tests\migrate\Kernel

Code

public function testMigrations() {

  /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
  $storage = $this->container
    ->get('entity_type.manager')
    ->getStorage('node');
  $this
    ->assertCount(0, $storage
    ->loadMultiple());

  // Run the migrations.
  $migration_ids = [
    'external_translated_test_node',
    'external_translated_test_node_translation',
  ];
  $this
    ->executeMigrations($migration_ids);
  $this
    ->assertCount(3, $storage
    ->loadMultiple());
  $node = $storage
    ->load(1);
  $this
    ->assertEquals('en', $node
    ->language()
    ->getId());
  $this
    ->assertEquals('Cat', $node->title->value);
  $this
    ->assertEquals('Chat', $node
    ->getTranslation('fr')->title->value);
  $this
    ->assertEquals('Gato', $node
    ->getTranslation('es')->title->value);
  $node = $storage
    ->load(2);
  $this
    ->assertEquals('en', $node
    ->language()
    ->getId());
  $this
    ->assertEquals('Dog', $node->title->value);
  $this
    ->assertEquals('Chien', $node
    ->getTranslation('fr')->title->value);
  $this
    ->assertFalse($node
    ->hasTranslation('es'), "No spanish translation for node 2");
  $node = $storage
    ->load(3);
  $this
    ->assertEquals('en', $node
    ->language()
    ->getId());
  $this
    ->assertEquals('Monkey', $node->title->value);
  $this
    ->assertFalse($node
    ->hasTranslation('fr'), "No french translation for node 3");
  $this
    ->assertFalse($node
    ->hasTranslation('es'), "No spanish translation for node 3");
  $this
    ->assertNull($storage
    ->load(4), "No node 4 migrated");

  // Roll back the migrations.
  foreach ($migration_ids as $migration_id) {
    $migration = $this
      ->getMigration($migration_id);
    $executable = new MigrateExecutable($migration, $this);
    $executable
      ->rollback();
  }
  $this
    ->assertCount(0, $storage
    ->loadMultiple());
}