Add tests for campaignId generation
[MAILPOET-5033]
This commit is contained in:
committed by
Aschepikov
parent
1a04b05e0d
commit
a6824cce36
@ -427,6 +427,14 @@ class SendingQueue {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param NewsletterEntity $newsletter
|
||||||
|
* @param string $textBody - The pre-processed text body of the newsletter, before any shortcodes have been processed.
|
||||||
|
* Leaving the shortcodes unprocessed ensures that we get the same campaignId for different subscribers, as well as
|
||||||
|
* for different sends of the same automatic email when link tracking is enabled.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
public function calculateCampaignId(NewsletterEntity $newsletter, string $textBody): string {
|
public function calculateCampaignId(NewsletterEntity $newsletter, string $textBody): string {
|
||||||
return substr(md5(implode('|', [$newsletter->getId(), $textBody, $newsletter->getSubject()])), 0, 16);
|
return substr(md5(implode('|', [$newsletter->getId(), $textBody, $newsletter->getSubject()])), 0, 16);
|
||||||
}
|
}
|
||||||
|
@ -1273,6 +1273,47 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCampaignIdDoesNotChangeIfContentStaysTheSame() {
|
||||||
|
$newsletter = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$campaignId = $this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body');
|
||||||
|
expect($campaignId)->equals($this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCampaignIdChangesIfSubjectChanges() {
|
||||||
|
$newsletter = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$originalCampaignId = $this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body');
|
||||||
|
$newsletter->setSubject('Subject 2');
|
||||||
|
$this->entityManager->persist($newsletter);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
expect($originalCampaignId)->notEquals($this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCampaignIdRevertsIfContentReverts() {
|
||||||
|
$newsletter = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$originalCampaignId = $this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body');
|
||||||
|
$newsletter->setSubject('Subject 2');
|
||||||
|
$this->entityManager->persist($newsletter);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
expect($originalCampaignId)->notEquals($this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body changed'));
|
||||||
|
$newsletter->setSubject('Subject');
|
||||||
|
$this->entityManager->persist($newsletter);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
expect($originalCampaignId)->equals($this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCampaignIdDependsOnNewsletterId() {
|
||||||
|
$newsletter1 = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$newsletter2 = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$sameContent = 'content';
|
||||||
|
expect($this->sendingQueueWorker->calculateCampaignId($newsletter1, $sameContent))->notEquals($this->sendingQueueWorker->calculateCampaignId($newsletter2, $sameContent));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCampaignIdChangesIfContentChanges() {
|
||||||
|
$newsletter = (new \MailPoet\Test\DataFactories\Newsletter())->withSubject('Subject')->create();
|
||||||
|
$originalCampaignId = $this->sendingQueueWorker->calculateCampaignId($newsletter, 'text body');
|
||||||
|
expect($originalCampaignId)->notEquals($this->sendingQueueWorker->calculateCampaignId($newsletter, 'different text body'));
|
||||||
|
}
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
$this->truncateEntity(SubscriberEntity::class);
|
$this->truncateEntity(SubscriberEntity::class);
|
||||||
$this->truncateEntity(SubscriberSegmentEntity::class);
|
$this->truncateEntity(SubscriberSegmentEntity::class);
|
||||||
|
Reference in New Issue
Block a user