Replace SubscriberSegment model with Doctrine in SendingQueueTest

[MAILPOET-5737]
This commit is contained in:
Rodrigo Primo
2023-11-22 11:42:23 -03:00
committed by Aschepikov
parent fb1feca7de
commit abd19a6e6e

View File

@@ -24,6 +24,7 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Logging\LoggerFactory; use MailPoet\Logging\LoggerFactory;
use MailPoet\Mailer\MailerError; use MailPoet\Mailer\MailerError;
use MailPoet\Mailer\MailerFactory; use MailPoet\Mailer\MailerFactory;
@@ -35,7 +36,6 @@ use MailPoet\Models\Segment;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\StatisticsNewsletters; use MailPoet\Models\StatisticsNewsletters;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\Links\Links;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository; use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
@@ -48,6 +48,7 @@ use MailPoet\Segments\SubscribersFinder;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\TrackingConfig; use MailPoet\Settings\TrackingConfig;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscribers\Source;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\Test\DataFactories\ScheduledTask as ScheduledTaskFactory; use MailPoet\Test\DataFactories\ScheduledTask as ScheduledTaskFactory;
@@ -108,6 +109,9 @@ class SendingQueueTest extends \MailPoetTest {
/** NewsletterEntity */ /** NewsletterEntity */
private $newsletterEntity; private $newsletterEntity;
/** @var SegmentEntity */
private $segmentEntity;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$wpUsers = get_users(); $wpUsers = get_users();
@@ -118,18 +122,16 @@ class SendingQueueTest extends \MailPoetTest {
$this->wp = $this->diContainer->get(WPFunctions::class); $this->wp = $this->diContainer->get(WPFunctions::class);
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class); $this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
$this->scheduledTaskSubscribersRepository = $this->diContainer->get(ScheduledTaskSubscribersRepository::class); $this->scheduledTaskSubscribersRepository = $this->diContainer->get(ScheduledTaskSubscribersRepository::class);
$this->subscriber = $this->createSubscriber('john@doe.com', 'John', 'Doe'); $this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
/** @var Segment $segment */ /** @var Segment $segment */
$segment = Segment::create(); $this->segment = Segment::create();
$this->segment = $segment;
$this->segment->name = 'segment'; $this->segment->name = 'segment';
$this->segment->save(); $this->segment->save();
/** @var SubscriberSegment $subscriberSegment */ $segmentEntity = $this->segmentsRepository->findOneById($this->segment->id);
$subscriberSegment = SubscriberSegment::create(); $this->assertInstanceOf(SegmentEntity::class, $segmentEntity);
$this->subscriberSegment = $subscriberSegment; $this->segmentEntity = $segmentEntity;
$this->subscriberSegment->subscriberId = (int)$this->subscriber->getId(); $this->subscriber = $this->createSubscriber('john@doe.com', 'John', 'Doe', [$this->segmentEntity]);
$this->subscriberSegment->segmentId = (int)$this->segment->id;
$this->subscriberSegment->save();
/** @var Newsletter $newsletter */ /** @var Newsletter $newsletter */
$newsletter = Newsletter::create(); $newsletter = Newsletter::create();
@@ -174,7 +176,6 @@ class SendingQueueTest extends \MailPoetTest {
$this->statsNotificationsWorker = $this->makeEmpty(StatsNotificationsScheduler::class); $this->statsNotificationsWorker = $this->makeEmpty(StatsNotificationsScheduler::class);
$this->loggerFactory = LoggerFactory::getInstance(); $this->loggerFactory = LoggerFactory::getInstance();
$this->cronHelper = $this->diContainer->get(CronHelper::class); $this->cronHelper = $this->diContainer->get(CronHelper::class);
$this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
$this->tasksLinks = $this->diContainer->get(TasksLinks::class); $this->tasksLinks = $this->diContainer->get(TasksLinks::class);
$this->scheduledTasksRepository = $this->diContainer->get(ScheduledTasksRepository::class); $this->scheduledTasksRepository = $this->diContainer->get(ScheduledTasksRepository::class);
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class); $this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
@@ -1097,9 +1098,11 @@ class SendingQueueTest extends \MailPoetTest {
); );
// newsletter is not sent to subscriber unsubscribed from segment // newsletter is not sent to subscriber unsubscribed from segment
$subscriberSegment = $this->subscriberSegment; $subscriberSegment = $this->subscriber->getSubscriberSegments()->first();
$subscriberSegment->status = SubscriberEntity::STATUS_UNSUBSCRIBED; $this->assertInstanceOf(SubscriberSegmentEntity::class, $subscriberSegment);
$subscriberSegment->save(); $subscriberSegment->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED);
$this->entityManager->persist($subscriberSegment);
$sendingQueueWorker->process(); $sendingQueueWorker->process();
$sendingQueue = $this->sendingQueuesRepository->findOneById($this->sendingQueue->getId()); $sendingQueue = $this->sendingQueuesRepository->findOneById($this->sendingQueue->getId());
@@ -1339,12 +1342,7 @@ class SendingQueueTest extends \MailPoetTest {
public function testCampaignIdsAreTheSameForDifferentSubscribers() { public function testCampaignIdsAreTheSameForDifferentSubscribers() {
$mailerTaskCampaignIds = []; $mailerTaskCampaignIds = [];
$secondSubscriber = $this->createSubscriber('sub2@example.com', 'Subscriber', 'Two'); $secondSubscriber = $this->createSubscriber('sub2@example.com', 'Subscriber', 'Two', [$this->segmentEntity]);
/** @var SubscriberSegment $segment2 */
$segment2 = SubscriberSegment::create();
$segment2->subscriberId = (int)$secondSubscriber->getId();
$segment2->segmentId = (int)$this->segment->id;
$segment2->save();
$this->scheduledTaskSubscribersRepository->setSubscribers( $this->scheduledTaskSubscribersRepository->setSubscribers(
$this->scheduledTask, $this->scheduledTask,
[$this->subscriber->getId(), $secondSubscriber->getId()] [$this->subscriber->getId(), $secondSubscriber->getId()]
@@ -1429,15 +1427,16 @@ class SendingQueueTest extends \MailPoetTest {
return $newsletter; return $newsletter;
} }
private function createSubscriber(string $email, string $firstName, string $lastName): SubscriberEntity { private function createSubscriber(string $email, string $firstName, string $lastName, $segments = []): SubscriberEntity {
$subscriber = new SubscriberEntity(); $subscriber = (new SubscriberFactory())
$subscriber->setEmail($email); ->withEmail($email)
$subscriber->setFirstName($firstName); ->withFirstName($firstName)
$subscriber->setLastName($lastName); ->withLastName($lastName)
$subscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED); ->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
$subscriber->setSource('administrator'); ->withSource(Source::ADMINISTRATOR)
$this->entityManager->persist($subscriber); ->withSegments($segments)
$this->entityManager->flush(); ->create();
return $subscriber; return $subscriber;
} }