Add sending queue tests

[MAILPOET-5033]
This commit is contained in:
John Oleksowicz
2023-02-14 11:56:45 -06:00
committed by Aschepikov
parent fc8436ba74
commit 1a04b05e0d

View File

@@ -366,11 +366,9 @@ class SendingQueueTest extends \MailPoetTest {
expect(isset($extraParams['unsubscribe_url']))->true();
expect($extraParams['unsubscribe_url'])->equals($directUnsubscribeURL);
expect(isset($extraParams['meta']))->true();
expect($extraParams['meta'])->equals([
'email_type' => 'newsletter',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'administrator',
]);
expect($extraParams['meta']['email_type'])->equals('newsletter');
expect($extraParams['meta']['subscriber_status'])->equals('subscribed');
expect($extraParams['meta']['subscriber_source'])->equals('administrator');
return $this->mailerTaskDummyResponse;
}),
]
@@ -391,11 +389,9 @@ class SendingQueueTest extends \MailPoetTest {
expect(isset($extraParams['unsubscribe_url']))->true();
expect($extraParams['unsubscribe_url'])->equals($trackedUnsubscribeURL);
expect(isset($extraParams['meta']))->true();
expect($extraParams['meta'])->equals([
'email_type' => 'newsletter',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'administrator',
]);
expect($extraParams['meta']['email_type'])->equals('newsletter');
expect($extraParams['meta']['subscriber_status'])->equals('subscribed');
expect($extraParams['meta']['subscriber_source'])->equals('administrator');
return $this->mailerTaskDummyResponse;
}),
]
@@ -1196,6 +1192,87 @@ class SendingQueueTest extends \MailPoetTest {
expect($this->wp->getTransient(SendingQueueWorker::EMAIL_WITH_INVALID_SEGMENT_OPTION))->equals('Subject With Deleted');
}
public function testItGeneratesPartOfAnMD5CampaignIdStoredAsSendingQueueMeta() {
$sendingQueueWorker = $this->getSendingQueueWorker(
$this->construct(
MailerTask::class,
[$this->diContainer->get(MailerFactory::class)],
[
'send' => Expected::exactly(1, function($newsletter, $subscriber) {
// newsletter body should not be empty
expect(!empty($newsletter['body']['html']))->true();
expect(!empty($newsletter['body']['text']))->true();
return $this->mailerTaskDummyResponse;
}),
]
)
);
$sendingQueueWorker->process();
$meta = $this->queue->getSendingQueueEntity()->getMeta();
expect(isset($meta['campaignId']))->true();
$campaignId = $meta['campaignId'];
expect(strlen($campaignId))->equals(16);
}
public function testItPassesCampaignIdToMailerViaExtraParamsMeta() {
$mailerTaskExtraParams = [];
$sendingQueueWorker = $this->getSendingQueueWorker(
$this->construct(
MailerTask::class,
[$this->diContainer->get(MailerFactory::class)],
[
'send' => Expected::exactly(1, function($newsletter, $subscriber, $extraParams = []) use (&$mailerTaskExtraParams) {
// newsletter body should not be empty
expect(!empty($newsletter['body']['html']))->true();
expect(!empty($newsletter['body']['text']))->true();
$mailerTaskExtraParams = $extraParams;
return $this->mailerTaskDummyResponse;
}),
]
)
);
$sendingQueueWorker->process();
$meta = $this->queue->getSendingQueueEntity()->getMeta();
expect(isset($meta['campaignId']))->true();
$campaignId = $meta['campaignId'];
expect($mailerTaskExtraParams['meta']['campaign_id'])->equals($campaignId);
}
public function testCampaignIdsAreTheSameForDifferentSubscribers() {
$mailerTaskCampaignIds = [];
$secondSubscriber = $this->createSubscriber('sub2@example.com', 'Subscriber', 'Two');
$segment2 = SubscriberSegment::create();
$segment2->subscriberId = (int)$secondSubscriber->getId();
$segment2->segmentId = (int)$this->segment->id;
$segment2->save();
$this->queue->setSubscribers([$this->subscriber->getId(), $secondSubscriber->getId()]);
$this->queue->countTotal = 2;
$this->queue->save();
$sendingQueueWorker = $this->getSendingQueueWorker(
$this->construct(
MailerTask::class,
[$this->diContainer->get(MailerFactory::class)],
[
'send' => Expected::exactly(2, function($newsletter, $subscriber, $extraParams = []) use (&$mailerTaskCampaignIds) {
// newsletter body should not be empty
expect(!empty($newsletter['body']['html']))->true();
expect(!empty($newsletter['body']['text']))->true();
$mailerTaskCampaignIds[$subscriber] = $extraParams['meta']['campaign_id'];
return $this->mailerTaskDummyResponse;
}),
]
)
);
$sendingQueueWorker->process();
$meta = $this->queue->getSendingQueueEntity()->getMeta();
expect(isset($meta['campaignId']))->true();
$campaignId = $meta['campaignId'];
expect(count($mailerTaskCampaignIds))->equals(2);
foreach (array_values($mailerTaskCampaignIds) as $mailerTaskCampaignId) {
expect($mailerTaskCampaignId)->equals($campaignId);
}
}
public function _after() {
$this->truncateEntity(SubscriberEntity::class);
$this->truncateEntity(SubscriberSegmentEntity::class);