NodeMigrationTypePluginAlterTest.php

Same filename in other branches
  1. 9 core/modules/migrate_drupal/tests/src/Kernel/NodeMigrationTypePluginAlterTest.php
  2. 8.9.x core/modules/migrate_drupal/tests/src/Kernel/NodeMigrationTypePluginAlterTest.php
  3. 10 core/modules/migrate_drupal/tests/src/Kernel/NodeMigrationTypePluginAlterTest.php

Namespace

Drupal\Tests\migrate_drupal\Kernel

File

core/modules/migrate_drupal/tests/src/Kernel/NodeMigrationTypePluginAlterTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\migrate_drupal\Kernel;

use Drupal\migrate_drupal\NodeMigrateType;
use Drupal\Tests\migrate\Kernel\MigrateTestBase;
use Drupal\Tests\migrate_drupal\Traits\NodeMigrateTypeTestTrait;

/**
 * Tests the assignment of the node migration type in migrations_plugin_alter.
 *
 * @group migrate_drupal
 */
class NodeMigrationTypePluginAlterTest extends MigrateTestBase {
    use NodeMigrateTypeTestTrait;
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'migrate_drupal',
        'node',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $this->setupDb();
    }
    
    /**
     * Tests the assignment of the node migration type.
     *
     * @param string $type
     *   The type of node migration, 'classic' or 'complete'.
     * @param array $migration_definitions
     *   An array of migration definitions.
     * @param array $expected
     *   The expected results.
     *
     * @dataProvider providerMigrationPluginAlter
     *
     * @throws \Exception
     */
    public function testMigrationPluginAlter($type, array $migration_definitions, array $expected) : void {
        $this->makeNodeMigrateMapTable($type, '7');
        migrate_drupal_migration_plugins_alter($migration_definitions);
        $this->assertSame($expected, $migration_definitions);
    }
    
    /**
     * Data provider for testMigrationPluginAlter().
     */
    public static function providerMigrationPluginAlter() {
        $tests = [];
        $migrations = [
            // The 'system_site' migration is needed to get the legacy Drupal version.
'system_site' => [
                'id' => 'system_site',
                'source' => [
                    'plugin' => 'variable',
                    'variables' => [
                        'site_name',
                        'site_mail',
                    ],
                    'source_module' => 'system',
                ],
                'process' => [],
            ],
            'no_dependencies_not_altered' => [
                'id' => 'no_dependencies_not_altered',
                'no_dependencies' => 'test',
                'process' => [
                    'nid' => 'nid',
                ],
            ],
            'dependencies_altered_if_complete' => [
                'id' => 'test',
                'migration_dependencies' => [
                    'required' => [
                        'd7_node',
                    ],
                    'optional' => [
                        'd7_node_translation',
                    ],
                ],
            ],
            'dependencies_not_altered' => [
                'id' => 'd7_node',
                'migration_dependencies' => [
                    'required' => [
                        'd7_node',
                    ],
                    'optional' => [
                        'd7_node_translation',
                    ],
                ],
            ],
        ];
        // Test migrations are not altered when classic node migrations is in use.
        $tests[0]['type'] = NodeMigrateType::NODE_MIGRATE_TYPE_CLASSIC;
        $tests[0]['migration_definitions'] = $migrations;
        $tests[0]['expected'] = $tests[0]['migration_definitions'];
        // Test migrations are altered when complete node migrations is in use.
        $tests[1] = $tests[0];
        $tests[1]['type'] = NodeMigrateType::NODE_MIGRATE_TYPE_COMPLETE;
        $tests[1]['expected']['dependencies_altered_if_complete']['migration_dependencies'] = [
            'required' => [
                'd7_node_complete',
            ],
            'optional' => [
                'd7_node_complete',
            ],
        ];
        return $tests;
    }
    
    /**
     * Creates data in the source database.
     */
    protected function setupDb() : void {
        $this->sourceDatabase
            ->schema()
            ->createTable('system', [
            'fields' => [
                'name' => [
                    'type' => 'varchar',
                    'not null' => TRUE,
                    'length' => '255',
                    'default' => '',
                ],
                'type' => [
                    'type' => 'varchar',
                    'not null' => TRUE,
                    'length' => '255',
                    'default' => '',
                ],
                'status' => [
                    'type' => 'int',
                    'not null' => TRUE,
                    'size' => 'normal',
                    'default' => '0',
                ],
                'schema_version' => [
                    'type' => 'int',
                    'not null' => TRUE,
                    'size' => 'normal',
                    'default' => '-1',
                ],
            ],
        ]);
        $this->sourceDatabase
            ->insert('system')
            ->fields([
            'name',
            'type',
            'status',
            'schema_version',
        ])
            ->values([
            'name' => 'system',
            'type' => 'module',
            'status' => '1',
            'schema_version' => '7001',
        ])
            ->execute();
    }

}

Classes

Title Deprecated Summary
NodeMigrationTypePluginAlterTest Tests the assignment of the node migration type in migrations_plugin_alter.

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