Refactor ImportExportFactoryTest to use Doctrine instead of Paris

[MAILPOET-4139]
This commit is contained in:
Rodrigo Primo
2022-04-28 17:26:21 -03:00
committed by Veljko V
parent e5fa37caa1
commit 30d44186bd

View File

@ -2,11 +2,16 @@
namespace MailPoet\Test\Subscribers\ImportExport;
use MailPoet\Models\CustomField;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Test\DataFactories\CustomField as CustomFieldFactory;
use MailPoet\Test\DataFactories\Segment as SegmentFactory;
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
use MailPoetVendor\Carbon\Carbon;
class ImportExportFactoryTest extends \MailPoetTest {
/** @var ImportExportFactory */
@ -14,42 +19,43 @@ class ImportExportFactoryTest extends \MailPoetTest {
/** @var ImportExportFactory */
public $importFactory;
/** @var SubscribersRepository */
private $subscribersRepository;
public function _before() {
parent::_before();
$segment1 = Segment::createOrUpdate(['name' => 'Unconfirmed Segment']);
$segment2 = Segment::createOrUpdate(['name' => 'Confirmed Segment']);
$subscriber1 = Subscriber::createOrUpdate([
'first_name' => 'John',
'last_name' => 'Mailer',
'status' => Subscriber::STATUS_UNCONFIRMED,
'email' => 'john@mailpoet.com',
]);
$segmentFactory = new SegmentFactory();
$subscriberFactory = new SubscriberFactory();
$customFieldFactory = new CustomFieldFactory();
$subscriber2 = Subscriber::createOrUpdate([
'first_name' => 'Mike',
'last_name' => 'Smith',
'status' => Subscriber::STATUS_SUBSCRIBED,
'email' => 'mike@mailpoet.com',
]);
$segment1 = $segmentFactory->withName('Unconfirmed Segment')->create();
$segment2 = $segmentFactory->withName('Confirmed Segment')->create();
$association = SubscriberSegment::create();
$association->subscriberId = $subscriber1->id;
$association->segmentId = $segment1->id;
$association->save();
$subscriberFactory
->withFirstName('John')
->withLastName('Mailer')
->withStatus(SubscriberEntity::STATUS_UNCONFIRMED)
->withEmail('john@mailpoet.com')
->withSegments([$segment1])
->create();
$association = SubscriberSegment::create();
$association->subscriberId = $subscriber2->id;
$association->segmentId = $segment2->id;
$association->save();
$subscriberFactory
->withFirstName('Mike')
->withLastName('Smith')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->withEmail('mike@mailpoet.com')
->withSegments([$segment2])
->create();
CustomField::createOrUpdate([
'name' => 'Birthday',
'type' => 'date',
]);
$customFieldFactory
->withName('Birthday')
->withType(CustomFieldEntity::TYPE_DATE)
->create();
$this->importFactory = new ImportExportFactory('import');
$this->exportFactory = new ImportExportFactory('export');
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
}
public function testItCanGetSegmentsWithSubscriberCount() {
@ -66,16 +72,14 @@ class ImportExportFactoryTest extends \MailPoetTest {
expect($segments[0]['count'])->equals(1);
expect($segments[1]['count'])->equals(0);
$subscriber = Subscriber::where(
'email', 'mike@mailpoet.com'
)->findOne();
expect($subscriber->deletedAt)->null();
$subscriber->trash();
$subscriber = $this->subscribersRepository->findOneBy(['email' => 'mike@mailpoet.com']);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
expect($subscriber->getDeletedAt())->null();
$subscriber = Subscriber::where(
'email', 'mike@mailpoet.com'
)->whereNull('deleted_at')->findOne();
expect($subscriber)->false();
$this->subscribersRepository->bulkTrash([$subscriber->getId()]);
$subscriber = $this->subscribersRepository->findOneBy(['email' => 'mike@mailpoet.com', 'deletedAt' => null]);
expect($subscriber)->null();
$segments = $this->importFactory->getSegments();
expect($segments[0]['count'])->equals(0);
@ -85,10 +89,13 @@ class ImportExportFactoryTest extends \MailPoetTest {
public function testItCanGetPublicSegmentsForExport() {
$segments = $this->exportFactory->getSegments();
expect(count($segments))->equals(2);
$subscriber = Subscriber::where('email', 'john@mailpoet.com')
->findOne();
$subscriber->deletedAt = date('Y-m-d H:i:s');
$subscriber->save();
$subscriber = $this->subscribersRepository->findOneBy(['email' => 'john@mailpoet.com']);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
$subscriber->setDeletedAt(new Carbon());
$this->subscribersRepository->persist($subscriber);
$this->subscribersRepository->flush();
$segments = $this->exportFactory->getSegments();
expect(count($segments))->equals(1);
}
@ -301,10 +308,10 @@ class ImportExportFactoryTest extends \MailPoetTest {
}
public function _after() {
Subscriber::deleteMany();
Segment::deleteMany();
SubscriberSegment::deleteMany();
CustomField::deleteMany();
$this->truncateEntity(SubscriberEntity::class);
$this->truncateEntity(SegmentEntity::class);
$this->truncateEntity(SubscriberSegmentEntity::class);
$this->truncateEntity(CustomFieldEntity::class);
$this->clearSubscribersCountCache();
}
}