Refactor WP Users segment controller to injectable service

[MAILPOET-3141]
This commit is contained in:
Rostislav Wolny
2020-10-29 13:50:49 +01:00
committed by Veljko V
parent 75e7012fb6
commit 645f888186
13 changed files with 131 additions and 139 deletions

View File

@@ -34,18 +34,23 @@ class Segments extends APIEndpoint {
/** @var WooCommerce */ /** @var WooCommerce */
private $wooCommerceSync; private $wooCommerceSync;
/** @var WP */
private $wpSegment;
public function __construct( public function __construct(
Listing\BulkActionController $bulkAction, Listing\BulkActionController $bulkAction,
Listing\Handler $listingHandler, Listing\Handler $listingHandler,
SegmentsRepository $segmentsRepository, SegmentsRepository $segmentsRepository,
SegmentsResponseBuilder $segmentsResponseBuilder, SegmentsResponseBuilder $segmentsResponseBuilder,
WooCommerce $wooCommerce WooCommerce $wooCommerce,
WP $wpSegment
) { ) {
$this->bulkAction = $bulkAction; $this->bulkAction = $bulkAction;
$this->listingHandler = $listingHandler; $this->listingHandler = $listingHandler;
$this->wooCommerceSync = $wooCommerce; $this->wooCommerceSync = $wooCommerce;
$this->segmentsRepository = $segmentsRepository; $this->segmentsRepository = $segmentsRepository;
$this->segmentsResponseBuilder = $segmentsResponseBuilder; $this->segmentsResponseBuilder = $segmentsResponseBuilder;
$this->wpSegment = $wpSegment;
} }
public function get($data = []) { public function get($data = []) {
@@ -179,7 +184,7 @@ class Segments extends APIEndpoint {
if ($data['type'] === Segment::TYPE_WC_USERS) { if ($data['type'] === Segment::TYPE_WC_USERS) {
$this->wooCommerceSync->synchronizeCustomers(); $this->wooCommerceSync->synchronizeCustomers();
} else { } else {
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
} }
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->errorResponse([ return $this->errorResponse([

View File

@@ -6,6 +6,7 @@ use MailPoet\Form\DisplayFormInWPContent;
use MailPoet\Mailer\WordPress\WordpressMailerReplacer; use MailPoet\Mailer\WordPress\WordpressMailerReplacer;
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler; use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
use MailPoet\Segments\WooCommerce as WooCommerceSegment; use MailPoet\Segments\WooCommerce as WooCommerceSegment;
use MailPoet\Segments\WP;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Statistics\Track\WooCommercePurchases; use MailPoet\Statistics\Track\WooCommercePurchases;
use MailPoet\Subscription\Comment; use MailPoet\Subscription\Comment;
@@ -57,6 +58,9 @@ class Hooks {
/** @var DisplayFormInWPContent */ /** @var DisplayFormInWPContent */
private $displayFormInWPContent; private $displayFormInWPContent;
/** @var WP */
private $wpSegment;
public function __construct( public function __construct(
Form $subscriptionForm, Form $subscriptionForm,
Comment $subscriptionComment, Comment $subscriptionComment,
@@ -70,7 +74,8 @@ class Hooks {
WooCommercePurchases $woocommercePurchases, WooCommercePurchases $woocommercePurchases,
PostNotificationScheduler $postNotificationScheduler, PostNotificationScheduler $postNotificationScheduler,
WordpressMailerReplacer $wordpressMailerReplacer, WordpressMailerReplacer $wordpressMailerReplacer,
DisplayFormInWPContent $displayFormInWPContent DisplayFormInWPContent $displayFormInWPContent,
WP $wpSegment
) { ) {
$this->subscriptionForm = $subscriptionForm; $this->subscriptionForm = $subscriptionForm;
$this->subscriptionComment = $subscriptionComment; $this->subscriptionComment = $subscriptionComment;
@@ -85,6 +90,7 @@ class Hooks {
$this->postNotificationScheduler = $postNotificationScheduler; $this->postNotificationScheduler = $postNotificationScheduler;
$this->wordpressMailerReplacer = $wordpressMailerReplacer; $this->wordpressMailerReplacer = $wordpressMailerReplacer;
$this->displayFormInWPContent = $displayFormInWPContent; $this->displayFormInWPContent = $displayFormInWPContent;
$this->wpSegment = $wpSegment;
} }
public function init() { public function init() {
@@ -237,33 +243,33 @@ class Hooks {
// WP Users synchronization // WP Users synchronization
$this->wp->addAction( $this->wp->addAction(
'user_register', 'user_register',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
6 6
); );
$this->wp->addAction( $this->wp->addAction(
'added_existing_user', 'added_existing_user',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
6 6
); );
$this->wp->addAction( $this->wp->addAction(
'profile_update', 'profile_update',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
6, 2 6, 2
); );
$this->wp->addAction( $this->wp->addAction(
'delete_user', 'delete_user',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
1 1
); );
// multisite // multisite
$this->wp->addAction( $this->wp->addAction(
'deleted_user', 'deleted_user',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
1 1
); );
$this->wp->addAction( $this->wp->addAction(
'remove_user_from_blog', 'remove_user_from_blog',
'\MailPoet\Segments\WP::synchronizeUser', [$this->wpSegment, 'synchronizeUser'],
1 1
); );
} }

View File

@@ -49,17 +49,21 @@ class Populator {
const TEMPLATES_NAMESPACE = '\MailPoet\Config\PopulatorData\Templates\\'; const TEMPLATES_NAMESPACE = '\MailPoet\Config\PopulatorData\Templates\\';
/** @var FormsRepository */ /** @var FormsRepository */
private $formsRepository; private $formsRepository;
/** @var WP */
private $wpSegment;
public function __construct( public function __construct(
SettingsController $settings, SettingsController $settings,
WPFunctions $wp, WPFunctions $wp,
Captcha $captcha, Captcha $captcha,
ReferralDetector $referralDetector, ReferralDetector $referralDetector,
FormsRepository $formsRepository FormsRepository $formsRepository,
WP $wpSegment
) { ) {
$this->settings = $settings; $this->settings = $settings;
$this->wp = $wp; $this->wp = $wp;
$this->captcha = $captcha; $this->captcha = $captcha;
$this->wpSegment = $wpSegment;
$this->referralDetector = $referralDetector; $this->referralDetector = $referralDetector;
$this->prefix = Env::$dbPrefix; $this->prefix = Env::$dbPrefix;
$this->models = [ $this->models = [
@@ -337,7 +341,7 @@ class Populator {
Segment::getWooCommerceSegment(); Segment::getWooCommerceSegment();
// Synchronize WP Users // Synchronize WP Users
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
// Default segment // Default segment
$defaultSegment = Segment::where('type', 'default')->orderByAsc('id')->limit(1)->findOne(); $defaultSegment = Segment::where('type', 'default')->orderByAsc('id')->limit(1)->findOne();

View File

@@ -90,7 +90,7 @@ class ContainerConfigurator implements IContainerConfigurator {
// Config // Config
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true); $container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Activator::class)->setPublic(true); $container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Populator::class); $container->autowire(\MailPoet\Config\Populator::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Changelog::class)->setPublic(true); $container->autowire(\MailPoet\Config\Changelog::class)->setPublic(true);
$container->autowire(\MailPoet\Config\DatabaseInitializer::class); $container->autowire(\MailPoet\Config\DatabaseInitializer::class);
$container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true); $container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
@@ -249,6 +249,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Subscribers\Statistics\SubscriberStatisticsRepository::class); $container->autowire(\MailPoet\Subscribers\Statistics\SubscriberStatisticsRepository::class);
// Segments // Segments
$container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true); $container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true);
$container->autowire(\MailPoet\Segments\WP::class)->setPublic(true);
$container->autowire(\MailPoet\Segments\SubscribersFinder::class)->setPublic(true); $container->autowire(\MailPoet\Segments\SubscribersFinder::class)->setPublic(true);
$container->autowire(\MailPoet\Segments\SegmentsRepository::class)->setPublic(true); $container->autowire(\MailPoet\Segments\SegmentsRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Segments\SegmentSubscribersRepository::class)->setPublic(true); $container->autowire(\MailPoet\Segments\SegmentSubscribersRepository::class)->setPublic(true);

View File

@@ -16,7 +16,7 @@ use MailPoet\Subscribers\Source;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
class WP { class WP {
public static function synchronizeUser($wpUserId, $oldWpUserData = false) { public function synchronizeUser($wpUserId, $oldWpUserData = false) {
$wpUser = \get_userdata($wpUserId); $wpUser = \get_userdata($wpUserId);
if ($wpUser === false) return; if ($wpUser === false) return;
@@ -25,13 +25,13 @@ class WP {
$currentFilter = current_filter(); $currentFilter = current_filter();
if (in_array($currentFilter, ['delete_user', 'deleted_user', 'remove_user_from_blog'])) { if (in_array($currentFilter, ['delete_user', 'deleted_user', 'remove_user_from_blog'])) {
self::deleteSubscriber($subscriber); $this->deleteSubscriber($subscriber);
} else { } else {
self::updateSubscriber($currentFilter, $wpUser, $subscriber, $oldWpUserData); $this->updateSubscriber($currentFilter, $wpUser, $subscriber, $oldWpUserData);
} }
} }
private static function deleteSubscriber($subscriber) { private function deleteSubscriber($subscriber) {
if ($subscriber !== false) { if ($subscriber !== false) {
// unlink subscriber from wp user and delete // unlink subscriber from wp user and delete
$subscriber->set('wp_user_id', null); $subscriber->set('wp_user_id', null);
@@ -39,7 +39,7 @@ class WP {
} }
} }
private static function updateSubscriber($currentFilter, $wpUser, $subscriber = false, $oldWpUserData = false) { private function updateSubscriber($currentFilter, $wpUser, $subscriber = false, $oldWpUserData = false) {
$wpSegment = Segment::getWPSegment(); $wpSegment = Segment::getWPSegment();
if (!$wpSegment) return; if (!$wpSegment) return;
@@ -60,13 +60,14 @@ class WP {
$firstName = $wpUser->display_name; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps $firstName = $wpUser->display_name; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
} }
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled'); $signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
$status = $signupConfirmationEnabled ? Subscriber::STATUS_UNCONFIRMED : Subscriber::STATUS_SUBSCRIBED;
// subscriber data // subscriber data
$data = [ $data = [
'wp_user_id' => $wpUser->ID, 'wp_user_id' => $wpUser->ID,
'email' => $wpUser->user_email, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps 'email' => $wpUser->user_email, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
'first_name' => $firstName, 'first_name' => $firstName,
'last_name' => $lastName, 'last_name' => $lastName,
'status' => $signupConfirmationEnabled ? Subscriber::STATUS_UNCONFIRMED : Subscriber::STATUS_SUBSCRIBED, 'status' => $status,
'source' => Source::WORDPRESS_USER, 'source' => Source::WORDPRESS_USER,
]; ];
@@ -104,22 +105,21 @@ class WP {
} }
} }
public static function synchronizeUsers() { public function synchronizeUsers() {
$updatedUsersEmails = $this->updateSubscribersEmails();
$updatedUsersEmails = self::updateSubscribersEmails(); $insertedUsersEmails = $this->insertSubscribers();
$insertedUsersEmails = self::insertSubscribers(); $this->removeUpdatedSubscribersWithInvalidEmail(array_merge($updatedUsersEmails, $insertedUsersEmails));
self::removeUpdatedSubscribersWithInvalidEmail(array_merge($updatedUsersEmails, $insertedUsersEmails)); $this->updateFirstNames();
self::updateFirstNames(); $this->updateLastNames();
self::updateLastNames(); $this->updateFirstNameIfMissing();
self::updateFirstNameIfMissing(); $this->insertUsersToSegment();
self::insertUsersToSegment(); $this->removeOrphanedSubscribers();
self::removeOrphanedSubscribers(); $this->markSpammyWordpressUsersAsUnconfirmed();
self::markSpammyWordpressUsersAsUnconfirmed();
return true; return true;
} }
private static function removeUpdatedSubscribersWithInvalidEmail($updatedEmails) { private function removeUpdatedSubscribersWithInvalidEmail($updatedEmails) {
$validator = new ModelValidator(); $validator = new ModelValidator();
$invalidWpUserIds = array_map(function($item) { $invalidWpUserIds = array_map(function($item) {
return $item['id']; return $item['id'];
@@ -133,7 +133,7 @@ class WP {
ORM::for_table(Subscriber::$_table)->whereIn('wp_user_id', $invalidWpUserIds)->delete_many(); ORM::for_table(Subscriber::$_table)->whereIn('wp_user_id', $invalidWpUserIds)->delete_many();
} }
private static function updateSubscribersEmails() { private function updateSubscribersEmails() {
global $wpdb; global $wpdb;
Subscriber::rawExecute('SELECT NOW();'); Subscriber::rawExecute('SELECT NOW();');
$startTime = Subscriber::getLastStatement()->fetch(\PDO::FETCH_COLUMN); $startTime = Subscriber::getLastStatement()->fetch(\PDO::FETCH_COLUMN);
@@ -151,7 +151,7 @@ class WP {
', $subscribersTable, $startTime))->findArray(); ', $subscribersTable, $startTime))->findArray();
} }
private static function insertSubscribers() { private function insertSubscribers() {
global $wpdb; global $wpdb;
$subscribersTable = Subscriber::$_table; $subscribersTable = Subscriber::$_table;
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled'); $signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
@@ -179,7 +179,7 @@ class WP {
return $inserterdUserIds; return $inserterdUserIds;
} }
private static function updateFirstNames() { private function updateFirstNames() {
global $wpdb; global $wpdb;
$subscribersTable = Subscriber::$_table; $subscribersTable = Subscriber::$_table;
Subscriber::rawExecute(sprintf(' Subscriber::rawExecute(sprintf('
@@ -192,7 +192,7 @@ class WP {
', $subscribersTable, $wpdb->usermeta)); ', $subscribersTable, $wpdb->usermeta));
} }
private static function updateLastNames() { private function updateLastNames() {
global $wpdb; global $wpdb;
$subscribersTable = Subscriber::$_table; $subscribersTable = Subscriber::$_table;
Subscriber::rawExecute(sprintf(' Subscriber::rawExecute(sprintf('
@@ -205,7 +205,7 @@ class WP {
', $subscribersTable, $wpdb->usermeta)); ', $subscribersTable, $wpdb->usermeta));
} }
private static function updateFirstNameIfMissing() { private function updateFirstNameIfMissing() {
global $wpdb; global $wpdb;
$subscribersTable = Subscriber::$_table; $subscribersTable = Subscriber::$_table;
Subscriber::rawExecute(sprintf(' Subscriber::rawExecute(sprintf('
@@ -217,7 +217,7 @@ class WP {
', $subscribersTable, $wpdb->users)); ', $subscribersTable, $wpdb->users));
} }
private static function insertUsersToSegment() { private function insertUsersToSegment() {
$wpSegment = Segment::getWPSegment(); $wpSegment = Segment::getWPSegment();
$subscribersTable = Subscriber::$_table; $subscribersTable = Subscriber::$_table;
$wpMailpoetSubscriberSegmentTable = SubscriberSegment::$_table; $wpMailpoetSubscriberSegmentTable = SubscriberSegment::$_table;
@@ -228,7 +228,7 @@ class WP {
', $wpMailpoetSubscriberSegmentTable, $wpSegment->id, $subscribersTable)); ', $wpMailpoetSubscriberSegmentTable, $wpSegment->id, $subscribersTable));
} }
private static function removeOrphanedSubscribers() { private function removeOrphanedSubscribers() {
// remove orphaned wp segment subscribers (not having a matching wp user id), // remove orphaned wp segment subscribers (not having a matching wp user id),
// e.g. if wp users were deleted directly from the database // e.g. if wp users were deleted directly from the database
global $wpdb; global $wpdb;
@@ -243,7 +243,7 @@ class WP {
->delete(); ->delete();
} }
private static function markSpammyWordpressUsersAsUnconfirmed() { private function markSpammyWordpressUsersAsUnconfirmed() {
global $wpdb; global $wpdb;
$query = ' $query = '
UPDATE %s as subscribers UPDATE %s as subscribers

View File

@@ -19,12 +19,20 @@ class WooCommerce {
/** @var WPFunctions */ /** @var WPFunctions */
private $wp; private $wp;
/** @var WP */
private $wpSegment;
private $mailpoetEmailCollation; private $mailpoetEmailCollation;
private $wpPostmetaValueCollation; private $wpPostmetaValueCollation;
public function __construct(SettingsController $settings, WPFunctions $wp) { public function __construct(
SettingsController $settings,
WPFunctions $wp,
WP $wpSegment
) {
$this->settings = $settings; $this->settings = $settings;
$this->wp = $wp; $this->wp = $wp;
$this->wpSegment = $wpSegment;
} }
public function synchronizeRegisteredCustomer($wpUserId, $currentFilter = null) { public function synchronizeRegisteredCustomer($wpUserId, $currentFilter = null) {
@@ -105,7 +113,7 @@ class WooCommerce {
public function synchronizeCustomers() { public function synchronizeCustomers() {
$this->getColumnCollation(); $this->getColumnCollation();
WP::synchronizeUsers(); // synchronize registered users $this->wpSegment->synchronizeUsers(); // synchronize registered users
$this->markRegisteredCustomers(); $this->markRegisteredCustomers();
$insertedUsersEmails = $this->insertSubscribersFromOrders(); $insertedUsersEmails = $this->insertSubscribersFromOrders();

View File

@@ -10,6 +10,7 @@ use MailPoet\Config\Activator;
use MailPoet\Config\Populator; use MailPoet\Config\Populator;
use MailPoet\Form\FormsRepository; use MailPoet\Form\FormsRepository;
use MailPoet\Referrals\ReferralDetector; use MailPoet\Referrals\ReferralDetector;
use MailPoet\Segments\WP;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository; use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscription\Captcha; use MailPoet\Subscription\Captcha;
@@ -23,20 +24,21 @@ class SetupTest extends \MailPoetTest {
} }
public function testItCanReinstall() { public function testItCanReinstall() {
$wp = Stub::make(new WPFunctions, [ $wpStub = Stub::make(new WPFunctions, [
'doAction' => asCallable([WPHooksHelper::class, 'doAction']), 'doAction' => asCallable([WPHooksHelper::class, 'doAction']),
]); ]);
$settings = SettingsController::getInstance(); $settings = SettingsController::getInstance();
$referralDetector = new ReferralDetector($wp, $settings); $referralDetector = new ReferralDetector($wpStub, $settings);
$populator = new Populator( $populator = new Populator(
$settings, $settings,
$wp, $wpStub,
new Captcha(), new Captcha(),
$referralDetector, $referralDetector,
$this->diContainer->get(FormsRepository::class) $this->diContainer->get(FormsRepository::class),
$this->diContainer->get(WP::class)
); );
$router = new Setup($wp, new Activator($settings, $populator)); $router = new Setup($wpStub, new Activator($settings, $populator));
$response = $router->reset(); $response = $router->reset();
expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->status)->equals(APIResponse::STATUS_OK);

View File

@@ -14,7 +14,6 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler; use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Form\FormsRepository;
use MailPoet\Logging\LoggerFactory; use MailPoet\Logging\LoggerFactory;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
@@ -30,14 +29,12 @@ use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\Links\Links;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Router\Endpoints\Track; use MailPoet\Router\Endpoints\Track;
use MailPoet\Router\Router; use MailPoet\Router\Router;
use MailPoet\Segments\SubscribersFinder; use MailPoet\Segments\SubscribersFinder;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository; use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@@ -72,15 +69,8 @@ class SendingQueueTest extends \MailPoetTest {
parent::_before(); parent::_before();
$wpUsers = get_users(); $wpUsers = get_users();
wp_set_current_user($wpUsers[0]->ID); wp_set_current_user($wpUsers[0]->ID);
$this->settings = SettingsController::getInstance(); $this->settings = $this->diContainer->get(SettingsController::class);
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings); $populator = $this->diContainer->get(Populator::class);
$populator = new Populator(
$this->settings,
WPFunctions::get(),
new Captcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class)
);
$populator->up(); $populator->up();
$this->subscriber = Subscriber::create(); $this->subscriber = Subscriber::create();
$this->subscriber->email = 'john@doe.com'; $this->subscriber->email = 'john@doe.com';

View File

@@ -6,14 +6,10 @@ use Codeception\Stub;
use Codeception\Stub\Expected; use Codeception\Stub\Expected;
use MailPoet\Config\Populator; use MailPoet\Config\Populator;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask; use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
use MailPoet\Form\FormsRepository;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository; use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscription\Captcha;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
class MailerTest extends \MailPoetTest { class MailerTest extends \MailPoetTest {
@@ -27,15 +23,8 @@ class MailerTest extends \MailPoetTest {
parent::_before(); parent::_before();
$wpUsers = get_users(); $wpUsers = get_users();
wp_set_current_user($wpUsers[0]->ID); wp_set_current_user($wpUsers[0]->ID);
$this->settings = SettingsController::getInstance(); $this->settings = $this->diContainer->get(SettingsController::class);
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings); $populator = $this->diContainer->get(Populator::class);
$populator = new Populator(
$this->settings,
WPFunctions::get(),
new Captcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class)
);
$populator->up(); $populator->up();
$this->mailerTask = new MailerTask(); $this->mailerTask = new MailerTask();
$this->sender = $this->settings->get('sender'); $this->sender = $this->settings->get('sender');

View File

@@ -3,7 +3,6 @@
namespace MailPoet\Test\Newsletter; namespace MailPoet\Test\Newsletter;
use MailPoet\Config\Populator; use MailPoet\Config\Populator;
use MailPoet\Form\FormsRepository;
use MailPoet\Models\CustomField; use MailPoet\Models\CustomField;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
@@ -12,10 +11,8 @@ use MailPoet\Models\SubscriberCustomField;
use MailPoet\Newsletter\Shortcodes\Categories\Date; use MailPoet\Newsletter\Shortcodes\Categories\Date;
use MailPoet\Newsletter\Shortcodes\Shortcodes; use MailPoet\Newsletter\Shortcodes\Shortcodes;
use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
@@ -39,14 +36,7 @@ class ShortcodesTest extends \MailPoetTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->settings = SettingsController::getInstance(); $this->settings = SettingsController::getInstance();
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings); $populator = $this->diContainer->get(Populator::class);
$populator = new Populator(
$this->settings,
WPFunctions::get(),
new Captcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class)
);
$populator->up(); $populator->up();
$this->wPUser = $this->_createWPUser(); $this->wPUser = $this->_createWPUser();
$this->wPPost = $this->_createWPPost(); $this->wPPost = $this->_createWPPost();

View File

@@ -4,7 +4,6 @@ namespace MailPoet\Test\Segments;
require_once(ABSPATH . 'wp-admin/includes/user.php'); require_once(ABSPATH . 'wp-admin/includes/user.php');
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
@@ -19,6 +18,16 @@ class WPTest extends \MailPoetTest {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var WP */
private $wpSegment;
public function _before() {
parent::_before();
$this->settings = $this->diContainer->get(SettingsController::class);
$this->wpSegment = $this->diContainer->get(WP::class);
$this->cleanData();
}
public function testSynchronizeUserKeepsStatusOfOldUser() { public function testSynchronizeUserKeepsStatusOfOldUser() {
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
@@ -27,7 +36,7 @@ class WPTest extends \MailPoetTest {
'status' => Subscriber::STATUS_SUBSCRIBED, 'status' => Subscriber::STATUS_SUBSCRIBED,
'wp_user_id' => $id, 'wp_user_id' => $id,
]); ]);
WP::synchronizeUser($id); $this->wpSegment->synchronizeUser($id);
$dbSubscriber = Subscriber::findOne($subscriber->id); $dbSubscriber = Subscriber::findOne($subscriber->id);
expect($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED); expect($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
} }
@@ -40,7 +49,7 @@ class WPTest extends \MailPoetTest {
'wp_user_id' => null, 'wp_user_id' => null,
]); ]);
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::synchronizeUser($id); $this->wpSegment->synchronizeUser($id);
$dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne(); $dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($dbSubscriber->status)->equals($subscriber->status); expect($dbSubscriber->status)->equals($subscriber->status);
} }
@@ -49,7 +58,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('signup_confirmation', ['enabled' => '0']); $this->settings->set('signup_confirmation', ['enabled' => '0']);
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::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();
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED); expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
} }
@@ -58,7 +67,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('signup_confirmation', ['enabled' => '1']); $this->settings->set('signup_confirmation', ['enabled' => '1']);
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::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();
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
} }
@@ -67,7 +76,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('signup_confirmation', ['enabled' => '0']); $this->settings->set('signup_confirmation', ['enabled' => '0']);
$this->insertUser(); $this->insertUser();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany(); $subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
expect(count($subscribers))->equals(2); expect(count($subscribers))->equals(2);
expect($subscribers[0]->status)->equals(Subscriber::STATUS_SUBSCRIBED); expect($subscribers[0]->status)->equals(Subscriber::STATUS_SUBSCRIBED);
@@ -78,7 +87,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('signup_confirmation', ['enabled' => '1']); $this->settings->set('signup_confirmation', ['enabled' => '1']);
$this->insertUser(); $this->insertUser();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany(); $subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
expect(count($subscribers))->equals(2); expect(count($subscribers))->equals(2);
expect($subscribers[0]->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($subscribers[0]->status)->equals(Subscriber::STATUS_UNCONFIRMED);
@@ -96,7 +105,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('subscribe.on_register.enabled', '1'); $this->settings->set('subscribe.on_register.enabled', '1');
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::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();
expect($wpSubscriber->countConfirmations)->equals(1); expect($wpSubscriber->countConfirmations)->equals(1);
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
@@ -106,7 +115,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('subscribe.on_register.enabled', '1'); $this->settings->set('subscribe.on_register.enabled', '1');
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::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();
expect($wpSubscriber->countConfirmations)->equals(0); expect($wpSubscriber->countConfirmations)->equals(0);
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED); expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
@@ -116,7 +125,7 @@ class WPTest extends \MailPoetTest {
$this->settings->set('subscribe.on_register.enabled', '0'); $this->settings->set('subscribe.on_register.enabled', '0');
$randomNumber = rand(); $randomNumber = rand();
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::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();
expect($wpSubscriber->countConfirmations)->equals(0); expect($wpSubscriber->countConfirmations)->equals(0);
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
@@ -125,9 +134,9 @@ class WPTest extends \MailPoetTest {
public function testItSynchronizeNewUsers() { public function testItSynchronizeNewUsers() {
$this->insertUser(); $this->insertUser();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount(); $subscribersCount = $this->getSubscribersCount();
expect($subscribersCount)->equals(3); expect($subscribersCount)->equals(3);
} }
@@ -139,7 +148,7 @@ class WPTest extends \MailPoetTest {
'status' => Subscriber::STATUS_SUBSCRIBED, 'status' => Subscriber::STATUS_SUBSCRIBED,
]); ]);
$id = $this->insertUser($randomNumber); $id = $this->insertUser($randomNumber);
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne(); $wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
expect($wpSubscriber)->notEmpty(); expect($wpSubscriber)->notEmpty();
expect($wpSubscriber->id)->equals($subscriber->id); expect($wpSubscriber->id)->equals($subscriber->id);
@@ -148,27 +157,27 @@ class WPTest extends \MailPoetTest {
public function testItSynchronizeEmails() { public function testItSynchronizeEmails() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, 'user-sync-test-xx@email.com'); $this->updateWPUserEmail($id, 'user-sync-test-xx@email.com');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber->email)->equals('user-sync-test-xx@email.com'); expect($subscriber->email)->equals('user-sync-test-xx@email.com');
} }
public function testRemovesUsersWithEmptyEmailsFromSunscribersDuringSynchronization() { public function testRemovesUsersWithEmptyEmailsFromSunscribersDuringSynchronization() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, ''); $this->updateWPUserEmail($id, '');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0); expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
$this->deleteWPUser($id); $this->deleteWPUser($id);
} }
public function testRemovesUsersWithInvalidEmailsFromSunscribersDuringSynchronization() { public function testRemovesUsersWithInvalidEmailsFromSunscribersDuringSynchronization() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->updateWPUserEmail($id, 'ivalid.@email.com'); $this->updateWPUserEmail($id, 'ivalid.@email.com');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0); expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
$this->deleteWPUser($id); $this->deleteWPUser($id);
} }
@@ -176,7 +185,7 @@ class WPTest extends \MailPoetTest {
public function testItDoesNotSynchronizeEmptyEmailsForNewUsers() { public function testItDoesNotSynchronizeEmptyEmailsForNewUsers() {
$id = $this->insertUser(); $id = $this->insertUser();
$this->updateWPUserEmail($id, ''); $this->updateWPUserEmail($id, '');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber)->isEmpty(); expect($subscriber)->isEmpty();
$this->deleteWPUser($id); $this->deleteWPUser($id);
@@ -184,27 +193,27 @@ class WPTest extends \MailPoetTest {
public function testItSynchronizeFirstNames() { public function testItSynchronizeFirstNames() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
update_user_meta((int)$id, 'first_name', 'First name'); update_user_meta((int)$id, 'first_name', 'First name');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber->firstName)->equals('First name'); expect($subscriber->firstName)->equals('First name');
} }
public function testItSynchronizeLastNames() { public function testItSynchronizeLastNames() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
update_user_meta((int)$id, 'last_name', 'Last name'); update_user_meta((int)$id, 'last_name', 'Last name');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber->lastName)->equals('Last name'); expect($subscriber->lastName)->equals('Last name');
} }
public function testItSynchronizeFirstNamesUsingDisplayName() { public function testItSynchronizeFirstNamesUsingDisplayName() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->updateWPUserDisplayName($id, 'First name'); $this->updateWPUserDisplayName($id, 'First name');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber->firstName)->equals('First name'); expect($subscriber->firstName)->equals('First name');
} }
@@ -213,7 +222,7 @@ class WPTest extends \MailPoetTest {
$id = $this->insertUser(); $id = $this->insertUser();
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');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where('wp_user_id', $id)->findOne(); $subscriber = Subscriber::where('wp_user_id', $id)->findOne();
expect($subscriber->firstName)->equals('First name'); expect($subscriber->firstName)->equals('First name');
} }
@@ -222,18 +231,18 @@ class WPTest extends \MailPoetTest {
$this->insertUser(); $this->insertUser();
$this->insertUser(); $this->insertUser();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds); $subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
expect($subscribers->count())->equals(3); expect($subscribers->count())->equals(3);
} }
public function testItDoesntRemoveUsersFromTrash() { public function testItDoesntRemoveUsersFromTrash() {
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where("wp_user_id", $id)->findOne(); $subscriber = Subscriber::where("wp_user_id", $id)->findOne();
$subscriber->deletedAt = Carbon::now(); $subscriber->deletedAt = Carbon::now();
$subscriber->save(); $subscriber->save();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscriber = Subscriber::where("wp_user_id", $id)->findOne(); $subscriber = Subscriber::where("wp_user_id", $id)->findOne();
expect($subscriber->deletedAt)->notNull(); expect($subscriber->deletedAt)->notNull();
} }
@@ -241,7 +250,7 @@ class WPTest extends \MailPoetTest {
public function testItSynchronizesDeletedWPUsersUsingHooks() { public function testItSynchronizesDeletedWPUsersUsingHooks() {
$id = $this->insertUser(); $id = $this->insertUser();
$this->insertUser(); $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount(); $subscribersCount = $this->getSubscribersCount();
expect($subscribersCount)->equals(2); expect($subscribersCount)->equals(2);
wp_delete_user((int)$id); wp_delete_user((int)$id);
@@ -252,9 +261,9 @@ class WPTest extends \MailPoetTest {
public function testItRemovesOrphanedSubscribers() { public function testItRemovesOrphanedSubscribers() {
$this->insertUser(); $this->insertUser();
$id = $this->insertUser(); $id = $this->insertUser();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$this->deleteWPUser($id); $this->deleteWPUser($id);
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds); $subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
expect($subscribers->count())->equals(1); expect($subscribers->count())->equals(1);
} }
@@ -290,7 +299,7 @@ class WPTest extends \MailPoetTest {
$subscriber3->status = Subscriber::STATUS_SUBSCRIBED; $subscriber3->status = Subscriber::STATUS_SUBSCRIBED;
$subscriber3->save(); $subscriber3->save();
$this->clearEmail($subscriber3); $this->clearEmail($subscriber3);
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount(); $subscribersCount = $this->getSubscribersCount();
expect($subscribersCount)->equals(3); expect($subscribersCount)->equals(3);
$dbSubscriber = Subscriber::findOne($subscriber3->id); $dbSubscriber = Subscriber::findOne($subscriber3->id);
@@ -315,7 +324,7 @@ class WPTest extends \MailPoetTest {
$association->save(); $association->save();
$subscribersCount = $this->getSubscribersCount(); $subscribersCount = $this->getSubscribersCount();
expect($subscribersCount)->equals(1); expect($subscribersCount)->equals(1);
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$subscribersCount = $this->getSubscribersCount(0); $subscribersCount = $this->getSubscribersCount(0);
expect($subscribersCount)->equals(0); expect($subscribersCount)->equals(0);
} }
@@ -340,7 +349,7 @@ class WPTest extends \MailPoetTest {
$association->save(); $association->save();
$dbSubscriber = Subscriber::findOne($subscriber->id); $dbSubscriber = Subscriber::findOne($subscriber->id);
expect($dbSubscriber)->notEmpty(); expect($dbSubscriber)->notEmpty();
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$dbSubscriber = Subscriber::findOne($subscriber->id); $dbSubscriber = Subscriber::findOne($subscriber->id);
expect($dbSubscriber)->isEmpty(); expect($dbSubscriber)->isEmpty();
} }
@@ -354,7 +363,7 @@ class WPTest extends \MailPoetTest {
'wp_user_id' => $id, 'wp_user_id' => $id,
]); ]);
update_user_meta((int)$id, 'default_password_nag', '1'); update_user_meta((int)$id, 'default_password_nag', '1');
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$dbSubscriber = Subscriber::findOne($subscriber->id); $dbSubscriber = Subscriber::findOne($subscriber->id);
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
} }
@@ -377,17 +386,11 @@ class WPTest extends \MailPoetTest {
wp_update_user(['ID' => $id, 'user_status' => 2]); wp_update_user(['ID' => $id, 'user_status' => 2]);
$db = ORM::getDb(); $db = ORM::getDb();
$db->exec(sprintf('UPDATE %s SET `user_status` = 2 WHERE ID = %s', $wpdb->users, $id)); $db->exec(sprintf('UPDATE %s SET `user_status` = 2 WHERE ID = %s', $wpdb->users, $id));
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$dbSubscriber = Subscriber::findOne($subscriber->id); $dbSubscriber = Subscriber::findOne($subscriber->id);
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
} }
public function _before() {
parent::_before();
$this->settings = ContainerWrapper::getInstance()->get(SettingsController::class);
$this->cleanData();
}
public function _after() { public function _after() {
$this->cleanData(); $this->cleanData();
} }

View File

@@ -3,14 +3,11 @@
namespace MailPoet\Test\Subscription; namespace MailPoet\Test\Subscription;
use MailPoet\Config\Populator; use MailPoet\Config\Populator;
use MailPoet\Form\FormsRepository;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Router\Router; use MailPoet\Router\Router;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository; use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@@ -24,15 +21,8 @@ class UrlTest extends \MailPoetTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->settings = SettingsController::getInstance(); $this->settings = $this->diContainer->get(SettingsController::class);
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings); $populator = $this->diContainer->get(Populator::class);
$populator = new Populator(
$this->settings,
WPFunctions::get(),
new Captcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class)
);
$populator->up(); $populator->up();
$this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens); $this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens);
} }

View File

@@ -34,6 +34,9 @@ class SubscriptionTest extends \MailPoetTest {
/** @var ConfirmationEmailMailer & MockObject */ /** @var ConfirmationEmailMailer & MockObject */
private $confirmationEmailMailer; private $confirmationEmailMailer;
/** @var WP */
private $wpSegment;
public function _before() { public function _before() {
$this->orderId = 123; // dummy $this->orderId = 123; // dummy
$this->settings = SettingsController::getInstance(); $this->settings = SettingsController::getInstance();
@@ -41,6 +44,7 @@ class SubscriptionTest extends \MailPoetTest {
$this->confirmationEmailMailer = $this->createMock(ConfirmationEmailMailer::class); $this->confirmationEmailMailer = $this->createMock(ConfirmationEmailMailer::class);
$this->subscription = new Subscription($this->settings, $this->confirmationEmailMailer, $wp); $this->subscription = new Subscription($this->settings, $this->confirmationEmailMailer, $wp);
$this->wcSegment = Segment::getWooCommerceSegment(); $this->wcSegment = Segment::getWooCommerceSegment();
$this->wpSegment = $this->diContainer->get(WP::class);
$subscriber = Subscriber::create(); $subscriber = Subscriber::create();
$subscriber->hydrate(Fixtures::get('subscriber_template')); $subscriber->hydrate(Fixtures::get('subscriber_template'));
@@ -53,7 +57,7 @@ class SubscriptionTest extends \MailPoetTest {
} }
public function testItDisplaysACheckedCheckboxIfCurrentUserIsSubscribed() { public function testItDisplaysACheckedCheckboxIfCurrentUserIsSubscribed() {
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$wpUsers = get_users(); $wpUsers = get_users();
wp_set_current_user($wpUsers[0]->ID); wp_set_current_user($wpUsers[0]->ID);
$subscriber = Subscriber::getCurrentWPUser(); $subscriber = Subscriber::getCurrentWPUser();
@@ -65,7 +69,7 @@ class SubscriptionTest extends \MailPoetTest {
} }
public function testItDisplaysAnUncheckedCheckboxIfCurrentUserIsNotSubscribed() { public function testItDisplaysAnUncheckedCheckboxIfCurrentUserIsNotSubscribed() {
WP::synchronizeUsers(); $this->wpSegment->synchronizeUsers();
$wpUsers = get_users(); $wpUsers = get_users();
wp_set_current_user($wpUsers[0]->ID); wp_set_current_user($wpUsers[0]->ID);
$subscriber = Subscriber::getCurrentWPUser(); $subscriber = Subscriber::getCurrentWPUser();