function MigrateEntityContentBaseTest::testEmptyDestinations

Same name in other branches
  1. 8.9.x core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php \Drupal\Tests\migrate\Kernel\MigrateEntityContentBaseTest::testEmptyDestinations()
  2. 10 core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php \Drupal\Tests\migrate\Kernel\MigrateEntityContentBaseTest::testEmptyDestinations()
  3. 11.x core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php \Drupal\Tests\migrate\Kernel\MigrateEntityContentBaseTest::testEmptyDestinations()

Tests empty destinations.

File

core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php, line 223

Class

MigrateEntityContentBaseTest
Tests the EntityContentBase destination.

Namespace

Drupal\Tests\migrate\Kernel

Code

public function testEmptyDestinations() {
    $this->enableModules([
        'migrate_entity_test',
    ]);
    $this->installEntitySchema('migrate_string_id_entity_test');
    $definition = [
        'source' => [
            'plugin' => 'embedded_data',
            'data_rows' => [
                [
                    'id' => 123,
                    'version' => 'foo',
                ],
                // This integer needs an 'int' schema with 'big' size. If 'destid1'
                // is not correctly taking the definition from the destination entity
                // type, the import will fail with an SQL exception.
[
                    'id' => 123456789012,
                    'version' => 'bar',
                ],
            ],
            'ids' => [
                'id' => [
                    'type' => 'integer',
                    'size' => 'big',
                ],
                'version' => [
                    'type' => 'string',
                ],
            ],
            'constants' => [
                'null' => NULL,
            ],
        ],
        'process' => [
            'id' => 'id',
            'version' => 'version',
        ],
        'destination' => [
            'plugin' => 'entity:migrate_string_id_entity_test',
        ],
    ];
    $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition);
    $executable = new MigrateExecutable($migration);
    $executable->import();
    
    /** @var \Drupal\migrate_entity_test\Entity\StringIdEntityTest $entity */
    $entity = StringIdEntityTest::load('123');
    $this->assertSame('foo', $entity->version->value);
    $entity = StringIdEntityTest::load('123456789012');
    $this->assertSame('bar', $entity->version->value);
    // Rerun the migration forcing the version to NULL.
    $definition['process'] = [
        'id' => 'id',
        'version' => 'constants/null',
    ];
    $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition);
    $executable = new MigrateExecutable($migration);
    $executable->import();
    
    /** @var \Drupal\migrate_entity_test\Entity\StringIdEntityTest $entity */
    $entity = StringIdEntityTest::load('123');
    $this->assertNull($entity->version->value);
    $entity = StringIdEntityTest::load('123456789012');
    $this->assertNull($entity->version->value);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.