Update UnsubscribeTokens to use DI
MAILPOET-5710
This commit is contained in:
committed by
Aschepikov
parent
005e73aee5
commit
1b31ad11d4
@@ -1,13 +1,13 @@
|
||||
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\Cron\Workers;
|
||||
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\InvalidStateException;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
@@ -16,6 +16,22 @@ class UnsubscribeTokens extends SimpleWorker {
|
||||
const BATCH_SIZE = 1000;
|
||||
const AUTOMATIC_SCHEDULING = false;
|
||||
|
||||
/** @var Security */
|
||||
private $security;
|
||||
|
||||
/** @var EntityManager */
|
||||
private $entityManager;
|
||||
|
||||
public function __construct(
|
||||
WPFunctions $wp,
|
||||
Security $security,
|
||||
EntityManager $entityManager
|
||||
) {
|
||||
parent::__construct($wp);
|
||||
$this->security = $security;
|
||||
$this->entityManager = $entityManager;
|
||||
}
|
||||
|
||||
public function processTaskStrategy(ScheduledTaskEntity $task, $timer) {
|
||||
$meta = $task->getMeta();
|
||||
|
||||
@@ -48,10 +64,7 @@ class UnsubscribeTokens extends SimpleWorker {
|
||||
}
|
||||
|
||||
private function addTokens($entityClass, &$lastProcessedId = 0) {
|
||||
$security = ContainerWrapper::getInstance()->get(Security::class);
|
||||
$entityManager = ContainerWrapper::getInstance()->get(EntityManager::class);
|
||||
|
||||
$queryBuilder = $entityManager->createQueryBuilder();
|
||||
$queryBuilder = $this->entityManager->createQueryBuilder();
|
||||
|
||||
$entities = $queryBuilder
|
||||
->select('PARTIAL e.{id}')
|
||||
@@ -70,11 +83,11 @@ class UnsubscribeTokens extends SimpleWorker {
|
||||
|
||||
foreach ($entities as $entity) {
|
||||
$lastProcessedId = $entity->getId();
|
||||
$entity->setUnsubscribeToken($security->generateUnsubscribeTokenByEntity($entity));
|
||||
$entityManager->persist($entity);
|
||||
$entity->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($entity));
|
||||
$this->entityManager->persist($entity);
|
||||
}
|
||||
|
||||
$entityManager->flush();
|
||||
$this->entityManager->flush();
|
||||
|
||||
return count($entities);
|
||||
}
|
||||
|
@@ -32,10 +32,14 @@ class UnsubscribeTokensTest extends \MailPoetTest {
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
/** @var UnsubscribeTokens */
|
||||
private $worker;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
|
||||
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||
$this->worker = $this->diContainer->get(UnsubscribeTokens::class);
|
||||
|
||||
$this->subscriberWithToken = (new SubscriberFactory())
|
||||
->withEmail('subscriber1@test.com')
|
||||
@@ -62,8 +66,7 @@ class UnsubscribeTokensTest extends \MailPoetTest {
|
||||
|
||||
public function testItAddsTokensToSubscribers() {
|
||||
verify($this->subscriberWithoutToken->getUnsubscribeToken())->null();
|
||||
$worker = new UnsubscribeTokens();
|
||||
$worker->processTaskStrategy(new ScheduledTaskEntity(), microtime(true));
|
||||
$this->worker->processTaskStrategy(new ScheduledTaskEntity(), microtime(true));
|
||||
$subscriberWithToken = $this->subscribersRepository->findOneById($this->subscriberWithToken->getId());
|
||||
$this->assertInstanceOf(SubscriberEntity::class, $subscriberWithToken);
|
||||
$subscriberWithoutToken = $this->subscribersRepository->findOneById($this->subscriberWithoutToken->getId());
|
||||
@@ -74,8 +77,7 @@ class UnsubscribeTokensTest extends \MailPoetTest {
|
||||
|
||||
public function testItAddsTokensToNewsletters() {
|
||||
verify($this->newsletterWithoutToken->getUnsubscribeToken())->null();
|
||||
$worker = new UnsubscribeTokens();
|
||||
$worker->processTaskStrategy(new ScheduledTaskEntity(), microtime(true));
|
||||
$this->worker->processTaskStrategy(new ScheduledTaskEntity(), microtime(true));
|
||||
$newsletterWithToken = $this->newslettersRepository->findOneById($this->newsletterWithToken->getId());
|
||||
$newsletterWithoutToken = $this->newslettersRepository->findOneById($this->newsletterWithoutToken->getId());
|
||||
$this->assertInstanceOf(NewsletterEntity::class, $newsletterWithToken);
|
||||
|
Reference in New Issue
Block a user