Replace timeListener in tests instead of creating new
[MAILPOET-3031]
This commit is contained in:
@@ -124,7 +124,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
->setPublic(true);
|
->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Doctrine\EventListeners\EmojiEncodingListener::class)->setPublic(true);
|
$container->autowire(\MailPoet\Doctrine\EventListeners\EmojiEncodingListener::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Doctrine\EventListeners\LastSubscribedAtListener::class);
|
$container->autowire(\MailPoet\Doctrine\EventListeners\LastSubscribedAtListener::class);
|
||||||
$container->autowire(\MailPoet\Doctrine\EventListeners\TimestampListener::class);
|
$container->autowire(\MailPoet\Doctrine\EventListeners\TimestampListener::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Doctrine\EventListeners\ValidationListener::class);
|
$container->autowire(\MailPoet\Doctrine\EventListeners\ValidationListener::class);
|
||||||
$container->autowire(\MailPoet\Doctrine\Validator\ValidatorFactory::class);
|
$container->autowire(\MailPoet\Doctrine\Validator\ValidatorFactory::class);
|
||||||
$container->autowire(\MailPoetVendor\Symfony\Component\Validator\Validator\ValidatorInterface::class)
|
$container->autowire(\MailPoetVendor\Symfony\Component\Validator\Validator\ValidatorInterface::class)
|
||||||
|
@@ -14,6 +14,7 @@ use MailPoet\WP\Emoji;
|
|||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
use MailPoetVendor\Doctrine\Common\Cache\ArrayCache;
|
use MailPoetVendor\Doctrine\Common\Cache\ArrayCache;
|
||||||
|
use MailPoetVendor\Doctrine\ORM\Events;
|
||||||
|
|
||||||
require_once __DIR__ . '/TimestampEntity.php';
|
require_once __DIR__ . '/TimestampEntity.php';
|
||||||
|
|
||||||
@@ -34,7 +35,10 @@ class TimestampListenerTest extends \MailPoetTest {
|
|||||||
'currentTime' => $timestamp,
|
'currentTime' => $timestamp,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->entityManager = $this->createEntityManager();
|
$newTimestampListener = new TimestampListener($this->wp);
|
||||||
|
$originalListener = $this->diContainer->get(TimestampListener::class);
|
||||||
|
$this->replaceListeners($originalListener, $newTimestampListener);
|
||||||
|
|
||||||
$this->tableName = $this->entityManager->getClassMetadata(TimestampEntity::class)->getTableName();
|
$this->tableName = $this->entityManager->getClassMetadata(TimestampEntity::class)->getTableName();
|
||||||
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->tableName");
|
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->tableName");
|
||||||
$this->connection->executeUpdate("
|
$this->connection->executeUpdate("
|
||||||
@@ -82,28 +86,19 @@ class TimestampListenerTest extends \MailPoetTest {
|
|||||||
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->tableName");
|
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->tableName");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createEntityManager() {
|
/**
|
||||||
$annotationReaderProvider = new AnnotationReaderProvider();
|
* We have to replace event listeners since EventManager
|
||||||
$configurationFactory = new ConfigurationFactory($annotationReaderProvider, false);
|
* is shared for all entity managers using same DB connection
|
||||||
$configuration = $configurationFactory->createConfiguration();
|
*/
|
||||||
|
private function replaceListeners($original, $replacement) {
|
||||||
$metadataDriver = $configuration->newDefaultAnnotationDriver([__DIR__], false);
|
$this->entityManager->getEventManager()->removeEventListener(
|
||||||
$configuration->setMetadataDriverImpl($metadataDriver);
|
[Events::prePersist, Events::preUpdate],
|
||||||
$configuration->setMetadataCacheImpl(new ArrayCache());
|
$original
|
||||||
|
);
|
||||||
$validatorFactory = new ValidatorFactory($annotationReaderProvider);
|
|
||||||
$timestampListener = new TimestampListener($this->wp);
|
$this->entityManager->getEventManager()->addEventListener(
|
||||||
$validationListener = new ValidationListener($validatorFactory->createValidator());
|
[Events::prePersist, Events::preUpdate],
|
||||||
$emojiEncodingListener = new EmojiEncodingListener(new Emoji($this->wp));
|
$replacement
|
||||||
$lastSubscribedAtListener = new LastSubscribedAtListener($this->wp);
|
|
||||||
$entityManagerFactory = new EntityManagerFactory(
|
|
||||||
$this->connection,
|
|
||||||
$configuration,
|
|
||||||
$timestampListener,
|
|
||||||
$validationListener,
|
|
||||||
$emojiEncodingListener,
|
|
||||||
$lastSubscribedAtListener
|
|
||||||
);
|
);
|
||||||
return $entityManagerFactory->createEntityManager();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user