function FilePathTest::testFilePath

Same name in other branches
  1. 9 core/modules/migrate_drupal_ui/tests/src/Functional/d7/FilePathTest.php \Drupal\Tests\migrate_drupal_ui\Functional\d7\FilePathTest::testFilePath()
  2. 11.x core/modules/migrate_drupal_ui/tests/src/Functional/d7/FilePathTest.php \Drupal\Tests\migrate_drupal_ui\Functional\d7\FilePathTest::testFilePath()

Executes all steps of migrations upgrade.

@dataProvider providerTestFilePath

Parameters

string $file_private_path: The source database file_private_path value.

string $file_public_path: The source database file_public_path value.

string $file_temporary_path: The source database file_temporary_path value.

string $private: The path to the source private files.

string $public: The path to the source public files.

string $temporary: The path to the source temporary files.

File

core/modules/migrate_drupal_ui/tests/src/Functional/d7/FilePathTest.php, line 97

Class

FilePathTest
Tests the Drupal 7 public and private file migrations.

Namespace

Drupal\Tests\migrate_drupal_ui\Functional\d7

Code

public function testFilePath(string $file_private_path, string $file_public_path, string $file_temporary_path, string $private, string $public, string $temporary) : void {
    $this->sourceFileScheme['private'] = $file_private_path;
    $this->sourceFileScheme['public'] = $file_public_path;
    $this->sourceFileScheme['temporary'] = $file_temporary_path;
    $this->localDirectory['private'] = $private;
    $this->localDirectory['public'] = $public;
    $this->localDirectory['temporary'] = $temporary;
    // Create the source files.
    $this->makeFiles();
    // Set the source db variables.
    $this->sourceDatabase
        ->update('variable')
        ->fields([
        'value' => serialize($file_private_path),
    ])
        ->condition('name', 'file_private_path')
        ->execute();
    $this->sourceDatabase
        ->update('variable')
        ->fields([
        'value' => serialize($file_public_path),
    ])
        ->condition('name', 'file_public_path')
        ->execute();
    $this->sourceDatabase
        ->update('variable')
        ->fields([
        'value' => serialize($file_temporary_path),
    ])
        ->condition('name', 'file_temporary_path')
        ->execute();
    $connection_options = $this->sourceDatabase
        ->getConnectionOptions();
    $driver = $connection_options['driver'];
    // Use the driver connection form to get the correct options out of the
    // database settings. This supports all of the databases we test against.
    $drivers = Database::getDriverList()->getInstallableList();
    $form = $drivers[$driver]->getInstallTasks()
        ->getFormOptions($connection_options);
    $connection_options = array_intersect_key($connection_options, $form + $form['advanced_options']);
    // Remove isolation_level since that option is not configurable in the UI.
    unset($connection_options['isolation_level']);
    $edit = [
        $driver => $connection_options,
        'version' => '7',
    ];
    if (count($drivers) !== 1) {
        $edit['driver'] = $driver;
    }
    // Set the public and private base paths for the Credential Form.
    $edit['source_private_file_path'] = $this->fs
        ->realpath($this->getSourcePath('private'));
    $edit['source_base_path'] = $this->fs
        ->realpath($this->getSourcePath('public'));
    $edits = $this->translatePostValues($edit);
    // Start the upgrade.
    $this->drupalGet('/upgrade');
    $this->submitForm([], 'Continue');
    $this->submitForm($edits, 'Review upgrade');
    // The migrations are now in store - remove all but the file migrations.
    $store = \Drupal::service('tempstore.private')->get('migrate_drupal_ui');
    $migration_array = array_intersect_key($store->get('migrations'), array_flip([
        'd7_file',
        'd7_file_private',
    ]));
    $store->set('migrations', $migration_array);
    // Perform the migrations.
    $this->submitForm([], 'Perform upgrade');
    $this->resetAll();
    $this->assertFileMigrations();
}

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