<?php
declare(strict_types=1);
namespace App\Tests\Support\Helper;
use Codeception\Lib\Interfaces\DependsOnModule;
use Codeception\Module;
use Codeception\Module\Symfony;
use Codeception\TestInterface;
use Doctrine\ORM\EntityManager;
use Doctrine\Persistence\ManagerRegistry;
class EntityManagerReset extends Module implements DependsOnModule
{
private Symfony $symfony;
protected string $dependencyMessage = <<<EOF
Set Symfony as dependent module:
modules:
enabled:
- \App\Tests\Support\Helper\EntityManagerReset:
depends: Symfony
EOF;
protected array $config = [
'depends' => null,
];
public function _depends(): array
{
return [Symfony::class => $this->dependencyMessage];
}
public function _inject(Symfony $symfony): void
{
$this->symfony = $symfony;
}
public function _before(TestInterface $test): void
{
parent::_before($test);
$doctrine = $this->symfony->grabService('doctrine');
$entityManager = $doctrine->getManager();
if (!$entityManager->isOpen()) {
$doctrine->resetManager();
}
}
}