1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\ORM\Functional;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\Driver\DatabaseDriver;
use Doctrine\Tests\OrmFunctionalTestCase;
use function array_keys;
use function array_map;
use function count;
use function implode;
use function in_array;
use function strtolower;
/**
* Common BaseClass for DatabaseDriver Tests
*/
abstract class DatabaseDriverTestCase extends OrmFunctionalTestCase
{
/** @phpstan-return array<string, ClassMetadata> */
protected function convertToClassMetadata(array $entityTables, array $manyTables = []): array
{
$sm = $this->createSchemaManager();
$driver = new DatabaseDriver($sm);
$driver->setTables($entityTables, $manyTables);
$metadatas = [];
foreach ($driver->getAllClassNames() as $className) {
$class = new ClassMetadata($className);
$driver->loadMetadataForClass($className, $class);
$metadatas[$className] = $class;
}
return $metadatas;
}
/**
* @param string[] $classNames
*
* @return array<class-string, ClassMetadata>
*/
protected function extractClassMetadata(array $classNames): array
{
$classNames = array_map('strtolower', $classNames);
$metadatas = [];
$sm = $this->createSchemaManager();
$driver = new DatabaseDriver($sm);
foreach ($driver->getAllClassNames() as $className) {
if (! in_array(strtolower($className), $classNames, true)) {
continue;
}
$class = new ClassMetadata($className);
$driver->loadMetadataForClass($className, $class);
$metadatas[$className] = $class;
}
if (count($metadatas) !== count($classNames)) {
self::fail("Have not found all classes matching the names '" . implode(', ', $classNames) . "' only tables " . implode(', ', array_keys($metadatas)));
}
return $metadatas;
}
}
|