X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ffile%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd7%2FFileMigrationSetupTrait.php;fp=web%2Fcore%2Fmodules%2Ffile%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd7%2FFileMigrationSetupTrait.php;h=9206153d5b8fa05439b71302dad3b367c57c5d60;hp=01fc464cd893923810997e9e3925e346cc9db733;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/web/core/modules/file/tests/src/Kernel/Migrate/d7/FileMigrationSetupTrait.php b/web/core/modules/file/tests/src/Kernel/Migrate/d7/FileMigrationSetupTrait.php index 01fc464cd..9206153d5 100644 --- a/web/core/modules/file/tests/src/Kernel/Migrate/d7/FileMigrationSetupTrait.php +++ b/web/core/modules/file/tests/src/Kernel/Migrate/d7/FileMigrationSetupTrait.php @@ -2,36 +2,80 @@ namespace Drupal\Tests\file\Kernel\Migrate\d7; -use Drupal\Core\StreamWrapper\PublicStream; -use Drupal\Core\StreamWrapper\StreamWrapperInterface; +use Drupal\file\Entity\File; +use Drupal\file\FileInterface; /** * A trait to setup the file migration. */ trait FileMigrationSetupTrait { + /** + * Returns information about the file to be migrated. + * + * @return array + * Array with keys 'path', 'size', 'base_path', and 'plugin_id'. + */ + abstract protected function getFileMigrationInfo(); + /** * Prepare the file migration for running. */ protected function fileMigrationSetup() { - $this->installSchema('file', ['file_usage']); $this->installEntitySchema('file'); - $this->container->get('stream_wrapper_manager')->registerWrapper('public', PublicStream::class, StreamWrapperInterface::NORMAL); + $this->installSchema('file', ['file_usage']); - $fs = \Drupal::service('file_system'); - // The public file directory active during the test will serve as the - // root of the fictional Drupal 7 site we're migrating. - $fs->mkdir('public://sites/default/files', NULL, TRUE); - file_put_contents('public://sites/default/files/cube.jpeg', str_repeat('*', 3620)); + $info = $this->getFileMigrationInfo(); + $fs = $this->container->get('file_system'); + // Ensure that the files directory exists. + $fs->mkdir(dirname($info['path']), NULL, TRUE); + // Put test file in the source directory. + file_put_contents($info['path'], str_repeat('*', $info['size'])); /** @var \Drupal\migrate\Plugin\Migration $migration */ - $migration = $this->getMigration('d7_file'); + $migration = $this->getMigration($info['plugin_id']); // Set the source plugin's source_base_path configuration value, which // would normally be set by the user running the migration. $source = $migration->getSourceConfiguration(); - $source['constants']['source_base_path'] = $fs->realpath('public://'); + $source['constants']['source_base_path'] = $fs->realpath($info['base_path']); $migration->set('source', $source); $this->executeMigration($migration); } + /** + * Tests a single file entity. + * + * @param int $id + * The file ID. + * @param string $name + * The expected file name. + * @param string $uri + * The expected URI. + * @param string $mime + * The expected MIME type. + * @param string $size + * The expected file size. + * @param string $created + * The expected creation time. + * @param string $changed + * The expected modification time. + * @param string $uid + * The expected owner ID. + */ + protected function assertEntity($id, $name, $uri, $mime, $size, $created, $changed, $uid) { + /** @var \Drupal\file\FileInterface $file */ + $file = File::load($id); + $this->assertInstanceOf(FileInterface::class, $file); + $this->assertSame($name, $file->getFilename()); + $this->assertSame($uri, $file->getFileUri()); + $this->assertFileExists($uri); + $this->assertSame($mime, $file->getMimeType()); + $this->assertSame($size, $file->getSize()); + // isPermanent(), isTemporary(), etc. are determined by the status column. + $this->assertTrue($file->isPermanent()); + $this->assertSame($created, $file->getCreatedTime()); + $this->assertSame($changed, $file->getChangedTime()); + $this->assertSame($uid, $file->getOwnerId()); + } + }