From 30d44186bd274e057c90feef6a69806075b6e293 Mon Sep 17 00:00:00 2001 From: Rodrigo Primo Date: Thu, 28 Apr 2022 17:26:21 -0300 Subject: [PATCH] Refactor ImportExportFactoryTest to use Doctrine instead of Paris [MAILPOET-4139] --- .../ImportExport/ImportExportFactoryTest.php | 101 ++++++++++-------- 1 file changed, 54 insertions(+), 47 deletions(-) diff --git a/mailpoet/tests/integration/Subscribers/ImportExport/ImportExportFactoryTest.php b/mailpoet/tests/integration/Subscribers/ImportExport/ImportExportFactoryTest.php index 924b57cb87..32c91bacae 100644 --- a/mailpoet/tests/integration/Subscribers/ImportExport/ImportExportFactoryTest.php +++ b/mailpoet/tests/integration/Subscribers/ImportExport/ImportExportFactoryTest.php @@ -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(); } }