Files
piratepoet/mailpoet/tests/integration/Entities/SubscriberEntityIntegrationTest.php
2022-11-28 22:54:13 +03:00

62 lines
2.3 KiB
PHP

<?php declare(strict_types=1);
namespace MailPoet\Entities;
use MailPoet\Subscribers\SubscriberSegmentRepository;
use MailPoet\Test\DataFactories\Segment as SegmentFactory;
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
class SubscriberEntityIntegrationTest extends \MailPoetTest {
/** @var SubscriberSegmentRepository */
private $subscriberSegmentRepository;
/** @var SegmentEntity */
private $segment2;
/** @var SubscriberEntity */
private $subscriber;
protected function _before() {
parent::_before();
// Calling cleanup() here as some tests from other classes don't remove all SubscriberSegmentEntities causing issues here.
$this->cleanup();
$this->subscriberSegmentRepository = $this->diContainer->get(SubscriberSegmentRepository::class);
$segment1 = (new SegmentFactory())->create();
$this->segment2 = (new SegmentFactory())->create();
$this->subscriber = (new SubscriberFactory())->withSegments([$segment1, $this->segment2])->create();
$subscriberSegment1 = $this->subscriberSegmentRepository->findOneBy(['segment' => $segment1]);
$this->assertInstanceOf(SubscriberSegmentEntity::class, $subscriberSegment1);
$subscriberSegment1->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED);
$this->entityManager->persist($subscriberSegment1);
$this->entityManager->flush();
}
public function testGetSubscriberSegmentsShouldReturnAllSubscriberSegments() {
$allSubscriberSegments = $this->subscriberSegmentRepository->findBy(['subscriber' => $this->subscriber]);
$this->assertSame($allSubscriberSegments, $this->subscriber->getSubscriberSegments()->toArray());
}
public function testGetSubscriberSegmentsReturnsOnlySubscribersOfGivenStatus() {
$subscriberSegment2 = $this->subscriberSegmentRepository->findOneBy(['segment' => $this->segment2, 'subscriber' => $this->subscriber]);
$this->assertSame([1 => $subscriberSegment2], $this->subscriber->getSubscriberSegments(SubscriberEntity::STATUS_SUBSCRIBED)->toArray());
}
protected function _after() {
parent::_after();
$this->cleanup();
}
protected function cleanup() {
$this->truncateEntity(SegmentEntity::class);
$this->truncateEntity(SubscriberEntity::class);
$this->truncateEntity(SubscriberSegmentEntity::class);
}
}