Files
piratepoet/mailpoet/tests/integration/AdminPages/HelpTest.php
Rostislav Wolny f3d6813d97 Load data inconsistencies async from API
[MAILPOET-6219]
2024-09-11 15:19:35 +02:00

96 lines
3.3 KiB
PHP

<?php declare(strict_types = 1);
namespace integration\AdminPages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\AdminPages\Pages\Help;
use MailPoet\Cron\CronHelper;
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Url;
use MailPoet\Services\Bridge;
use MailPoet\SystemReport\SystemReportCollector;
use MailPoet\Test\DataFactories\Newsletter;
use MailPoet\Test\DataFactories\ScheduledTask as ScheduledTaskFactory;
use MailPoetVendor\Carbon\Carbon;
class HelpTest extends \MailPoetTest {
/** @var ScheduledTaskFactory */
private $scheduledTaskFactory;
/*** @var SendingQueuesRepository */
private $sendingQueuesRepository;
/**
* @var Help
*/
private $helpPage;
public function _before() {
parent::_before();
$this->scheduledTaskFactory = new ScheduledTaskFactory();
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
$this->helpPage = new Help(
$this->diContainer->get(PageRenderer::class),
$this->diContainer->get(CronHelper::class),
$this->diContainer->get(SystemReportCollector::class),
$this->diContainer->get(Bridge::class),
$this->diContainer->get(ScheduledTasksRepository::class),
$this->sendingQueuesRepository,
$this->diContainer->get(Url::class)
);
}
public function testItFetchesNewsletterDataForSendingTasks() {
$task = $this->scheduledTaskFactory->create(
SendingQueue::TASK_TYPE,
ScheduledTaskEntity::STATUS_SCHEDULED,
Carbon::now()->addDay()
);
$newsletter = (new Newsletter())
->withSubject('Rendered Subject')
->create();
$queue = $this->createNewSendingQueue($task, $newsletter);
$data = $this->helpPage->buildTaskData($task);
verify($data['newsletter']['newsletterId'])->equals($newsletter->getId());
verify($data['newsletter']['queueId'])->equals($queue->getId());
verify($data['newsletter']['subject'])->equals('Rendered Subject');
verify($data['newsletter']['previewUrl'])->notEmpty();
}
public function testItDoesNotFailForSendingTaskWithMissingNewsletterInconsistentData() {
$task = $this->scheduledTaskFactory->create(
SendingQueue::TASK_TYPE,
ScheduledTaskEntity::STATUS_SCHEDULED,
Carbon::now()->addDay()
);
$data = $this->helpPage->buildTaskData($task);
verify($data['newsletter']['newsletterId'])->equals(null);
verify($data['newsletter']['queueId'])->equals(null);
verify($data['newsletter']['subject'])->equals(null);
verify($data['newsletter']['previewUrl'])->equals(null);
}
private function createNewSendingQueue(?ScheduledTaskEntity $task, ?NewsletterEntity $newsletter, $renderedSubject = null): SendingQueueEntity {
$queue = new SendingQueueEntity();
if ($newsletter instanceof NewsletterEntity) {
$queue->setNewsletter($newsletter);
}
if ($task instanceof ScheduledTaskEntity) {
$queue->setTask($task);
}
$queue->setNewsletterRenderedSubject($renderedSubject);
$this->entityManager->persist($queue);
$this->entityManager->flush();
return $queue;
}
}