<?php
declare(strict_types=1);

namespace ShlinkioTest\Shlink\Common\DbTest;

use Doctrine\ORM\EntityManagerInterface;
use PHPUnit\Framework\TestCase;

abstract class DatabaseTestCase extends TestCase
{
    protected const ENTITIES_TO_EMPTY = [];

    /** @var EntityManagerInterface */
    private static $em;

    public static function setEntityManager(EntityManagerInterface $em): void
    {
        self::$em = $em;
    }

    protected function getEntityManager(): EntityManagerInterface
    {
        return self::$em;
    }

    public function tearDown(): void
    {
        foreach (static::ENTITIES_TO_EMPTY as $entityClass) {
            $qb = $this->getEntityManager()->createQueryBuilder();
            $qb->delete($entityClass, 'x');
            $qb->getQuery()->execute();
        }

        $this->getEntityManager()->clear();
    }
}