Refactor ImportExportFactoryTest to use Doctrine instead of Paris
[MAILPOET-4139]
This commit is contained in:
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user