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