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