<?php
declare(strict_types=1);

namespace ShlinkioTest\Shlink\Common\DbUnit;

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

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

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

    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();
    }
}