You are here

public function MigrationSourceCacheTest::testCacheCountsNotContaminated in Drupal 9

Same name and namespace in other branches
  1. 10 core/modules/migrate/tests/src/Kernel/Plugin/source/MigrationSourceCacheTest.php \Drupal\Tests\migrate\Kernel\Plugin\source\MigrationSourceCacheTest::testCacheCountsNotContaminated()

Tests that counts for the same plugin_id are not crossed.

File

core/modules/migrate/tests/src/Kernel/Plugin/source/MigrationSourceCacheTest.php, line 38

Class

MigrationSourceCacheTest
Test source counts are correctly cached.

Namespace

Drupal\Tests\migrate\Kernel\Plugin\source

Code

public function testCacheCountsNotContaminated() {
  $migration_1_definition = [
    'source' => [
      'plugin' => 'cacheable_embedded_data',
      'cache_counts' => TRUE,
      'ids' => [
        'id' => [
          'type' => 'integer',
        ],
      ],
      'data_rows' => [
        [
          [
            'id' => 1,
          ],
        ],
      ],
    ],
  ];
  $migration_2_definition = [
    'source' => [
      'plugin' => 'cacheable_embedded_data',
      'cache_counts' => TRUE,
      'ids' => [
        'id' => [
          'type' => 'integer',
        ],
      ],
      'data_rows' => [
        [
          'id' => 1,
        ],
        [
          'id' => 2,
        ],
      ],
    ],
  ];
  $migration_1 = $this->migrationPluginManager
    ->createStubMigration($migration_1_definition);
  $migration_2 = $this->migrationPluginManager
    ->createStubMigration($migration_2_definition);
  $migration_1_source = $migration_1
    ->getSourcePlugin();
  $migration_2_source = $migration_2
    ->getSourcePlugin();

  // Verify correct counts when count is refreshed.
  $this
    ->assertSame(1, $migration_1_source
    ->count(TRUE));
  $this
    ->assertSame(2, $migration_2_source
    ->count(TRUE));

  // Verify correct counts are cached.
  $this
    ->assertSame(1, $migration_1_source
    ->count());
  $this
    ->assertSame(2, $migration_2_source
    ->count());

  // Verify the cache keys are different.
  $cache_key_property = new \ReflectionProperty(SourcePluginBase::class, 'cacheKey');
  $cache_key_property
    ->setAccessible(TRUE);
  $this
    ->assertNotEquals($cache_key_property
    ->getValue($migration_1_source), $cache_key_property
    ->getValue($migration_2_source));
}