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