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 <?php
require_once(ABSPATH . 'wp-admin/includes/user.php');
/** /**
* Inherited Methods * Inherited Methods
@ -20,6 +21,27 @@
class IntegrationTester extends \Codeception\Actor { class IntegrationTester extends \Codeception\Actor {
use _generated\IntegrationTesterActions; 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 // generate random users
public function generateSubscribers($count, $data = []) { public function generateSubscribers($count, $data = []) {
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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