You are here

public function MigrateSqlIdMapTest::testGetRowByDestination in Drupal 9

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

Tests the getRowByDestination method.

File

core/modules/migrate/tests/src/Unit/MigrateSqlIdMapTest.php, line 555

Class

MigrateSqlIdMapTest
Tests the SQL ID map plugin.

Namespace

Drupal\Tests\migrate\Unit

Code

public function testGetRowByDestination() {
  $row = [
    'sourceid1' => 'source_id_value_1',
    'sourceid2' => 'source_id_value_2',
    'source_ids_hash' => $this
      ->getIdMap()
      ->getSourceIdsHash([
      'source_id_property' => 'source_id_value_1',
    ]),
    'destid1' => 'destination_id_value_1',
  ] + $this
    ->idMapDefaults();
  $this
    ->saveMap($row);
  $row = [
    'sourceid1' => 'source_id_value_3',
    'sourceid2' => 'source_id_value_4',
    'source_ids_hash' => $this
      ->getIdMap()
      ->getSourceIdsHash([
      'source_id_property' => 'source_id_value_3',
    ]),
    'destid1' => 'destination_id_value_2',
  ] + $this
    ->idMapDefaults();
  $this
    ->saveMap($row);
  $dest_id_values = [
    'destination_id_property' => $row['destid1'],
  ];
  $id_map = $this
    ->getIdMap();
  $result_row = $id_map
    ->getRowByDestination($dest_id_values);
  $this
    ->assertSame($row, $result_row);

  // This value does not exist, getRowByDestination should return an (empty)
  // array.
  // @see \Drupal\migrate\Plugin\MigrateIdMapInterface::getRowByDestination()
  $missing_result_row = $id_map
    ->getRowByDestination([
    'destination_id_property' => 'invalid_destination_id_property',
  ]);
  $this
    ->assertEquals([], $missing_result_row);

  // The destination ID values array does not contain all the destination ID
  // keys, we expect an empty array.
  $invalid_result_row = $id_map
    ->getRowByDestination([
    'invalid_destination_key' => 'invalid_destination_id_property',
  ]);
  $this
    ->assertEquals([], $invalid_result_row);
}