Remove SendingTask usages from AutomaticEmailTest
[MAILPOET-4372]
This commit is contained in:
@@ -47,6 +47,22 @@ class ScheduledTasksRepository extends Repository {
|
|||||||
->getResult();
|
->getResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param NewsletterEntity $newsletter
|
||||||
|
*/
|
||||||
|
public function findOneByNewsletter(NewsletterEntity $newsletter): ?ScheduledTaskEntity {
|
||||||
|
$scheduledTask = $this->doctrineRepository->createQueryBuilder('st')
|
||||||
|
->join(SendingQueueEntity::class, 'sq', Join::WITH, 'st = sq.task')
|
||||||
|
->andWhere('sq.newsletter = :newsletter')
|
||||||
|
->orderBy('sq.updatedAt', 'desc')
|
||||||
|
->setMaxResults(1)
|
||||||
|
->setParameter('newsletter', $newsletter)
|
||||||
|
->getQuery()
|
||||||
|
->getOneOrNullResult();
|
||||||
|
// for phpstan because it detects mixed instead of entity
|
||||||
|
return ($scheduledTask instanceof ScheduledTaskEntity) ? $scheduledTask : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param NewsletterEntity $newsletter
|
* @param NewsletterEntity $newsletter
|
||||||
* @return ScheduledTaskEntity[]
|
* @return ScheduledTaskEntity[]
|
||||||
|
@@ -11,8 +11,8 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
|||||||
use MailPoet\Entities\SendingQueueEntity;
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
|
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
|
||||||
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
|
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
|
||||||
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionFactory;
|
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionFactory;
|
||||||
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
|
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
|
||||||
@@ -39,11 +39,15 @@ class AutomaticEmailTest extends \MailPoetTest {
|
|||||||
/** @var SendingQueuesRepository */
|
/** @var SendingQueuesRepository */
|
||||||
private $sendingQueuesRepository;
|
private $sendingQueuesRepository;
|
||||||
|
|
||||||
|
/** @var ScheduledTasksRepository */
|
||||||
|
private $scheduledTasksRepository;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->automaticEmailScheduler = $this->diContainer->get(AutomaticEmailScheduler::class);
|
$this->automaticEmailScheduler = $this->diContainer->get(AutomaticEmailScheduler::class);
|
||||||
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||||
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
|
$this->scheduledTasksRepository = $this->diContainer->get(ScheduledTasksRepository::class);
|
||||||
|
|
||||||
$this->newsletterFactory = new NewsletterFactory();
|
$this->newsletterFactory = new NewsletterFactory();
|
||||||
$this->newsletter = $this->newsletterFactory->withActiveStatus()->withAutomaticType()->create();
|
$this->newsletter = $this->newsletterFactory->withActiveStatus()->withAutomaticType()->create();
|
||||||
@@ -65,18 +69,21 @@ class AutomaticEmailTest extends \MailPoetTest {
|
|||||||
|
|
||||||
$this->automaticEmailScheduler->createAutomaticEmailSendingTask($newsletter, $subscriber->getId());
|
$this->automaticEmailScheduler->createAutomaticEmailSendingTask($newsletter, $subscriber->getId());
|
||||||
// new scheduled task should be created
|
// new scheduled task should be created
|
||||||
$task = SendingTask::getByNewsletterId($newsletter->getId());
|
$task = $this->scheduledTasksRepository->findOneByNewsletter($newsletter);
|
||||||
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
||||||
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
||||||
expect($task->id)->greaterOrEquals(1);
|
$this->assertInstanceOf(ScheduledTaskEntity::class, $task);
|
||||||
expect($task->priority)->equals(SendingQueueEntity::PRIORITY_MEDIUM);
|
expect($task->getId())->greaterOrEquals(1);
|
||||||
expect($task->status)->equals(SendingQueueEntity::STATUS_SCHEDULED);
|
expect($task->getPriority())->equals(SendingQueueEntity::PRIORITY_MEDIUM);
|
||||||
expect(Carbon::parse($task->scheduledAt)->format('Y-m-d H:i'))
|
expect($task->getStatus())->equals(SendingQueueEntity::STATUS_SCHEDULED);
|
||||||
|
$scheduledAt = $task->getScheduledAt();
|
||||||
|
$this->assertInstanceOf(\DateTimeInterface::class, $scheduledAt);
|
||||||
|
expect(Carbon::parse($scheduledAt)->format('Y-m-d H:i'))
|
||||||
->equals($currentTime->addHours(2)->format('Y-m-d H:i'));
|
->equals($currentTime->addHours(2)->format('Y-m-d H:i'));
|
||||||
// task should have 1 associated user
|
// task should have 1 associated user
|
||||||
$subscribers = $task->subscribers()->findMany();
|
$subscribers = $task->getSubscribers()->toArray();
|
||||||
expect($subscribers)->count(1);
|
expect($subscribers)->count(1);
|
||||||
expect($subscribers[0]->id)->equals($subscriber->getId());
|
expect($subscribers[0]->getSubscriber())->equals($subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItAddsMetaToSendingQueueWhenCreatingAutomaticEmailSendingTask() {
|
public function testItAddsMetaToSendingQueueWhenCreatingAutomaticEmailSendingTask() {
|
||||||
@@ -96,18 +103,21 @@ class AutomaticEmailTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->newslettersRepository->findOneById($this->newsletter->getId());
|
$newsletter = $this->newslettersRepository->findOneById($this->newsletter->getId());
|
||||||
$this->assertInstanceOf(NewsletterEntity::class, $newsletter);
|
$this->assertInstanceOf(NewsletterEntity::class, $newsletter);
|
||||||
|
|
||||||
$this->automaticEmailScheduler->createAutomaticEmailSendingTask($newsletter, $subscriber = null, $meta = null);
|
$this->automaticEmailScheduler->createAutomaticEmailSendingTask($newsletter, null);
|
||||||
// new scheduled task should be created
|
// new scheduled task should be created
|
||||||
$task = SendingTask::getByNewsletterId($newsletter->getId());
|
$task = $this->scheduledTasksRepository->findOneByNewsletter($newsletter);
|
||||||
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
||||||
|
$this->assertInstanceOf(ScheduledTaskEntity::class, $task);
|
||||||
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
||||||
expect($task->id)->greaterOrEquals(1);
|
expect($task->getId())->greaterOrEquals(1);
|
||||||
expect($task->priority)->equals(SendingQueueEntity::PRIORITY_MEDIUM);
|
expect($task->getPriority())->equals(SendingQueueEntity::PRIORITY_MEDIUM);
|
||||||
expect($task->status)->equals(SendingQueueEntity::STATUS_SCHEDULED);
|
expect($task->getStatus())->equals(SendingQueueEntity::STATUS_SCHEDULED);
|
||||||
expect(Carbon::parse($task->scheduledAt)->format('Y-m-d H:i'))
|
$scheduledAt = $task->getScheduledAt();
|
||||||
|
$this->assertInstanceOf(\DateTimeInterface::class, $scheduledAt);
|
||||||
|
expect(Carbon::parse($scheduledAt)->format('Y-m-d H:i'))
|
||||||
->equals($currentTime->addHours(2)->format('Y-m-d H:i'));
|
->equals($currentTime->addHours(2)->format('Y-m-d H:i'));
|
||||||
// task should not have any subscribers
|
// task should not have any subscribers
|
||||||
$subscribers = $task->subscribers()->findMany();
|
$subscribers = $task->getSubscribers();
|
||||||
expect($subscribers)->count(0);
|
expect($subscribers)->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user