function MigrateFileTest::testFiles

Same name in other branches
  1. 8.9.x core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php \Drupal\Tests\file\Kernel\Migrate\d6\MigrateFileTest::testFiles()
  2. 10 core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php \Drupal\Tests\file\Kernel\Migrate\d6\MigrateFileTest::testFiles()
  3. 11.x core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php \Drupal\Tests\file\Kernel\Migrate\d6\MigrateFileTest::testFiles()

Tests the Drupal 6 files to Drupal 8 migration.

File

core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php, line 69

Class

MigrateFileTest
Test file migration.

Namespace

Drupal\Tests\file\Kernel\Migrate\d6

Code

public function testFiles() {
    $this->assertEntity(1, 'Image1.png', 39325, 'public://image-1.png', 'image/png', 1);
    $this->assertEntity(2, 'Image2.jpg', 1831, 'public://image-2.jpg', 'image/jpeg', 1);
    $this->assertEntity(3, 'image-3.jpg', 1831, 'public://image-3.jpg', 'image/jpeg', 1);
    $this->assertEntity(4, 'html-1.txt', 24, 'public://html-1.txt', 'text/plain', 1);
    // Ensure temporary file was not migrated.
    $this->assertNull(File::load(6));
    $map_table = $this->getMigration('d6_file')
        ->getIdMap()
        ->mapTableName();
    $map = \Drupal::database()->select($map_table, 'm')
        ->fields('m', [
        'sourceid1',
        'destid1',
    ])
        ->execute()
        ->fetchAllKeyed();
    $map_expected = [
        // The 4 files from the fixture.
1 => '1',
        2 => '2',
        // The file updated in migrateDumpAlter().
3 => '3',
        5 => '4',
        // The file created in migrateDumpAlter().
7 => '4',
    ];
    $this->assertEquals($map_expected, $map);
    // Test that we can re-import and also test with file_directory_path set.
    \Drupal::database()->truncate($map_table)
        ->execute();
    // Update the file_directory_path.
    Database::getConnection('default', 'migrate')->update('variable')
        ->fields([
        'value' => serialize('files/test'),
    ])
        ->condition('name', 'file_directory_path')
        ->execute();
    $this->executeMigration('d6_file');
    // File 2, when migrated for the second time, is treated as a different file
    // (due to having a different uri this time) and is given fid 6.
    $file = File::load(6);
    $this->assertSame('public://core/tests/fixtures/files/image-2.jpg', $file->getFileUri());
    $map_table = $this->getMigration('d6_file')
        ->getIdMap()
        ->mapTableName();
    $map = \Drupal::database()->select($map_table, 'm')
        ->fields('m', [
        'sourceid1',
        'destid1',
    ])
        ->execute()
        ->fetchAllKeyed();
    $map_expected = [
        // The 4 files from the fixture.
1 => '5',
        2 => '6',
        // The file updated in migrateDumpAlter().
3 => '7',
        5 => '8',
        // The files created in migrateDumpAlter().
7 => '8',
        8 => '8',
    ];
    $this->assertEquals($map_expected, $map);
    // File 6, created in static::migrateDumpAlter(), shares a path with
    // file 4, which means it should be skipped entirely. If it was migrated
    // then it would have an fid of 9.
    $this->assertNull(File::load(9));
    $this->assertCount(8, File::loadMultiple());
}

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