Add listeners cleanup
[MAILPOET-3833]
This commit is contained in:
@@ -51,6 +51,7 @@ class EntityManagerFactory {
|
||||
|
||||
public function createEntityManager(): EntityManager {
|
||||
$entityManager = EntityManager::create($this->connection, $this->configuration);
|
||||
$this->cleanupListeners($entityManager);
|
||||
$this->setupListeners($entityManager);
|
||||
if (
|
||||
class_exists(Debugger::class)
|
||||
@@ -61,6 +62,22 @@ class EntityManagerFactory {
|
||||
return $entityManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* We sometimes work with more EntityManager in tests, and the behavior could be inconsistent with multiple listeners
|
||||
*/
|
||||
private function cleanupListeners(EntityManager $entityManager) {
|
||||
$eventManager = $entityManager->getEventManager();
|
||||
foreach ($eventManager->getListeners() as $event => $listeners) {
|
||||
if (!is_array($listeners)) {
|
||||
$eventManager->removeEventListener($event, $listeners);
|
||||
continue;
|
||||
}
|
||||
foreach ($listeners as $listener) {
|
||||
$eventManager->removeEventListener($event, $listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function setupListeners(EntityManager $entityManager) {
|
||||
$entityManager->getEventManager()->addEventListener(
|
||||
[Events::prePersist, Events::preUpdate],
|
||||
|
Reference in New Issue
Block a user