Replace Subscriber model with Subscriber entity in WPTest

[MAILPOET-5066]
This commit is contained in:
Rodrigo Primo
2023-02-15 16:44:28 -03:00
committed by Brezo Cordero
parent 95568e770b
commit 05a8d698d2

View File

@@ -5,15 +5,17 @@ namespace MailPoet\Test\Segments;
require_once(ABSPATH . 'wp-admin/includes/user.php');
use Codeception\Stub;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Segments\WP;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Subscription\Registration;
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
use MailPoet\WooCommerce\Helper;
use MailPoet\WooCommerce\Subscription;
use MailPoet\WP\Functions;
@@ -30,6 +32,12 @@ class WPTest extends \MailPoetTest {
/** @var WP */
private $wpSegment;
/** @var SubscriberFactory */
private $subscriberFactory;
/** @var SubscribersRepository */
private $subscribersRepository;
public function _before(): void {
parent::_before();
$this->settings = $this->diContainer->get(SettingsController::class);
@@ -37,32 +45,36 @@ class WPTest extends \MailPoetTest {
$currentTime = Carbon::now();
Carbon::setTestNow($currentTime);
$this->cleanData();
$this->subscriberFactory = new SubscriberFactory();
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
}
public function testSynchronizeUserKeepsStatusOfOldUser(): void {
$randomNumber = rand();
$id = $this->insertUser($randomNumber);
$subscriber = Subscriber::createOrUpdate([
'email' => 'user-sync-test' . $randomNumber . '@example.com',
'status' => Subscriber::STATUS_SUBSCRIBED,
'wp_user_id' => $id,
]);
$subscriber = $this->subscriberFactory
->withEmail('user-sync-test' . $randomNumber . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->withWpUserId($id)
->create();
$this->wpSegment->synchronizeUser($id);
$dbSubscriber = Subscriber::findOne($subscriber->id);
verify($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
$dbSubscriber = $this->subscribersRepository->findOneById($subscriber->getId());
$this->assertInstanceOf(SubscriberEntity::class, $dbSubscriber);
verify($dbSubscriber->getStatus())->equals(SubscriberEntity::STATUS_SUBSCRIBED);
}
public function testSynchronizeUserKeepsStatusOfOldSubscriber(): void {
$randomNumber = rand();
$subscriber = Subscriber::createOrUpdate([
'email' => 'user-sync-test' . $randomNumber . '@example.com',
'status' => Subscriber::STATUS_SUBSCRIBED,
'wp_user_id' => null,
]);
$subscriber = $this->subscriberFactory
->withEmail('user-sync-test' . $randomNumber . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$id = $this->insertUser($randomNumber);
$this->wpSegment->synchronizeUser($id);
$dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($dbSubscriber->status)->equals($subscriber->status);
$dbSubscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $dbSubscriber);
verify($dbSubscriber->getStatus())->equals($subscriber->getStatus());
}
public function testSynchronizeUserStatusIsSubscribedForNewUserWithSignUpConfirmationDisabled(): void {
@@ -71,7 +83,7 @@ class WPTest extends \MailPoetTest {
$id = $this->insertUser($randomNumber);
$this->wpSegment->synchronizeUser($id);
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
verify($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
verify($wpSubscriber->status)->equals(SubscriberEntity::STATUS_SUBSCRIBED);
}
public function testSynchronizeUserStatusIsUnconfirmedForNewUserWithSignUpConfirmationEnabled(): void {
@@ -80,7 +92,7 @@ class WPTest extends \MailPoetTest {
$id = $this->insertUser($randomNumber);
$this->wpSegment->synchronizeUser($id);
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
verify($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
verify($wpSubscriber->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
}
public function testSynchronizeUsersStatusIsSubscribedForNewUsersWithSignUpConfirmationDisabled(): void {
@@ -88,10 +100,16 @@ class WPTest extends \MailPoetTest {
$this->insertUser();
$this->insertUser();
$this->wpSegment->synchronizeUsers();
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
$subscribers = $this->entityManager
->getRepository(SubscriberEntity::class)
->createQueryBuilder('s')
->where('s.email LIKE :email')
->setParameter('email', 'user-sync-test%')
->getQuery()
->getResult();
verify(count($subscribers))->equals(2);
verify($subscribers[0]->status)->equals(Subscriber::STATUS_SUBSCRIBED);
verify($subscribers[1]->status)->equals(Subscriber::STATUS_SUBSCRIBED);
verify($subscribers[0]->getStatus())->equals(SubscriberEntity::STATUS_SUBSCRIBED);
verify($subscribers[1]->getStatus())->equals(SubscriberEntity::STATUS_SUBSCRIBED);
}
public function testSynchronizeUsersStatusIsUnconfirmedForNewUsersWithSignUpConfirmationEnabled(): void {
@@ -99,10 +117,17 @@ class WPTest extends \MailPoetTest {
$this->insertUser();
$this->insertUser();
$this->wpSegment->synchronizeUsers();
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
$subscribers = $this->entityManager
->getRepository(SubscriberEntity::class)
->createQueryBuilder('s')
->where('s.email LIKE :email')
->setParameter('email', 'user-sync-test%')
->getQuery()
->getResult();
verify(count($subscribers))->equals(2);
verify($subscribers[0]->status)->equals(Subscriber::STATUS_UNCONFIRMED);
verify($subscribers[1]->status)->equals(Subscriber::STATUS_UNCONFIRMED);
verify($subscribers[0]->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($subscribers[1]->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
}
public function testItSendsConfirmationEmailWhenSignupConfirmationAndSubscribeOnRegisterEnabled(): void {
@@ -153,7 +178,7 @@ class WPTest extends \MailPoetTest {
$registration->onRegister([], $user['user_login'], $user['user_email']);
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
verify($wpSubscriber->countConfirmations)->equals(0);
verify($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
verify($wpSubscriber->status)->equals(SubscriberEntity::STATUS_SUBSCRIBED);
// signup confirmation enabled, subscribe on-register disabled
$this->settings->set('signup_confirmation.enabled', '1');
@@ -163,7 +188,7 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUser($id);
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
verify($wpSubscriber->countConfirmations)->equals(0);
verify($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
verify($wpSubscriber->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
}
public function testItSynchronizeNewUsers(): void {
@@ -178,16 +203,16 @@ class WPTest extends \MailPoetTest {
public function testItSynchronizesPresubscribedUsers(): void {
$randomNumber = 12345;
$subscriber = Subscriber::createOrUpdate([
'email' => 'user-sync-test' . $randomNumber . '@example.com',
'status' => Subscriber::STATUS_SUBSCRIBED,
]);
$subscriber = $this->subscriberFactory
->withEmail('user-sync-test' . $randomNumber . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$id = $this->insertUser($randomNumber);
$this->wpSegment->synchronizeUsers();
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
verify($wpSubscriber)->notEmpty();
verify($wpSubscriber->id)->equals($subscriber->id);
verify($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
verify($wpSubscriber->id)->equals($subscriber->getId());
verify($wpSubscriber->status)->equals(SubscriberEntity::STATUS_SUBSCRIBED);
}
public function testItSynchronizeEmails(): void {
@@ -195,8 +220,9 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, 'user-sync-test-xx@email.com');
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber->email)->equals('user-sync-test-xx@email.com');
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getEmail())->equals('user-sync-test-xx@email.com');
}
public function testRemovesUsersWithEmptyEmailsFromSunscribersDuringSynchronization(): void {
@@ -204,7 +230,7 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, '');
$this->wpSegment->synchronizeUsers();
verify(Subscriber::where('wp_user_id', $id)->count())->equals(0);
verify($this->subscribersRepository->findOneBy(['wpUserId' => $id]))->null();
$this->deleteWPUser($id);
}
@@ -213,7 +239,7 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, 'ivalid.@email.com');
$this->wpSegment->synchronizeUsers();
verify(Subscriber::where('wp_user_id', $id)->count())->equals(0);
verify($this->subscribersRepository->findOneBy(['wpUserId' => $id]))->null();
$this->deleteWPUser($id);
}
@@ -221,8 +247,7 @@ class WPTest extends \MailPoetTest {
$id = $this->insertUser();
$this->updateWPUserEmail($id, '');
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber)->empty();
verify($this->subscribersRepository->findOneBy(['wpUserId' => $id]))->null();
$this->deleteWPUser($id);
}
@@ -234,8 +259,9 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
update_user_meta((int)$id, 'first_name', $firstName);
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber->firstName)->equals($trucantedFirstName);
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getFirstName())->equals($trucantedFirstName);
}
public function testItSynchronizeLastNames(): void {
@@ -246,8 +272,9 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
update_user_meta((int)$id, 'last_name', $lastName);
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber->lastName)->equals($trucantedLastName);
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getLastName())->equals($trucantedLastName);
}
public function testItSynchronizeFirstNamesUsingDisplayName(): void {
@@ -255,8 +282,9 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
$this->updateWPUserDisplayName($id, 'First name');
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber->firstName)->equals('First name');
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getFirstName())->equals('First name');
}
public function testItSynchronizeFirstNamesFromMetaNotDisplayName(): void {
@@ -264,8 +292,9 @@ class WPTest extends \MailPoetTest {
update_user_meta((int)$id, 'first_name', 'First name');
$this->updateWPUserDisplayName($id, 'display_name');
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
verify($subscriber->firstName)->equals('First name');
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getFirstName())->equals('First name');
}
public function testItSynchronizeSegment(): void {
@@ -280,12 +309,15 @@ class WPTest extends \MailPoetTest {
public function testItDoesntRemoveUsersFromTrash(): void {
$id = $this->insertUser();
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
$subscriber->deletedAt = Carbon::now();
$subscriber->save();
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
$subscriber->setDeletedAt(Carbon::now());
$this->subscribersRepository->persist($subscriber);
$this->subscribersRepository->flush();
$this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
verify($subscriber->deletedAt)->notNull();
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getDeletedAt())->notNull();
}
public function testItSynchronizesDeletedWPUsersUsingHooks(): void {
@@ -307,16 +339,18 @@ class WPTest extends \MailPoetTest {
$this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount();
verify($subscribersCount)->equals(2);
$subscriber1 = Subscriber::where("wp_user_id", $id)->findOne();
$deletedAt1 = Carbon::createFromFormat('Y-m-d H:i:s', $subscriber1->deletedAt);
$this->assertInstanceOf(Carbon::class, $deletedAt1);
verify($subscriber1->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt1->timestamp)->equalsWithDelta(Carbon::now()->timestamp, 1);
$subscriber2 = Subscriber::where("wp_user_id", $id2)->findOne();
$deletedAt2 = Carbon::createFromFormat('Y-m-d H:i:s', $subscriber2->deletedAt);
$this->assertInstanceOf(Carbon::class, $deletedAt2);
verify($subscriber2->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt2->timestamp)->equalsWithDelta(Carbon::now()->timestamp, 1);
$subscriber1 = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber1);
$deletedAt1 = $subscriber1->getDeletedAt();
$this->assertInstanceOf(\DateTimeInterface::class, $deletedAt1);
verify($subscriber1->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt1->getTimestamp())->equalsWithDelta(Carbon::now()->timestamp, 1);
$subscriber2 = $this->subscribersRepository->findOneBy(['wpUserId' => $id2]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber2);
$deletedAt2 = $subscriber2->getDeletedAt();
$this->assertInstanceOf(\DateTimeInterface::class, $deletedAt2);
verify($subscriber2->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt2->getTimestamp())->equalsWithDelta(Carbon::now()->timestamp, 1);
}
public function testItRemovesOrphanedSubscribers(): void {
@@ -332,55 +366,49 @@ class WPTest extends \MailPoetTest {
public function testItDoesntDeleteNonWPData(): void {
$this->insertUser();
// wp_user_id is null
$subscriber = Subscriber::create();
$subscriber->hydrate([
'first_name' => 'John',
'last_name' => 'John',
'email' => 'user-sync-test' . rand() . '@example.com',
]);
$subscriber->status = Subscriber::STATUS_UNCONFIRMED;
$subscriber->save();
$this->subscriberFactory
->withFirstName('John')
->withLastName('John')
->withEmail('user-sync-test' . rand() . '@example.com')
->withStatus(SubscriberEntity::STATUS_UNCONFIRMED)
->create();
// wp_user_id is zero
$subscriber2 = Subscriber::create();
$subscriber2->hydrate([
'first_name' => 'Mike',
'last_name' => 'Mike',
'email' => 'user-sync-test2' . rand() . '@example.com',
'wp_user_id' => 0,
]);
$subscriber2->status = Subscriber::STATUS_SUBSCRIBED;
$subscriber2->save();
$this->subscriberFactory
->withFirstName('Mike')
->withLastName('Mike')
->withEmail('user-sync-test2' . rand() . '@example.com')
->withWpUserId(0)
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
// email is empty
$subscriber3 = Subscriber::create();
$subscriber3->hydrate([
'first_name' => 'Dave',
'last_name' => 'Dave',
'email' => 'user-sync-test3' . rand() . '@example.com', // need to pass validation
]);
$subscriber3->status = Subscriber::STATUS_SUBSCRIBED;
$subscriber3->save();
$subscriber3 = $this->subscriberFactory
->withFirstName('Dave')
->withLastName('Dave')
->withEmail('user-sync-test3' . rand() . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$this->clearEmail($subscriber3);
$this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount();
verify($subscribersCount)->equals(3);
$dbSubscriber = Subscriber::findOne($subscriber3->id);
$dbSubscriber = $this->subscribersRepository->findOneById($subscriber3->getId());
verify($dbSubscriber)->notEmpty();
$subscriber3->delete();
}
public function testItRemovesSubscribersInWPSegmentWithoutWPId(): void {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'first_name' => 'Mike',
'last_name' => 'Mike',
'email' => 'user-sync-test' . rand() . '@example.com',
'wp_user_id' => null,
]);
$subscriber->status = Subscriber::STATUS_SUBSCRIBED;
$subscriber->save();
$subscriber = $this->subscriberFactory
->withFirstName('Mike')
->withLastName('Mike')
->withEmail('user-sync-test' . rand() . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$wpSegment = Segment::getWPSegment();
$association = SubscriberSegment::create();
$association->subscriberId = $subscriber->id;
$association->subscriberId = (int)$subscriber->getId();
$association->segmentId = $wpSegment->id;
$association->save();
$subscribersCount = $this->getSubscribersCount();
@@ -393,25 +421,26 @@ class WPTest extends \MailPoetTest {
public function testItRemovesSubscribersInWPSegmentWithoutEmail(): void {
$id = $this->insertUser();
$this->updateWPUserEmail($id, '');
$subscriber = Subscriber::create();
$subscriber->hydrate([
'first_name' => 'Mike',
'last_name' => 'Mike',
'email' => 'user-sync-test' . rand() . '@example.com', // need to pass validation
'wp_user_id' => $id,
]);
$subscriber->status = Subscriber::STATUS_SUBSCRIBED;
$subscriber->save();
$subscriber = $this->subscriberFactory
->withFirstName('Mike')
->withLastName('Mike')
->withEmail('user-sync-test' . rand() . '@example.com')
->withWpUserId($id)
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$this->clearEmail($subscriber);
$wpSegment = Segment::getWPSegment();
$association = SubscriberSegment::create();
$association->subscriberId = $subscriber->id;
$association->subscriberId = (int)$subscriber->getId();
$association->segmentId = $wpSegment->id;
$association->save();
$dbSubscriber = Subscriber::findOne($subscriber->id);
$dbSubscriber = $this->subscribersRepository->findOneById($subscriber->getId());
verify($dbSubscriber)->notEmpty();
$this->wpSegment->synchronizeUsers();
$dbSubscriber = Subscriber::findOne($subscriber->id);
$this->entityManager->clear();
$dbSubscriber = $this->subscribersRepository->findOneById($subscriber->getId());
verify($dbSubscriber)->empty();
}
@@ -427,11 +456,12 @@ class WPTest extends \MailPoetTest {
);
$wpSegment = $this->getServiceWithOverrides(WP::class, ['wp' => $wp]);
$wpSegment->synchronizeUser($id);
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
$deletedAt = Carbon::createFromFormat('Y-m-d H:i:s', $subscriber->deletedAt);
$this->assertInstanceOf(Carbon::class, $deletedAt);
verify($subscriber->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt->timestamp)->equalsWithDelta(Carbon::now()->timestamp, 1);
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
$deletedAt = $subscriber->getDeletedAt();
$this->assertInstanceOf(\DateTimeInterface::class, $deletedAt);
verify($subscriber->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($deletedAt->getTimestamp())->equalsWithDelta(Carbon::now()->timestamp, 1);
}
public function testItAddsNewUserWhoUncheckedOptInOnCheckoutPageAsUnconfirmed(): void {
@@ -446,8 +476,9 @@ class WPTest extends \MailPoetTest {
$wpSegment = $this->getServiceWithOverrides(WP::class, ['wp' => $wp]);
$_POST[Subscription::CHECKOUT_OPTIN_PRESENCE_CHECK_INPUT_NAME] = 1;
$wpSegment->synchronizeUser($id);
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
verify($subscriber->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
$subscriber = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber);
verify($subscriber->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
}
public function testItDoesNotSendConfirmationEmailForNewUserWhenWPSegmentIsDisabledOnRegisterEnabled(): void {
@@ -485,8 +516,7 @@ class WPTest extends \MailPoetTest {
];
$userId = wp_insert_user($args);
$this->assertIsNumeric($userId);
$subscriberRepository = $this->diContainer->get(SubscribersRepository::class);
$subscriber = $subscriberRepository->findOneBy(['email' => 'user-sync-test-html-entities@example.com']);
$subscriber = $this->subscribersRepository->findOneBy(['email' => 'user-sync-test-html-entities@example.com']);
/**
* @var SubscriberEntity $subscriber
*/
@@ -509,8 +539,7 @@ class WPTest extends \MailPoetTest {
$userId = wp_insert_user($args);
$this->assertIsNumeric($userId);
$subscriberRepository = $this->diContainer->get(SubscribersRepository::class);
$subscriber = $subscriberRepository->findOneBy(['email' => 'user-sync-test-html-entities-display-name@example.com']);
$subscriber = $this->subscribersRepository->findOneBy(['email' => 'user-sync-test-html-entities-display-name@example.com']);
/**
* @var SubscriberEntity $subscriber
*/
@@ -522,14 +551,13 @@ class WPTest extends \MailPoetTest {
$this->disableWpSegment();
$randomNumber = rand();
$id = $this->insertUser($randomNumber);
$subscriber = Subscriber::createOrUpdate([
'email' => 'user-sync-test' . $randomNumber . '@example.com',
'status' => Subscriber::STATUS_SUBSCRIBED,
'wp_user_id' => null,
]);
$subscriber = $this->subscriberFactory
->withEmail('user-sync-test' . $randomNumber . '@example.com')
->withStatus(SubscriberEntity::STATUS_SUBSCRIBED)
->create();
$segment = Segment::createOrUpdate(['name' => 'Test Segment', 'description' => '']);
$subscriberSegment = SubscriberSegment::create();
$subscriberSegment->subscriberId = $subscriber->id;
$subscriberSegment->subscriberId = (int)$subscriber->getId();
$subscriberSegment->segmentId = $segment->id;
$subscriberSegment->save();
@@ -542,9 +570,10 @@ class WPTest extends \MailPoetTest {
);
$wpSegment = $this->getServiceWithOverrides(WP::class, ['wp' => $wp]);
$wpSegment->synchronizeUser($id);
$subscriber1 = Subscriber::where("wp_user_id", $id)->findOne();
verify($subscriber1->status)->equals(SubscriberEntity::STATUS_SUBSCRIBED);
verify($subscriber1->deletedAt)->null();
$subscriber1 = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber1);
verify($subscriber1->getStatus())->equals(SubscriberEntity::STATUS_SUBSCRIBED);
verify($subscriber1->getDeletedAt())->null();
}
public function testItDoesNotTrashNewUsersWhoIsWooCustomerToDisabledWPSegment(): void {
@@ -575,9 +604,10 @@ class WPTest extends \MailPoetTest {
'wooHelper' => $wooHelper,
]);
$wpSegment->synchronizeUser($id);
$subscriber1 = Subscriber::where("wp_user_id", $id)->findOne();
verify($subscriber1->status)->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($subscriber1->deletedAt)->null();
$subscriber1 = $this->subscribersRepository->findOneBy(['wpUserId' => $id]);
$this->assertInstanceOf(SubscriberEntity::class, $subscriber1);
verify($subscriber1->getStatus())->equals(SubscriberEntity::STATUS_UNCONFIRMED);
verify($subscriber1->getDeletedAt())->null();
remove_role('customer');
}
@@ -587,16 +617,11 @@ class WPTest extends \MailPoetTest {
}
private function cleanData(): void {
ORM::raw_execute('TRUNCATE ' . Segment::$_table);
ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
$this->truncateEntity(SegmentEntity::class);
$this->truncateEntity(SubscriberEntity::class);
$this->truncateEntity(SubscriberSegmentEntity::class);
global $wpdb;
$db = ORM::getDb();
$db->exec(sprintf('
DELETE FROM
%s
WHERE
subscriber_id IN (select id from %s WHERE email LIKE "user-sync-test%%")
', SubscriberSegment::$_table, Subscriber::$_table));
$db->exec(sprintf('
DELETE FROM
%s
@@ -610,16 +635,16 @@ class WPTest extends \MailPoetTest {
user_email LIKE "user-sync-test%%"
OR user_login LIKE "user-sync-test%%"
', $wpdb->users));
$db->exec(sprintf('
DELETE FROM
%s
WHERE
email LIKE "user-sync-test%%"
', Subscriber::$_table));
}
private function getSubscribersCount(): int {
return Subscriber::whereLike("email", "user-sync-test%")->count();
return count($this->entityManager
->getRepository(SubscriberEntity::class)
->createQueryBuilder('s')
->where('s.email LIKE :email')
->setParameter('email', 'user-sync-test%')
->getQuery()
->getResult());
}
/**
@@ -698,10 +723,10 @@ class WPTest extends \MailPoetTest {
', $wpdb->users, $id));
}
private function clearEmail(Subscriber $subscriber): void {
ORM::raw_execute('
UPDATE ' . MP_SUBSCRIBERS_TABLE . '
SET `email` = "" WHERE `id` = ' . $subscriber->id
private function clearEmail(SubscriberEntity $subscriber): void {
$this->connection->executeStatement(
'UPDATE ' . MP_SUBSCRIBERS_TABLE . '
SET `email` = "" WHERE `id` = ' . $subscriber->getId()
);
}