Migrate tests
[MAILPOET-3168]
This commit is contained in:
@ -3,7 +3,11 @@
|
||||
namespace MailPoet\API\JSON\ResponseBuilders;
|
||||
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\NewsletterSegmentEntity;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
class SegmentsResponseBuilderTest extends \MailPoetTest {
|
||||
@ -29,4 +33,41 @@ class SegmentsResponseBuilderTest extends \MailPoetTest {
|
||||
$em->remove($segment);
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
public function testItBuildsListingsResponse() {
|
||||
$name = 'Response Listings Builder Test';
|
||||
$description = 'Testing description';
|
||||
|
||||
$di = ContainerWrapper::getInstance();
|
||||
$em = $di->get(EntityManager::class);
|
||||
$segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, $description);
|
||||
$em->persist($segment);
|
||||
$subscriber = new SubscriberEntity();
|
||||
$subscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED);
|
||||
$subscriber->setEmail('a@example.com');
|
||||
$em->persist($subscriber);
|
||||
$subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED);
|
||||
$em->persist($subscriberSegment);
|
||||
|
||||
$scheduledNewsletter = new NewsletterEntity();
|
||||
$scheduledNewsletter->setSubject('subject1');
|
||||
$scheduledNewsletter->setType(NewsletterEntity::TYPE_STANDARD);
|
||||
$scheduledNewsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
||||
$em->persist($scheduledNewsletter);
|
||||
$ns = new NewsletterSegmentEntity($scheduledNewsletter, $segment);
|
||||
$em->persist($ns);
|
||||
|
||||
$em->flush();
|
||||
|
||||
$responseBuilder = $di->get(SegmentsResponseBuilder::class);
|
||||
$response = $responseBuilder->buildForListing([$segment]);
|
||||
expect($response)->array();
|
||||
expect($response[0]['name'])->equals($name);
|
||||
expect($response[0]['type'])->equals(SegmentEntity::TYPE_DEFAULT);
|
||||
expect($response[0]['subscribers_url'])->startsWith('http');
|
||||
expect($response[0]['subscribers_count']['subscribed'])->equals('1');
|
||||
expect($response[0]['scheduled_emails_subjects'])->array();
|
||||
expect($response[0]['scheduled_emails_subjects'])->notEmpty();
|
||||
expect($response[0]['scheduled_emails_subjects'])->contains('subject1');
|
||||
}
|
||||
}
|
||||
|
@ -90,6 +90,61 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
|
||||
$this->tester->deleteWordPressUser($wpUserEmail);
|
||||
}
|
||||
|
||||
public function testGetSubscribersStatisticsCount() {
|
||||
$segment = $this->segmentRepository->createOrUpdate('Segment' . rand(0, 10000));
|
||||
$this->entityManager->persist($segment);
|
||||
$subscribersData = [
|
||||
['status' => SubscriberEntity::STATUS_UNSUBSCRIBED],
|
||||
['status' => SubscriberEntity::STATUS_SUBSCRIBED],
|
||||
['status' => SubscriberEntity::STATUS_UNCONFIRMED],
|
||||
['status' => SubscriberEntity::STATUS_BOUNCED],
|
||||
];
|
||||
$subscriberSegments = [];
|
||||
$subscribers = [];
|
||||
|
||||
// normal subscribers
|
||||
foreach ($subscribersData as $subscriberData) {
|
||||
$subscriber = $this->createSubscriberEntity();
|
||||
$subscriber->setStatus($subscriberData['status']);
|
||||
$subscriberSegments[] = $this->createSubscriberSegmentEntity($segment, $subscriber);
|
||||
$subscribers[] = $subscriber;
|
||||
}
|
||||
$this->entityManager->flush();
|
||||
|
||||
$subscribersCount = $this->repository->getSubscribersStatisticsCount($segment);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_SUBSCRIBED])->equals(1);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNSUBSCRIBED])->equals(1);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNCONFIRMED])->equals(1);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_BOUNCED])->equals(1);
|
||||
|
||||
// unsubscribed from this particular segment
|
||||
foreach ($subscriberSegments as $subscriberSegment) {
|
||||
$subscriberSegment->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED);
|
||||
}
|
||||
$this->entityManager->flush();
|
||||
|
||||
$subscribersCount = $this->repository->getSubscribersStatisticsCount($segment);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_SUBSCRIBED])->equals(0);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNSUBSCRIBED])->equals(4);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNCONFIRMED])->equals(0);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_BOUNCED])->equals(0);
|
||||
|
||||
// trashed subscribers
|
||||
foreach ($subscriberSegments as $subscriberSegment) {
|
||||
$subscriberSegment->setStatus(SubscriberEntity::STATUS_SUBSCRIBED);
|
||||
}
|
||||
foreach ($subscribers as $subscriber) {
|
||||
$subscriber->setDeletedAt(new \DateTimeImmutable());
|
||||
}
|
||||
$this->entityManager->flush();
|
||||
|
||||
$subscribersCount = $this->repository->getSubscribersStatisticsCount($segment);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_SUBSCRIBED])->equals(0);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNSUBSCRIBED])->equals(0);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_UNCONFIRMED])->equals(0);
|
||||
expect($subscribersCount[SubscriberEntity::STATUS_BOUNCED])->equals(0);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
parent::_after();
|
||||
$this->cleanup();
|
||||
|
Reference in New Issue
Block a user