diff --git a/tests/integration/API/JSON/v1/NewslettersTest.php b/tests/integration/API/JSON/v1/NewslettersTest.php index d681e50d8b..591e6e8001 100644 --- a/tests/integration/API/JSON/v1/NewslettersTest.php +++ b/tests/integration/API/JSON/v1/NewslettersTest.php @@ -423,8 +423,8 @@ class NewslettersTest extends \MailPoetTest { } public function testItCanGetListingData() { - $segment1 = $this->createSegment('Segment 1'); - $segment2 = $this->createSegment('Segment 2'); + $segment1 = $this->segmentRepository->createOrUpdate('Segment 1'); + $segment2 = $this->segmentRepository->createOrUpdate('Segment 2'); $this->createNewsletterSegment($this->newsletter, $segment1); $this->createNewsletterSegment($this->newsletter, $segment2); @@ -458,8 +458,8 @@ class NewslettersTest extends \MailPoetTest { public function testItCanFilterListing() { // create 2 segments - $segment1 = $this->createSegment('Segment 1'); - $segment2 = $this->createSegment('Segment 2'); + $segment1 = $this->segmentRepository->createOrUpdate('Segment 1'); + $segment2 = $this->segmentRepository->createOrUpdate('Segment 2'); // link standard newsletter to the 2 segments $this->createNewsletterSegment($this->newsletter, $segment1); @@ -718,13 +718,6 @@ class NewslettersTest extends \MailPoetTest { return $option; } - private function createSegment(string $name): SegmentEntity { - $segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, 'some description'); - $this->segmentRepository->persist($segment); - $this->segmentRepository->flush(); - return $segment; - } - private function createNewsletterSegment( NewsletterEntity $newsletter, SegmentEntity $segment diff --git a/tests/integration/API/JSON/v1/SegmentsTest.php b/tests/integration/API/JSON/v1/SegmentsTest.php index 133eec23da..a5eaeed878 100644 --- a/tests/integration/API/JSON/v1/SegmentsTest.php +++ b/tests/integration/API/JSON/v1/SegmentsTest.php @@ -45,9 +45,9 @@ class SegmentsTest extends \MailPoetTest { $this->subscriberRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class); $this->subscriberSegmentRepository = ContainerWrapper::getInstance()->get(SubscriberSegmentRepository::class); - $this->segment1 = $this->createSegment('Segment 1'); - $this->segment2 = $this->createSegment('Segment 2'); - $this->segment3 = $this->createSegment('Segment 3'); + $this->segment1 = $this->segmentRepository->createOrUpdate('Segment 1'); + $this->segment2 = $this->segmentRepository->createOrUpdate('Segment 2'); + $this->segment3 = $this->segmentRepository->createOrUpdate('Segment 3'); } public function testItCanGetASegment(): void { @@ -201,13 +201,6 @@ class SegmentsTest extends \MailPoetTest { return $subscriberSegment; } - private function createSegment(string $name): SegmentEntity { - $segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, ''); - $this->entityManager->persist($segment); - $this->entityManager->flush(); - return $segment; - } - private function createSubsriber(string $email): SubscriberEntity { $subscriber = new SubscriberEntity(); $subscriber->setEmail($email); diff --git a/tests/integration/Entities/NewsletterEntityTest.php b/tests/integration/Entities/NewsletterEntityTest.php index 69516846b9..6268cb23e6 100644 --- a/tests/integration/Entities/NewsletterEntityTest.php +++ b/tests/integration/Entities/NewsletterEntityTest.php @@ -5,20 +5,25 @@ namespace MailPoet\Entities; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\Options\NewsletterOptionsRepository; use MailPoet\Newsletter\Segment\NewsletterSegmentRepository; +use MailPoet\Segments\SegmentsRepository; class NewsletterEntityTest extends \MailPoetTest { /** @var NewslettersRepository */ private $newsletterRepository; + /** @var SegmentsRepository */ + private $segmentRepository; + public function _before() { $this->cleanup(); $this->newsletterRepository = $this->diContainer->get(NewslettersRepository::class); + $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); } public function testItRemovesOrphanedSegmentRelations() { $newsletter = $this->createNewsletter(); - $segment = $this->createSegment(); + $segment = $this->segmentRepository->createOrUpdate('Segment', 'Segment description'); $newsletterSegment = new NewsletterSegmentEntity($newsletter, $segment); $this->entityManager->persist($newsletterSegment); $this->entityManager->flush(); @@ -86,12 +91,6 @@ class NewsletterEntityTest extends \MailPoetTest { return $newsletter; } - private function createSegment(): SegmentEntity { - $segment = new SegmentEntity('Segment', SegmentEntity::TYPE_DEFAULT, 'Segment description'); - $this->entityManager->persist($segment); - return $segment; - } - private function createOptionField(string $name): NewsletterOptionFieldEntity { $newsletterOptionField = new NewsletterOptionFieldEntity(); $newsletterOptionField->setName($name); diff --git a/tests/integration/Newsletter/Scheduler/WelcomeTest.php b/tests/integration/Newsletter/Scheduler/WelcomeTest.php index 4ef00310c5..9d70cd2c90 100644 --- a/tests/integration/Newsletter/Scheduler/WelcomeTest.php +++ b/tests/integration/Newsletter/Scheduler/WelcomeTest.php @@ -10,12 +10,16 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity; use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SubscriberEntity; +use MailPoet\Segments\SegmentsRepository; use MailPoet\Tasks\Sending as SendingTask; use MailPoet\WP\Functions as WPFunctions; use MailPoetVendor\Carbon\Carbon; class WelcomeTest extends \MailPoetTest { + /** @var SegmentsRepository */ + private $segmentRepository; + /** @var WelcomeScheduler */ private $welcomeScheduler; @@ -33,10 +37,13 @@ class WelcomeTest extends \MailPoetTest { public function _before() { parent::_before(); + $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->welcomeScheduler = $this->diContainer->get(WelcomeScheduler::class); $this->subscriber = $this->createSubscriber('welcome_test_1@example.com'); - $this->segment = $this->createSegment('welcome_segment'); - $this->wpSegment = $this->createSegment('Wordpress', SegmentEntity::TYPE_WP_USERS); + $this->segment = $this->segmentRepository->createOrUpdate('welcome_segment'); + $this->wpSegment = $this->segmentRepository->createOrUpdate('Wordpress'); + $this->wpSegment->setType(SegmentEntity::TYPE_WP_USERS); + $this->segmentRepository->flush(); $this->newsletter = $this->createWelcomeNewsletter(); } @@ -185,8 +192,8 @@ class WelcomeTest extends \MailPoetTest { ] ); - $segment2 = $this->createSegment('Segment 2'); - $segment3 = $this->createSegment('Segment 3'); + $segment2 = $this->segmentRepository->createOrUpdate('Segment 2'); + $segment3 = $this->segmentRepository->createOrUpdate('Segment 3'); // queue is created and scheduled for delivery one day later $result = $this->welcomeScheduler->scheduleSubscriberWelcomeNotification( @@ -445,13 +452,6 @@ class WelcomeTest extends \MailPoetTest { return $subscriber; } - private function createSegment($name, $type = SegmentEntity::TYPE_DEFAULT): SegmentEntity { - $segment = new SegmentEntity($name, $type, $name); - $this->entityManager->persist($segment); - $this->entityManager->flush(); - return $segment; - } - public function _after() { Carbon::setTestNow(); $this->truncateEntity(NewsletterEntity::class); diff --git a/tests/integration/Segments/SegmentSubscribersRepositoryTest.php b/tests/integration/Segments/SegmentSubscribersRepositoryTest.php index 150a558592..25210f34fa 100644 --- a/tests/integration/Segments/SegmentSubscribersRepositoryTest.php +++ b/tests/integration/Segments/SegmentSubscribersRepositoryTest.php @@ -13,14 +13,18 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest { /** @var SegmentSubscribersRepository */ private $repository; + /** @var SegmentsRepository */ + private $segmentRepository; + public function _before() { parent::_before(); + $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->repository = $this->diContainer->get(SegmentSubscribersRepository::class); $this->cleanup(); } public function testItReturnsOnlySubscribedSubscribersForStaticSegment() { - $segment = $this->createSegmentEntity(); + $segment = $this->segmentRepository->createOrUpdate('Segment' . rand(0, 10000)); $this->createSubscriberEntity(); // Subscriber without segment @@ -103,12 +107,6 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest { return $subscriber; } - private function createSegmentEntity(): SegmentEntity { - $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DEFAULT, 'Segment description'); - $this->entityManager->persist($segment); - return $segment; - } - private function createSubscriberSegmentEntity(SegmentEntity $segment, SubscriberEntity $subscriber): SubscriberSegmentEntity { $subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED); $this->entityManager->persist($subscriberSegment); diff --git a/tests/integration/Subscribers/SubscriberListingRepositoryTest.php b/tests/integration/Subscribers/SubscriberListingRepositoryTest.php index 84a8920327..67b2753b4a 100644 --- a/tests/integration/Subscribers/SubscriberListingRepositoryTest.php +++ b/tests/integration/Subscribers/SubscriberListingRepositoryTest.php @@ -8,10 +8,14 @@ use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Listing\ListingDefinition; use MailPoet\Segments\DynamicSegments\FilterHandler; +use MailPoet\Segments\SegmentsRepository; use MailPoet\Segments\SegmentSubscribersRepository; class SubscriberListingRepositoryTest extends \MailPoetTest { + /** @var SegmentsRepository */ + private $segmentRepository; + /** @var SubscriberListingRepository */ private $repository; @@ -30,6 +34,7 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { ]; public function _before() { + $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->repository = new SubscriberListingRepository( $this->entityManager, $this->diContainer->get(FilterHandler::class), @@ -41,12 +46,12 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { public function testItBuildsFilters() { $this->createSubscriberEntity(); // subscriber without a list $subscriberWithDeletedList = $this->createSubscriberEntity(); - $deletedList = $this->createSegmentEntity(); + $deletedList = $this->segmentRepository->createOrUpdate('Segment 1'); $deletedList->setDeletedAt(new \DateTimeImmutable()); $this->createSubscriberSegmentEntity($deletedList, $subscriberWithDeletedList); $subscriberUnsubscribedFromAList = $this->createSubscriberEntity(); - $list = $this->createSegmentEntity(); + $list = $this->segmentRepository->createOrUpdate('Segment 2'); $subscriberSegment = $this->createSubscriberSegmentEntity($list, $subscriberUnsubscribedFromAList); $subscriberSegment->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED); @@ -68,7 +73,7 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { } public function testItBuildsGroups() { - $list = $this->createSegmentEntity(); + $list = $this->segmentRepository->createOrUpdate('Segment 3'); $this->createSubscriberEntity(); // subscriber without a list @@ -124,7 +129,7 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { public function testLoadAllSubscribers() { $this->createSubscriberEntity(); // subscriber without a list - $list = $this->createSegmentEntity(); + $list = $this->segmentRepository->createOrUpdate('Segment 4'); $subscriberUnsubscribedFromAList = $this->createSubscriberEntity(); $subscriberSegment = $this->createSubscriberSegmentEntity($list, $subscriberUnsubscribedFromAList); $subscriberSegment->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED); @@ -152,7 +157,7 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { } public function testLoadSubscribersInDefaultSegment() { - $list = $this->createSegmentEntity(); + $list = $this->segmentRepository->createOrUpdate('Segment 5'); $subscriberUnsubscribedFromAList = $this->createSubscriberEntity(); $subscriberSegment = $this->createSubscriberSegmentEntity($list, $subscriberUnsubscribedFromAList); $subscriberSegment->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED); @@ -191,12 +196,12 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { } public function testLoadSubscribersWithoutSegment() { - $list = $this->createSegmentEntity(); + $list = $this->segmentRepository->createOrUpdate('Segment 6'); $regularSubscriber = $this->createSubscriberEntity(); $regularSubscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED); $this->createSubscriberSegmentEntity($list, $regularSubscriber); - $deletedList = $this->createSegmentEntity(); + $deletedList = $this->segmentRepository->createOrUpdate('Segment 7'); $deletedList->setDeletedAt(new \DateTimeImmutable()); $subscriberOnDeletedList = $this->createSubscriberEntity(); $subscriberOnDeletedList->setStatus(SubscriberEntity::STATUS_SUBSCRIBED); @@ -227,12 +232,6 @@ class SubscriberListingRepositoryTest extends \MailPoetTest { return $subscriber; } - private function createSegmentEntity(): SegmentEntity { - $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DEFAULT, 'Segment description'); - $this->entityManager->persist($segment); - return $segment; - } - private function createDynamicSegmentEntity(): SegmentEntity { $segment = new SegmentEntity('Segment' . rand(0, 10000), SegmentEntity::TYPE_DYNAMIC, 'Segment description'); $dynamicFilter = new DynamicSegmentFilterEntity($segment, [ diff --git a/tests/integration/Subscribers/SubscribersRepositoryTest.php b/tests/integration/Subscribers/SubscribersRepositoryTest.php index 86676b367b..fb26484b2b 100644 --- a/tests/integration/Subscribers/SubscribersRepositoryTest.php +++ b/tests/integration/Subscribers/SubscribersRepositoryTest.php @@ -9,10 +9,13 @@ use MailPoet\Entities\SubscriberCustomFieldEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Models\CustomField; +use MailPoet\Segments\SegmentsRepository; class SubscribersRepositoryTest extends \MailPoetTest { /** @var SubscribersRepository */ private $repository; + /** @var SegmentsRepository */ + private $segmentRepository; /** @var SubscriberSegmentRepository */ private $subscriberSegmentRepository; /** @var SubscriberCustomFieldRepository */ @@ -22,6 +25,7 @@ class SubscribersRepositoryTest extends \MailPoetTest { parent::_before(); $this->cleanup(); $this->repository = $this->diContainer->get(SubscribersRepository::class); + $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->subscriberSegmentRepository = $this->diContainer->get(SubscriberSegmentRepository::class); $this->subscriberCustomFieldRepository = $this->diContainer->get(SubscriberCustomFieldRepository::class); } @@ -81,7 +85,7 @@ class SubscribersRepositoryTest extends \MailPoetTest { public function testItBulkDeleteSubscribers(): void { $subscriberOne = $this->createSubscriber('one@delete.com', new DateTimeImmutable()); $subscriberTwo = $this->createSubscriber('two@delete.com', new DateTimeImmutable()); - $segmentOne = $this->createSegment('One Delete'); + $segmentOne = $this->segmentRepository->createOrUpdate('One Delete'); $this->createSubscriberSegment($segmentOne, $subscriberOne); $this->createSubscriberSegment($segmentOne, $subscriberTwo); $customField = $this->createCustomField('CF'); @@ -112,8 +116,8 @@ class SubscribersRepositoryTest extends \MailPoetTest { public function testItBulkRemoveSubscribersFromSegment(): void { $subscriberOne = $this->createSubscriber('one@remove.com', new DateTimeImmutable()); $subscriberTwo = $this->createSubscriber('two@remove.com', new DateTimeImmutable()); - $segmentOne = $this->createSegment('One Remove'); - $segmentTwo = $this->createSegment('Two Remove'); + $segmentOne = $this->segmentRepository->createOrUpdate('One Remove'); + $segmentTwo = $this->segmentRepository->createOrUpdate('Two Remove'); $this->createSubscriberSegment($segmentOne, $subscriberOne); $this->createSubscriberSegment($segmentOne, $subscriberTwo); $this->createSubscriberSegment($segmentTwo, $subscriberOne); @@ -179,8 +183,8 @@ class SubscribersRepositoryTest extends \MailPoetTest { public function testItBulkRemoveSubscriberFromAllSegments(): void { $subscriberOne = $this->createSubscriber('one@removeAll.com', new DateTimeImmutable()); $subscriberTwo = $this->createSubscriber('two@removeAll.com', new DateTimeImmutable()); - $segmentOne = $this->createSegment('One Remove All'); - $segmentTwo = $this->createSegment('Two Remove All'); + $segmentOne = $this->segmentRepository->createOrUpdate('One Remove All'); + $segmentTwo = $this->segmentRepository->createOrUpdate('Two Remove All'); $this->createSubscriberSegment($segmentOne, $subscriberOne); $this->createSubscriberSegment($segmentOne, $subscriberTwo); $this->createSubscriberSegment($segmentTwo, $subscriberOne); @@ -214,7 +218,7 @@ class SubscribersRepositoryTest extends \MailPoetTest { public function testItBulkAddSubscribersToSegment(): void { $subscriberOne = $this->createSubscriber('one@add.com', new DateTimeImmutable()); $subscriberTwo = $this->createSubscriber('two@add.com', new DateTimeImmutable()); - $segmentOne = $this->createSegment('One Add'); + $segmentOne = $this->segmentRepository->createOrUpdate('One Add'); $subscriberOneId = $subscriberOne->getId(); $subscriberTwoId = $subscriberTwo->getId(); @@ -239,8 +243,8 @@ class SubscribersRepositoryTest extends \MailPoetTest { public function testItBulMoveSubscribersToSegment(): void { $subscriberOne = $this->createSubscriber('one@move.com', new DateTimeImmutable()); $subscriberTwo = $this->createSubscriber('two@move.com', new DateTimeImmutable()); - $segmentOne = $this->createSegment('One Move'); - $segmentTwo = $this->createSegment('Two Move'); + $segmentOne = $this->segmentRepository->createOrUpdate('One Move'); + $segmentTwo = $this->segmentRepository->createOrUpdate('Two Move'); $this->createSubscriberSegment($segmentOne, $subscriberOne); $this->createSubscriberSegment($segmentTwo, $subscriberTwo); @@ -314,13 +318,6 @@ class SubscribersRepositoryTest extends \MailPoetTest { return $subscriber; } - private function createSegment(string $name): SegmentEntity { - $segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, 'some description'); - $this->entityManager->persist($segment); - $this->entityManager->flush(); - return $segment; - } - private function createSubscriberSegment(SegmentEntity $segment, SubscriberEntity $subscriber): SubscriberSegmentEntity { $subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED); $this->entityManager->persist($subscriberSegment);