mirror of
https://github.com/shlinkio/shlink.git
synced 2024-12-15 15:42:06 +03:00
59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
|
<?php
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace ShlinkioTest\Shlink\Common\DbUnit;
|
||
|
|
||
|
use Doctrine\DBAL\Driver\PDOConnection;
|
||
|
use Doctrine\ORM\EntityManagerInterface;
|
||
|
use PHPUnit\DbUnit\Database\Connection as DbConn;
|
||
|
use PHPUnit\DbUnit\DataSet\IDataSet as DataSet;
|
||
|
use PHPUnit\DbUnit\TestCase;
|
||
|
|
||
|
abstract class DatabaseTestCase extends TestCase
|
||
|
{
|
||
|
const ENTITIES_TO_EMPTY = [];
|
||
|
|
||
|
/**
|
||
|
* @var EntityManagerInterface
|
||
|
*/
|
||
|
public static $em;
|
||
|
/**
|
||
|
* @var DbConn
|
||
|
*/
|
||
|
private static $conn;
|
||
|
|
||
|
public function getConnection(): DbConn
|
||
|
{
|
||
|
if (isset(self::$conn)) {
|
||
|
return self::$conn;
|
||
|
}
|
||
|
|
||
|
/** @var PDOConnection $pdo */
|
||
|
$pdo = static::$em->getConnection()->getWrappedConnection();
|
||
|
return self::$conn = $this->createDefaultDBConnection($pdo, static::$em->getConnection()->getDatabase());
|
||
|
}
|
||
|
|
||
|
public function getDataSet(): DataSet
|
||
|
{
|
||
|
return $this->createArrayDataSet([]);
|
||
|
}
|
||
|
|
||
|
protected function getEntityManager(): EntityManagerInterface
|
||
|
{
|
||
|
return static::$em;
|
||
|
}
|
||
|
|
||
|
public function tearDown()
|
||
|
{
|
||
|
// Empty all entity tables defined by this test after each test
|
||
|
foreach (static::ENTITIES_TO_EMPTY as $entityClass) {
|
||
|
$qb = $this->getEntityManager()->createQueryBuilder();
|
||
|
$qb->delete($entityClass, 'x');
|
||
|
$qb->getQuery()->execute();
|
||
|
}
|
||
|
|
||
|
// Clear entity manager
|
||
|
$this->getEntityManager()->clear();
|
||
|
}
|
||
|
}
|