Refactor creating/deleting WordPress users in integration tests

[MAILPOET-3077]
This commit is contained in:
Rostislav Wolny
2020-09-28 16:09:15 +02:00
committed by Pavel Dohnal
parent 51e1ce9b7c
commit 95af49e43f
9 changed files with 50 additions and 155 deletions

View File

@ -1,5 +1,6 @@
<?php
require_once(ABSPATH . 'wp-admin/includes/user.php');
/**
* Inherited Methods
@ -20,6 +21,27 @@
class IntegrationTester extends \Codeception\Actor {
use _generated\IntegrationTesterActions;
public function createWordPressUser(string $email, string $role) {
wp_insert_user([
'user_login' => explode('@', $email)[0],
'user_email' => $email,
'role' => $role,
'user_pass' => '12123154',
]);
}
public function deleteWordPressUser(string $email) {
$user = get_user_by('email', $email);
if (!$user) {
return;
}
if (is_multisite()) {
wpmu_delete_user($user->ID);
} else {
wp_delete_user($user->ID);
}
}
// generate random users
public function generateSubscribers($count, $data = []) {
for ($i = 0; $i < $count; $i++) {

View File

@ -47,8 +47,6 @@ use MailPoet\WP\Functions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Idiorm\ORM;
require_once(ABSPATH . 'wp-admin/includes/user.php');
class SubscribersTest extends \MailPoetTest {
/** @var FormEntity */
@ -326,22 +324,14 @@ class SubscribersTest extends \MailPoetTest {
->create();
$dynamicSegment->save();
$wpUserEmail = 'wpuserEditor@example.com';
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => $wpUserEmail,
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->createWordPressUser($wpUserEmail, 'editor');
$response = $this->endpoint->listing([
'filter' => [
'segment' => $dynamicSegment->id,
],
]);
expect($response->meta['filters']['segment'])->contains(['value' => $dynamicSegment->id, 'label' => 'Dynamic (1)']);
$user = get_user_by('email', $wpUserEmail);
if ($user) {
wp_delete_user($user->ID);
}
$this->tester->deleteWordPressUser($wpUserEmail);
}
public function testItCanSearchListing() {

View File

@ -7,24 +7,9 @@ use MailPoet\Models\Subscriber;
class UserRoleTest extends \MailPoetTest {
public function _before() {
$this->cleanData();
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => 'user-role-test1@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test2',
'user_email' => 'user-role-test2@example.com',
'role' => 'administrator',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test3',
'user_email' => 'user-role-test3@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->createWordPressUser('user-role-test1@example.com', 'editor');
$this->tester->createWordPressUser('user-role-test2@example.com', 'administrator');
$this->tester->createWordPressUser('user-role-test3@example.com', 'editor');
}
public function testItConstructsQuery() {
@ -46,10 +31,7 @@ class UserRoleTest extends \MailPoetTest {
private function cleanData() {
$emails = ['user-role-test1@example.com', 'user-role-test2@example.com', 'user-role-test3@example.com'];
foreach ($emails as $email) {
$user = get_user_by('email', $email);
if ($user) {
wp_delete_user($user->ID);
}
$this->tester->deleteWordPressUser($email);
}
}
}

View File

@ -2,8 +2,6 @@
namespace MailPoet\DynamicSegments\Persistence\Loading;
require_once(ABSPATH . 'wp-admin/includes/user.php');
use MailPoet\DynamicSegments\Filters\UserRole;
use MailPoet\DynamicSegments\RequirementsChecker;
use MailPoet\Models\DynamicSegment;
@ -17,24 +15,9 @@ class SubscribersCountTest extends \MailPoetTest {
public function _before() {
$this->cleanData();
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => 'user-role-test1@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test2',
'user_email' => 'user-role-test2@example.com',
'role' => 'administrator',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test3',
'user_email' => 'user-role-test3@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->createWordPressUser('user-role-test1@example.com', 'editor');
$this->tester->createWordPressUser('user-role-test2@example.com', 'administrator');
$this->tester->createWordPressUser('user-role-test3@example.com', 'editor');
$this->requirementChecker = $this
->getMockBuilder(RequirementsChecker::class)
->setMethods(['shouldSkipSegment'])
@ -82,16 +65,7 @@ class SubscribersCountTest extends \MailPoetTest {
private function cleanData() {
$emails = ['user-role-test1@example.com', 'user-role-test2@example.com', 'user-role-test3@example.com'];
foreach ($emails as $email) {
$user = get_user_by('email', $email);
if (!$user) {
continue;
}
if (is_multisite()) {
wpmu_delete_user($user->ID);
} else {
wp_delete_user($user->ID);
}
$this->tester->deleteWordPressUser($email);
}
}
}

View File

@ -2,8 +2,6 @@
namespace MailPoet\Models;
require_once(ABSPATH . 'wp-admin/includes/user.php');
use MailPoet\DynamicSegments\Filters\UserRole;
use MailPoetVendor\Idiorm\ORM;
@ -21,24 +19,9 @@ class SubscribersInDynamicSegmentTest extends \MailPoetTest {
$dataFilter->segmentId = $this->dynamicSegment->id;
$dataFilter->filterData = $filter->toArray();
$dataFilter->save();
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => 'user-role-test1@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test2',
'user_email' => 'user-role-test2@example.com',
'role' => 'administrator',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test3',
'user_email' => 'user-role-test3@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->createWordPressUser('user-role-test1@example.com', 'editor');
$this->tester->createWordPressUser('user-role-test2@example.com', 'administrator');
$this->tester->createWordPressUser('user-role-test3@example.com', 'editor');
}
public function testListingQuery() {
@ -75,16 +58,7 @@ class SubscribersInDynamicSegmentTest extends \MailPoetTest {
ORM::raw_execute('TRUNCATE ' . DynamicSegmentFilter::$_table);
$emails = ['user-role-test1@example.com', 'user-role-test2@example.com', 'user-role-test3@example.com'];
foreach ($emails as $email) {
$user = get_user_by('email', $email);
if (!$user) {
continue;
}
if (is_multisite()) {
wpmu_delete_user($user->ID);
} else {
wp_delete_user($user->ID);
}
$this->tester->deleteWordPressUser($email);
}
}
}

View File

@ -6,8 +6,6 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
require_once(ABSPATH . 'wp-admin/includes/user.php');
class UserRoleTest extends \MailPoetTest {
private $userRole;
@ -16,24 +14,9 @@ class UserRoleTest extends \MailPoetTest {
$this->userRole = $this->diContainer->get(UserRole::class);
$this->cleanWpUsers();
// Insert WP users and subscribers are created automatically
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => 'user-role-test1@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test2',
'user_email' => 'user-role-test2@example.com',
'role' => 'administrator',
'user_pass' => '12123154',
]);
wp_insert_user([
'user_login' => 'user-role-test3',
'user_email' => 'user-role-test3@example.com',
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->createWordPressUser('user-role-test1@example.com', 'editor');
$this->tester->createWordPressUser('user-role-test2@example.com', 'administrator');
$this->tester->createWordPressUser('user-role-test3@example.com', 'editor');
}
public function testItAppliesFilter() {
@ -83,10 +66,7 @@ class UserRoleTest extends \MailPoetTest {
private function cleanWpUsers() {
$emails = ['user-role-test1@example.com', 'user-role-test2@example.com', 'user-role-test3@example.com'];
foreach ($emails as $email) {
$user = get_user_by('email', $email);
if ($user) {
wp_delete_user($user->ID);
}
$this->tester->deleteWordPressUser($email);
}
}
}

View File

@ -8,8 +8,6 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Subscribers\Source;
require_once(ABSPATH . 'wp-admin/includes/user.php');
class SegmentSubscribersRepositoryTest extends \MailPoetTest {
/** @var SegmentSubscribersRepository */
@ -61,13 +59,8 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
$segment = $this->createDynamicSegmentEntity();
$wpUserEmail = 'user-role-test1@example.com';
$this->cleanupWpUser($wpUserEmail);
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => $wpUserEmail,
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->deleteWordPressUser($wpUserEmail);
$this->tester->createWordPressUser($wpUserEmail, 'editor');
$wpUserSubscriber = $this->entityManager
->getRepository(SubscriberEntity::class)
->findOneBy(['email' => $wpUserEmail]);
@ -90,7 +83,7 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
$filteredIds = $this->repository->findSubscribersIdsInSegment((int)$segment->getId(), [$subscriberNoList->getId()]);
expect($filteredIds)->equals([]);
$this->cleanupWpUser($wpUserEmail);
$this->tester->deleteWordPressUser($wpUserEmail);
}
public function _after() {
@ -134,13 +127,6 @@ class SegmentSubscribersRepositoryTest extends \MailPoetTest {
return $segment;
}
private function cleanupWpUser(string $email) {
$user = get_user_by('email', $email);
if ($user) {
wp_delete_user($user->ID);
}
}
private function cleanup() {
$this->truncateEntity(SegmentEntity::class);
$this->truncateEntity(SubscriberEntity::class);

View File

@ -10,8 +10,6 @@ use MailPoet\Listing\ListingDefinition;
use MailPoet\Segments\DynamicSegments\FilterHandler;
use MailPoet\Segments\SegmentSubscribersRepository;
require_once(ABSPATH . 'wp-admin/includes/user.php');
class SubscriberListingRepositoryTest extends \MailPoetTest {
/** @var SubscriberListingRepository */
@ -178,14 +176,8 @@ class SubscriberListingRepositoryTest extends \MailPoetTest {
public function testLoadSubscribersInDynamicSegment() {
$wpUserEmail = 'user-role-test1@example.com';
$this->cleanupWpUser($wpUserEmail);
wp_insert_user([
'user_login' => 'user-role-test1',
'user_email' => $wpUserEmail,
'role' => 'editor',
'user_pass' => '12123154',
]);
$this->tester->deleteWordPressUser($wpUserEmail);
$this->tester->createWordPressUser($wpUserEmail, 'editor');
$list = $this->createDynamicSegmentEntity();
$this->createSubscriberEntity(); // subscriber without a list
@ -195,7 +187,7 @@ class SubscriberListingRepositoryTest extends \MailPoetTest {
$data = $this->repository->getData($this->getListingDefinition());
expect(count($data))->equals(1);
expect($data[0]->getEmail())->equals($wpUserEmail);
$this->cleanupWpUser($wpUserEmail);
$this->tester->deleteWordPressUser($wpUserEmail);
}
private function createSubscriberEntity(): SubscriberEntity {
@ -234,13 +226,6 @@ class SubscriberListingRepositoryTest extends \MailPoetTest {
return $subscriberSegment;
}
private function cleanupWpUser(string $email) {
$user = get_user_by('email', $email);
if ($user) {
wp_delete_user($user->ID);
}
}
private function cleanup() {
$this->truncateEntity(SegmentEntity::class);
$this->truncateEntity(SubscriberEntity::class);

View File

@ -104,8 +104,10 @@ if (isset($GLOBALS['GLOBALS']['_wp_registered_theme_features']['post-formats']['
unset($GLOBALS['GLOBALS']['_wp_registered_theme_features']['post-formats']['show_in_rest']);
}
// phpcs:ignore PSR1.Classes.ClassDeclaration, Squiz.Classes.ClassFileName
abstract class MailPoetTest extends \Codeception\TestCase\Test {
/**
* @property IntegrationTester $tester
*/
abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
protected $backupGlobals = true;
protected $backupGlobalsBlacklist = [
'app',