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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\ORM\Mapping\Symfony;
use Doctrine\Persistence\Mapping\Driver\FileDriver;
use Doctrine\Persistence\Mapping\MappingException;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
use function mkdir;
use function rmdir;
use function sys_get_temp_dir;
use function touch;
use function unlink;
#[Group('DDC-1418')]
abstract class DriverTestCase extends TestCase
{
private string $dir;
public function testFindMappingFile(): void
{
$driver = $this->getDriver(
[
'MyNamespace\MySubnamespace\EntityFoo' => 'foo',
'MyNamespace\MySubnamespace\Entity' => $this->dir,
],
);
touch($filename = $this->dir . '/Foo' . $this->getFileExtension());
self::assertEquals($filename, $driver->getLocator()->findMappingFile('MyNamespace\MySubnamespace\Entity\Foo'));
}
public function testFindMappingFileInSubnamespace(): void
{
$driver = $this->getDriver(
[
'MyNamespace\MySubnamespace\Entity' => $this->dir,
],
);
touch($filename = $this->dir . '/Foo.Bar' . $this->getFileExtension());
self::assertEquals($filename, $driver->getLocator()->findMappingFile('MyNamespace\MySubnamespace\Entity\Foo\Bar'));
}
public function testFindMappingFileNamespacedFoundFileNotFound(): void
{
$this->expectException(MappingException::class);
$this->expectExceptionMessage('No mapping file found named');
$driver = $this->getDriver(
[
'MyNamespace\MySubnamespace\Entity' => $this->dir,
],
);
$driver->getLocator()->findMappingFile('MyNamespace\MySubnamespace\Entity\Foo');
}
public function testFindMappingNamespaceNotFound(): void
{
$this->expectException(MappingException::class);
$this->expectExceptionMessage("No mapping file found named 'Foo" . $this->getFileExtension() . "' for class 'MyOtherNamespace\MySubnamespace\Entity\Foo'.");
$driver = $this->getDriver(
[
'MyNamespace\MySubnamespace\Entity' => $this->dir,
],
);
$driver->getLocator()->findMappingFile('MyOtherNamespace\MySubnamespace\Entity\Foo');
}
protected function setUp(): void
{
$this->dir = sys_get_temp_dir() . '/abstract_driver_test';
@mkdir($this->dir, 0777, true);
}
protected function tearDown(): void
{
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->dir), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $path) {
if ($path->isDir()) {
@rmdir((string) $path);
} else {
@unlink((string) $path);
}
}
@rmdir($this->dir);
}
abstract protected function getFileExtension(): string;
abstract protected function getDriver(array $paths = []): FileDriver;
}
|