From c86443a08c7ec2ce81b22a662e6abcb40caddaae Mon Sep 17 00:00:00 2001 From: wxa Date: Thu, 9 Dec 2021 18:46:24 +0300 Subject: [PATCH] Update tests [MAILPOET-4007] --- .../Segments/ManageSegmentsCest.php | 2 +- .../Filters/WooCommerceNumberOfOrdersTest.php | 15 ++++++- .../Filters/WooCommerceTotalSpentTest.php | 44 +++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/tests/acceptance/Segments/ManageSegmentsCest.php b/tests/acceptance/Segments/ManageSegmentsCest.php index dc5cf6fbb7..80105fddd1 100644 --- a/tests/acceptance/Segments/ManageSegmentsCest.php +++ b/tests/acceptance/Segments/ManageSegmentsCest.php @@ -511,7 +511,7 @@ class ManageSegmentsCest { $i->seeInField(['name' => 'name'], $editedTitle); $i->seeInField(['name' => 'description'], $editedDesc); $i->see('# of orders', $actionSelectElement); - $i->see('equal', $numberOfOrdersTypeElement); + $i->see('equals', $numberOfOrdersTypeElement); $i->seeInField($numberOfOrdersCountElement, '4'); $i->seeInField($numberOfOrdersDaysElement, '20'); } diff --git a/tests/integration/Segments/DynamicSegments/Filters/WooCommerceNumberOfOrdersTest.php b/tests/integration/Segments/DynamicSegments/Filters/WooCommerceNumberOfOrdersTest.php index c8024ccc55..e3ae4d54d0 100644 --- a/tests/integration/Segments/DynamicSegments/Filters/WooCommerceNumberOfOrdersTest.php +++ b/tests/integration/Segments/DynamicSegments/Filters/WooCommerceNumberOfOrdersTest.php @@ -48,7 +48,20 @@ class WooCommerceNumberOfOrdersTest extends \MailPoetTest { $this->assertSame('customer1@example.com', $subscriber1->getEmail()); } - public function testItGestCustomersThatPlacedAtLeastOneOrderInTheLastWeek() { + public function testItGetsCustomersThatDidNotPlaceTwoOrdersInTheLastWeek() { + $segmentFilter = $this->getSegmentFilter('!=', 2, 7); + $queryBuilder = $this->numberOfOrders->apply($this->getQueryBuilder(), $segmentFilter); + $result = $queryBuilder->execute()->fetchAll(); + $this->assertSame(2, count($result)); + $subscriber1 = $this->entityManager->find(SubscriberEntity::class, $result[0]['inner_subscriber_id']); + $this->assertInstanceOf(SubscriberEntity::class, $subscriber1); + $this->assertSame('customer1@example.com', $subscriber1->getEmail()); + $subscriber2 = $this->entityManager->find(SubscriberEntity::class, $result[1]['inner_subscriber_id']); + $this->assertInstanceOf(SubscriberEntity::class, $subscriber2); + $this->assertSame('customer3@example.com', $subscriber2->getEmail()); + } + + public function testItGetsCustomersThatPlacedAtLeastOneOrderInTheLastWeek() { $segmentFilter = $this->getSegmentFilter('>', 0, 7); $queryBuilder = $this->numberOfOrders->apply($this->getQueryBuilder(), $segmentFilter); $result = $queryBuilder->execute()->fetchAll(); diff --git a/tests/integration/Segments/DynamicSegments/Filters/WooCommerceTotalSpentTest.php b/tests/integration/Segments/DynamicSegments/Filters/WooCommerceTotalSpentTest.php index de12fb655d..d3e6f75eb3 100644 --- a/tests/integration/Segments/DynamicSegments/Filters/WooCommerceTotalSpentTest.php +++ b/tests/integration/Segments/DynamicSegments/Filters/WooCommerceTotalSpentTest.php @@ -45,6 +45,50 @@ class WooCommerceTotalSpentTest extends \MailPoetTest { $this->orders[] = $this->createOrder(['user_id' => $userId3, 'order_total' => 25]); } + public function testItGetsCustomersThatSpentFifteenInTheLastDay(): void { + $segmentFilter = $this->getSegmentFilter('=', 15, 1); + $queryBuilder = $this->totalSpent->apply($this->createQueryBuilder(), $segmentFilter); + $statement = $queryBuilder->execute(); + $result = $statement instanceof Statement ? $statement->fetchAll() : []; + expect($result)->count(1); + $subscriber1 = $this->subscribersRepository->findOneById($result[0]['inner_subscriber_id']); + assert($subscriber1 instanceof SubscriberEntity); + expect($subscriber1)->isInstanceOf(SubscriberEntity::class); + expect($subscriber1->getEmail())->equals('customer2@example.com'); + } + + public function testItGetsCustomersThatSpentFifteenInTheLastWeek(): void { + $segmentFilter = $this->getSegmentFilter('=', 15, 7); + $queryBuilder = $this->totalSpent->apply($this->createQueryBuilder(), $segmentFilter); + $statement = $queryBuilder->execute(); + $result = $statement instanceof Statement ? $statement->fetchAll() : []; + expect($result)->count(2); + $subscriber1 = $this->subscribersRepository->findOneById($result[0]['inner_subscriber_id']); + assert($subscriber1 instanceof SubscriberEntity); + expect($subscriber1)->isInstanceOf(SubscriberEntity::class); + expect($subscriber1->getEmail())->equals('customer1@example.com'); + $subscriber2 = $this->subscribersRepository->findOneById($result[1]['inner_subscriber_id']); + assert($subscriber2 instanceof SubscriberEntity); + expect($subscriber2)->isInstanceOf(SubscriberEntity::class); + expect($subscriber2->getEmail())->equals('customer2@example.com'); + } + + public function testItGetsCustomersThatDidNotSpendFifteenInTheLastDay(): void { + $segmentFilter = $this->getSegmentFilter('!=', 15, 1); + $queryBuilder = $this->totalSpent->apply($this->createQueryBuilder(), $segmentFilter); + $statement = $queryBuilder->execute(); + $result = $statement instanceof Statement ? $statement->fetchAll() : []; + expect($result)->count(2); + $subscriber1 = $this->subscribersRepository->findOneById($result[0]['inner_subscriber_id']); + assert($subscriber1 instanceof SubscriberEntity); + expect($subscriber1)->isInstanceOf(SubscriberEntity::class); + expect($subscriber1->getEmail())->equals('customer1@example.com'); + $subscriber2 = $this->subscribersRepository->findOneById($result[1]['inner_subscriber_id']); + assert($subscriber2 instanceof SubscriberEntity); + expect($subscriber2)->isInstanceOf(SubscriberEntity::class); + expect($subscriber2->getEmail())->equals('customer3@example.com'); + } + public function testItGetsCustomersThatSpentMoreThanTwentyInTheLastDay(): void { $segmentFilter = $this->getSegmentFilter('>', 20, 1); $queryBuilder = $this->totalSpent->apply($this->createQueryBuilder(), $segmentFilter);